{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}

-- CHANGE WITH CAUTION: This is a generated code file generated by https://github.com/Haskell-OpenAPI-Code-Generator/Haskell-OpenAPI-Client-Code-Generator.

-- | Contains all types with cyclic dependencies (between each other or to itself)
module StripeAPI.CyclicTypes where

import qualified Data.Aeson
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.ToJSON
import qualified Data.Aeson as Data.Aeson.Types.Internal
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.Generics
import qualified GHC.Int
import qualified GHC.Show
import qualified GHC.Types
import qualified StripeAPI.Common
import StripeAPI.Types.AccountCapabilities
import StripeAPI.Types.AccountCapabilityRequirements
import StripeAPI.Types.AccountCardPaymentsSettings
import StripeAPI.Types.AccountDashboardSettings
import StripeAPI.Types.AccountDeclineChargeOn
import StripeAPI.Types.AccountLink
import StripeAPI.Types.AccountPaymentsSettings
import StripeAPI.Types.AccountPayoutSettings
import StripeAPI.Types.AccountRequirements
import StripeAPI.Types.AccountRequirementsError
import StripeAPI.Types.AccountTosAcceptance
import StripeAPI.Types.Address
import StripeAPI.Types.ApplePayDomain
import StripeAPI.Types.Application
import StripeAPI.Types.Balance
import StripeAPI.Types.BalanceAmount
import StripeAPI.Types.BalanceAmountBySourceType
import StripeAPI.Types.BitcoinReceiver
import StripeAPI.Types.BitcoinTransaction
import StripeAPI.Types.CardMandatePaymentMethodDetails
import StripeAPI.Types.ChargeFraudDetails
import StripeAPI.Types.ChargeOutcome
import StripeAPI.Types.CheckoutSessionCustomDisplayItemDescription
import StripeAPI.Types.CountrySpec
import StripeAPI.Types.CountrySpecVerificationFieldDetails
import StripeAPI.Types.CountrySpecVerificationFields
import StripeAPI.Types.Coupon
import StripeAPI.Types.CreditNoteLineItem
import StripeAPI.Types.CreditNoteTaxAmount
import StripeAPI.Types.CustomerAcceptance
import StripeAPI.Types.DeletedAccount
import StripeAPI.Types.DeletedAlipayAccount
import StripeAPI.Types.DeletedApplePayDomain
import StripeAPI.Types.DeletedBankAccount
import StripeAPI.Types.DeletedBitcoinReceiver
import StripeAPI.Types.DeletedCard
import StripeAPI.Types.DeletedCoupon
import StripeAPI.Types.DeletedCustomer
import StripeAPI.Types.DeletedDiscount
import StripeAPI.Types.DeletedInvoice
import StripeAPI.Types.DeletedInvoiceitem
import StripeAPI.Types.DeletedPerson
import StripeAPI.Types.DeletedPlan
import StripeAPI.Types.DeletedProduct
import StripeAPI.Types.DeletedRadarValueList
import StripeAPI.Types.DeletedRadarValueListItem
import StripeAPI.Types.DeletedRecipient
import StripeAPI.Types.DeletedSku
import StripeAPI.Types.DeletedSubscriptionItem
import StripeAPI.Types.DeletedTaxId
import StripeAPI.Types.DeletedTerminalLocation
import StripeAPI.Types.DeletedTerminalReader
import StripeAPI.Types.DeletedWebhookEndpoint
import StripeAPI.Types.DeliveryEstimate
import StripeAPI.Types.DisputeEvidenceDetails
import StripeAPI.Types.EphemeralKey
import StripeAPI.Types.ExchangeRate
import StripeAPI.Types.Fee
import StripeAPI.Types.FinancialReportingFinanceReportRunRunParameters
import StripeAPI.Types.Inventory
import StripeAPI.Types.InvoiceItemThresholdReason
import StripeAPI.Types.InvoiceLineItemPeriod
import StripeAPI.Types.InvoiceSettingCustomField
import StripeAPI.Types.InvoiceSettingSubscriptionScheduleSetting
import StripeAPI.Types.InvoiceTaxAmount
import StripeAPI.Types.InvoiceThresholdReason
import StripeAPI.Types.InvoicesResourceInvoiceTaxId
import StripeAPI.Types.InvoicesStatusTransitions
import StripeAPI.Types.IssuingAuthorizationMerchantData
import StripeAPI.Types.IssuingAuthorizationRequest
import StripeAPI.Types.IssuingAuthorizationVerificationData
import StripeAPI.Types.IssuingAuthorizationViolatedAuthControl
import StripeAPI.Types.IssuingCardAuthorizationControls
import StripeAPI.Types.IssuingCardPin
import StripeAPI.Types.IssuingCardShipping
import StripeAPI.Types.IssuingCardSpendingLimit
import StripeAPI.Types.IssuingCardholderAddress
import StripeAPI.Types.IssuingCardholderAuthorizationControls
import StripeAPI.Types.IssuingCardholderCompany
import StripeAPI.Types.IssuingCardholderIndividualDob
import StripeAPI.Types.IssuingCardholderRequirements
import StripeAPI.Types.IssuingCardholderSpendingLimit
import StripeAPI.Types.IssuingSettlement
import StripeAPI.Types.IssuingVerification
import StripeAPI.Types.LegalEntityDob
import StripeAPI.Types.LegalEntityJapanAddress
import StripeAPI.Types.LightAccountLogout
import StripeAPI.Types.LoginLink
import StripeAPI.Types.MandateMultiUse
import StripeAPI.Types.MandatePaymentMethodDetails
import StripeAPI.Types.MandateSepaDebit
import StripeAPI.Types.MandateSingleUse
import StripeAPI.Types.NotificationEventData
import StripeAPI.Types.NotificationEventRequest
import StripeAPI.Types.OfflineAcceptance
import StripeAPI.Types.OnlineAcceptance
import StripeAPI.Types.PackageDimensions
import StripeAPI.Types.PaymentIntentNextAction
import StripeAPI.Types.PaymentIntentNextActionRedirectToUrl
import StripeAPI.Types.PaymentMethodCardChecks
import StripeAPI.Types.PaymentMethodCardPresent
import StripeAPI.Types.PaymentMethodCardWalletAmexExpressCheckout
import StripeAPI.Types.PaymentMethodCardWalletApplePay
import StripeAPI.Types.PaymentMethodCardWalletGooglePay
import StripeAPI.Types.PaymentMethodCardWalletSamsungPay
import StripeAPI.Types.PaymentMethodDetailsAchCreditTransfer
import StripeAPI.Types.PaymentMethodDetailsAchDebit
import StripeAPI.Types.PaymentMethodDetailsAlipay
import StripeAPI.Types.PaymentMethodDetailsBancontact
import StripeAPI.Types.PaymentMethodDetailsCardChecks
import StripeAPI.Types.PaymentMethodDetailsCardInstallmentsPlan
import StripeAPI.Types.PaymentMethodDetailsCardPresentReceipt
import StripeAPI.Types.PaymentMethodDetailsCardWalletAmexExpressCheckout
import StripeAPI.Types.PaymentMethodDetailsCardWalletApplePay
import StripeAPI.Types.PaymentMethodDetailsCardWalletGooglePay
import StripeAPI.Types.PaymentMethodDetailsCardWalletSamsungPay
import StripeAPI.Types.PaymentMethodDetailsEps
import StripeAPI.Types.PaymentMethodDetailsFpx
import StripeAPI.Types.PaymentMethodDetailsGiropay
import StripeAPI.Types.PaymentMethodDetailsIdeal
import StripeAPI.Types.PaymentMethodDetailsKlarna
import StripeAPI.Types.PaymentMethodDetailsMultibanco
import StripeAPI.Types.PaymentMethodDetailsP24
import StripeAPI.Types.PaymentMethodDetailsSepaDebit
import StripeAPI.Types.PaymentMethodDetailsSofort
import StripeAPI.Types.PaymentMethodDetailsStripeAccount
import StripeAPI.Types.PaymentMethodDetailsWechat
import StripeAPI.Types.PaymentMethodFpx
import StripeAPI.Types.PaymentMethodIdeal
import StripeAPI.Types.PaymentMethodSepaDebit
import StripeAPI.Types.Period
import StripeAPI.Types.PersonRelationship
import StripeAPI.Types.PersonRequirements
import StripeAPI.Types.PlanTier
import StripeAPI.Types.PlatformTaxFee
import StripeAPI.Types.RadarReviewResourceLocation
import StripeAPI.Types.RadarReviewResourceSession
import StripeAPI.Types.RadarValueList
import StripeAPI.Types.RadarValueListItem
import StripeAPI.Types.ReportingReportType
import StripeAPI.Types.ReserveTransaction
import StripeAPI.Types.Rule
import StripeAPI.Types.SetupIntentNextAction
import StripeAPI.Types.SetupIntentNextActionRedirectToUrl
import StripeAPI.Types.SetupIntentPaymentMethodOptions
import StripeAPI.Types.SetupIntentPaymentMethodOptionsCard
import StripeAPI.Types.Shipping
import StripeAPI.Types.SigmaScheduledQueryRunError
import StripeAPI.Types.SourceCodeVerificationFlow
import StripeAPI.Types.SourceMandateNotificationBacsDebitData
import StripeAPI.Types.SourceMandateNotificationSepaDebitData
import StripeAPI.Types.SourceOrder
import StripeAPI.Types.SourceOrderItem
import StripeAPI.Types.SourceReceiverFlow
import StripeAPI.Types.SourceRedirectFlow
import StripeAPI.Types.SourceTransaction
import StripeAPI.Types.SourceTransactionAchCreditTransferData
import StripeAPI.Types.SourceTransactionChfCreditTransferData
import StripeAPI.Types.SourceTransactionGbpCreditTransferData
import StripeAPI.Types.SourceTransactionPaperCheckData
import StripeAPI.Types.SourceTransactionSepaCreditTransferData
import StripeAPI.Types.SourceTypeAchCreditTransfer
import StripeAPI.Types.SourceTypeAchDebit
import StripeAPI.Types.SourceTypeAlipay
import StripeAPI.Types.SourceTypeBancontact
import StripeAPI.Types.SourceTypeCard
import StripeAPI.Types.SourceTypeCardPresent
import StripeAPI.Types.SourceTypeEps
import StripeAPI.Types.SourceTypeGiropay
import StripeAPI.Types.SourceTypeIdeal
import StripeAPI.Types.SourceTypeKlarna
import StripeAPI.Types.SourceTypeMultibanco
import StripeAPI.Types.SourceTypeP24
import StripeAPI.Types.SourceTypeSepaDebit
import StripeAPI.Types.SourceTypeSofort
import StripeAPI.Types.SourceTypeThreeDSecure
import StripeAPI.Types.SourceTypeWechat
import StripeAPI.Types.StatusTransitions
import StripeAPI.Types.SubscriptionBillingThresholds
import StripeAPI.Types.SubscriptionItemBillingThresholds
import StripeAPI.Types.SubscriptionPendingInvoiceItemInterval
import StripeAPI.Types.SubscriptionScheduleCurrentPhase
import StripeAPI.Types.TaxDeductedAtSource
import StripeAPI.Types.TaxIdVerification
import StripeAPI.Types.TaxRate
import StripeAPI.Types.TerminalConnectionToken
import StripeAPI.Types.TerminalLocation
import StripeAPI.Types.TerminalReader
import StripeAPI.Types.ThreeDSecureDetails
import StripeAPI.Types.ThreeDSecureUsage
import StripeAPI.Types.TransferSchedule
import StripeAPI.Types.TransformUsage
import StripeAPI.Types.UsageRecord
import StripeAPI.Types.UsageRecordSummary
import StripeAPI.Types.WebhookEndpoint
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the data type for the schema account
--
-- This is an object representing a Stripe account. You can retrieve it to see
-- properties on the account like its current e-mail address or if the account is
-- enabled yet to make live charges.
--
-- Some properties, marked below, are available only to platforms that want to
-- [create and manage Express or Custom accounts](https:\/\/stripe.com\/docs\/connect\/accounts).
data Account
  = Account
      { -- | business_profile: Business information about the account.
        accountBusinessProfile :: (GHC.Maybe.Maybe AccountBusinessProfile'),
        -- | business_type: The business type.
        accountBusinessType :: (GHC.Maybe.Maybe AccountBusinessType'),
        -- | capabilities:
        accountCapabilities :: (GHC.Maybe.Maybe AccountCapabilities),
        -- | charges_enabled: Whether the account can create live charges.
        accountChargesEnabled :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | company:
        accountCompany :: (GHC.Maybe.Maybe LegalEntityCompany),
        -- | country: The account\'s country.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        accountCreated :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | default_currency: Three-letter ISO currency code representing the default currency for the account. This must be a currency that [Stripe supports in the account\'s country](https:\/\/stripe.com\/docs\/payouts).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountDefaultCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | details_submitted: Whether account details have been submitted. Standard accounts cannot receive payouts before this is true.
        accountDetailsSubmitted :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | email: The primary user\'s email address.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | external_accounts: External accounts (bank accounts and debit cards) currently attached to this account
        accountExternalAccounts :: (GHC.Maybe.Maybe AccountExternalAccounts'),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountId :: Data.Text.Internal.Text,
        -- | individual: This is an object representing a person associated with a Stripe account.
        --
        -- Related guide: [Handling Identity Verification with the API](https:\/\/stripe.com\/docs\/connect\/identity-verification-api\#person-information).
        accountIndividual :: (GHC.Maybe.Maybe Person),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        accountMetadata :: (GHC.Maybe.Maybe AccountMetadata'),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        accountObject :: AccountObject',
        -- | payouts_enabled: Whether Stripe can send payouts to this account.
        accountPayoutsEnabled :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | requirements:
        accountRequirements :: (GHC.Maybe.Maybe AccountRequirements),
        -- | settings: Options for customizing how the account functions within Stripe.
        accountSettings :: (GHC.Maybe.Maybe AccountSettings'),
        -- | tos_acceptance:
        accountTosAcceptance :: (GHC.Maybe.Maybe AccountTosAcceptance),
        -- | type: The Stripe account type. Can be \`standard\`, \`express\`, or \`custom\`.
        accountType :: (GHC.Maybe.Maybe AccountType')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Account where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "business_profile" (accountBusinessProfile obj) : (Data.Aeson..=) "business_type" (accountBusinessType obj) : (Data.Aeson..=) "capabilities" (accountCapabilities obj) : (Data.Aeson..=) "charges_enabled" (accountChargesEnabled obj) : (Data.Aeson..=) "company" (accountCompany obj) : (Data.Aeson..=) "country" (accountCountry obj) : (Data.Aeson..=) "created" (accountCreated obj) : (Data.Aeson..=) "default_currency" (accountDefaultCurrency obj) : (Data.Aeson..=) "details_submitted" (accountDetailsSubmitted obj) : (Data.Aeson..=) "email" (accountEmail obj) : (Data.Aeson..=) "external_accounts" (accountExternalAccounts obj) : (Data.Aeson..=) "id" (accountId obj) : (Data.Aeson..=) "individual" (accountIndividual obj) : (Data.Aeson..=) "metadata" (accountMetadata obj) : (Data.Aeson..=) "object" (accountObject obj) : (Data.Aeson..=) "payouts_enabled" (accountPayoutsEnabled obj) : (Data.Aeson..=) "requirements" (accountRequirements obj) : (Data.Aeson..=) "settings" (accountSettings obj) : (Data.Aeson..=) "tos_acceptance" (accountTosAcceptance obj) : (Data.Aeson..=) "type" (accountType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "business_profile" (accountBusinessProfile obj) GHC.Base.<> ((Data.Aeson..=) "business_type" (accountBusinessType obj) GHC.Base.<> ((Data.Aeson..=) "capabilities" (accountCapabilities obj) GHC.Base.<> ((Data.Aeson..=) "charges_enabled" (accountChargesEnabled obj) GHC.Base.<> ((Data.Aeson..=) "company" (accountCompany obj) GHC.Base.<> ((Data.Aeson..=) "country" (accountCountry obj) GHC.Base.<> ((Data.Aeson..=) "created" (accountCreated obj) GHC.Base.<> ((Data.Aeson..=) "default_currency" (accountDefaultCurrency obj) GHC.Base.<> ((Data.Aeson..=) "details_submitted" (accountDetailsSubmitted obj) GHC.Base.<> ((Data.Aeson..=) "email" (accountEmail obj) GHC.Base.<> ((Data.Aeson..=) "external_accounts" (accountExternalAccounts obj) GHC.Base.<> ((Data.Aeson..=) "id" (accountId obj) GHC.Base.<> ((Data.Aeson..=) "individual" (accountIndividual obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (accountMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (accountObject obj) GHC.Base.<> ((Data.Aeson..=) "payouts_enabled" (accountPayoutsEnabled obj) GHC.Base.<> ((Data.Aeson..=) "requirements" (accountRequirements obj) GHC.Base.<> ((Data.Aeson..=) "settings" (accountSettings obj) GHC.Base.<> ((Data.Aeson..=) "tos_acceptance" (accountTosAcceptance obj) GHC.Base.<> (Data.Aeson..=) "type" (accountType obj))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Account where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Account" (\obj -> (((((((((((((((((((GHC.Base.pure Account GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "business_profile")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "business_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "capabilities")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "charges_enabled")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "company")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "details_submitted")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "external_accounts")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "individual")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payouts_enabled")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "requirements")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "settings")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tos_acceptance")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type"))

-- | Defines the data type for the schema accountBusiness_profile\'
--
-- Business information about the account.
data AccountBusinessProfile'
  = AccountBusinessProfile'
      { -- | mcc: [The merchant category code for the account](https:\/\/stripe.com\/docs\/connect\/setting-mcc). MCCs are used to classify businesses based on the goods or services they provide.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfile'Mcc :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: The customer-facing business name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfile'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | product_description: Internal-only description of the product sold or service provided by the business. It\'s used by Stripe for risk and underwriting purposes.
        --
        -- Constraints:
        --
        -- * Maximum length of 40000
        accountBusinessProfile'ProductDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | support_address: A publicly available mailing address for sending support issues to.
        accountBusinessProfile'SupportAddress :: (GHC.Maybe.Maybe AccountBusinessProfile'SupportAddress'),
        -- | support_email: A publicly available email address for sending support issues to.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfile'SupportEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | support_phone: A publicly available phone number to call with support issues.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfile'SupportPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | support_url: A publicly available website for handling support issues.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfile'SupportUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | url: The business\'s publicly available website.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfile'Url :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON AccountBusinessProfile' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "mcc" (accountBusinessProfile'Mcc obj) : (Data.Aeson..=) "name" (accountBusinessProfile'Name obj) : (Data.Aeson..=) "product_description" (accountBusinessProfile'ProductDescription obj) : (Data.Aeson..=) "support_address" (accountBusinessProfile'SupportAddress obj) : (Data.Aeson..=) "support_email" (accountBusinessProfile'SupportEmail obj) : (Data.Aeson..=) "support_phone" (accountBusinessProfile'SupportPhone obj) : (Data.Aeson..=) "support_url" (accountBusinessProfile'SupportUrl obj) : (Data.Aeson..=) "url" (accountBusinessProfile'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "mcc" (accountBusinessProfile'Mcc obj) GHC.Base.<> ((Data.Aeson..=) "name" (accountBusinessProfile'Name obj) GHC.Base.<> ((Data.Aeson..=) "product_description" (accountBusinessProfile'ProductDescription obj) GHC.Base.<> ((Data.Aeson..=) "support_address" (accountBusinessProfile'SupportAddress obj) GHC.Base.<> ((Data.Aeson..=) "support_email" (accountBusinessProfile'SupportEmail obj) GHC.Base.<> ((Data.Aeson..=) "support_phone" (accountBusinessProfile'SupportPhone obj) GHC.Base.<> ((Data.Aeson..=) "support_url" (accountBusinessProfile'SupportUrl obj) GHC.Base.<> (Data.Aeson..=) "url" (accountBusinessProfile'Url obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON AccountBusinessProfile' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "AccountBusinessProfile'" (\obj -> (((((((GHC.Base.pure AccountBusinessProfile' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "mcc")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "product_description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "support_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "support_email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "support_phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "support_url")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "url"))

-- | Defines the data type for the schema accountBusiness_profile\'Support_address\'
--
-- A publicly available mailing address for sending support issues to.
data AccountBusinessProfile'SupportAddress'
  = AccountBusinessProfile'SupportAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfile'SupportAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfile'SupportAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfile'SupportAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfile'SupportAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfile'SupportAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfile'SupportAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON AccountBusinessProfile'SupportAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (accountBusinessProfile'SupportAddress'City obj) : (Data.Aeson..=) "country" (accountBusinessProfile'SupportAddress'Country obj) : (Data.Aeson..=) "line1" (accountBusinessProfile'SupportAddress'Line1 obj) : (Data.Aeson..=) "line2" (accountBusinessProfile'SupportAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (accountBusinessProfile'SupportAddress'PostalCode obj) : (Data.Aeson..=) "state" (accountBusinessProfile'SupportAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (accountBusinessProfile'SupportAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (accountBusinessProfile'SupportAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (accountBusinessProfile'SupportAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (accountBusinessProfile'SupportAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (accountBusinessProfile'SupportAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (accountBusinessProfile'SupportAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON AccountBusinessProfile'SupportAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "AccountBusinessProfile'SupportAddress'" (\obj -> (((((GHC.Base.pure AccountBusinessProfile'SupportAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the enum schema accountBusiness_type\'
--
-- The business type.
data AccountBusinessType'
  = AccountBusinessType'EnumOther Data.Aeson.Types.Internal.Value
  | AccountBusinessType'EnumTyped Data.Text.Internal.Text
  | AccountBusinessType'EnumStringCompany
  | AccountBusinessType'EnumStringGovernmentEntity
  | AccountBusinessType'EnumStringIndividual
  | AccountBusinessType'EnumStringNonProfit
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON AccountBusinessType' where
  toJSON (AccountBusinessType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (AccountBusinessType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (AccountBusinessType'EnumStringCompany) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "company"
  toJSON (AccountBusinessType'EnumStringGovernmentEntity) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "government_entity"
  toJSON (AccountBusinessType'EnumStringIndividual) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "individual"
  toJSON (AccountBusinessType'EnumStringNonProfit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_profit"

instance Data.Aeson.FromJSON AccountBusinessType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "company")
          then AccountBusinessType'EnumStringCompany
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "government_entity")
              then AccountBusinessType'EnumStringGovernmentEntity
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "individual")
                  then AccountBusinessType'EnumStringIndividual
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_profit")
                      then AccountBusinessType'EnumStringNonProfit
                      else AccountBusinessType'EnumOther val
      )

-- | Defines the data type for the schema accountExternal_accounts\'
--
-- External accounts (bank accounts and debit cards) currently attached to this account
data AccountExternalAccounts'
  = AccountExternalAccounts'
      { -- | data: The list contains all external accounts that have been attached to the Stripe account. These may be bank accounts or cards.
        accountExternalAccounts'Data :: ([] AccountExternalAccounts'Data'),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        accountExternalAccounts'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        accountExternalAccounts'Object :: AccountExternalAccounts'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON AccountExternalAccounts' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (accountExternalAccounts'Data obj) : (Data.Aeson..=) "has_more" (accountExternalAccounts'HasMore obj) : (Data.Aeson..=) "object" (accountExternalAccounts'Object obj) : (Data.Aeson..=) "url" (accountExternalAccounts'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (accountExternalAccounts'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (accountExternalAccounts'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (accountExternalAccounts'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (accountExternalAccounts'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON AccountExternalAccounts' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "AccountExternalAccounts'" (\obj -> (((GHC.Base.pure AccountExternalAccounts' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the data type for the schema accountExternal_accounts\'Data\'
data AccountExternalAccounts'Data'
  = AccountExternalAccounts'Data'
      { -- | account: The ID of the account that the bank account is associated with.
        accountExternalAccounts'Data'Account :: (GHC.Maybe.Maybe AccountExternalAccounts'Data'Account'Variants),
        -- | account_holder_name: The name of the person or business that owns the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'AccountHolderName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | account_holder_type: The type of entity that holds the account. This can be either \`individual\` or \`company\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'AccountHolderType :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_city: City\/District\/Suburb\/Town\/Village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'AddressCity :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_country: Billing address country, if provided when creating card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'AddressCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1: Address line 1 (Street address\/PO Box\/Company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'AddressLine1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1_check: If \`address_line1\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'AddressLine1Check :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line2: Address line 2 (Apartment\/Suite\/Unit\/Building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'AddressLine2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_state: State\/County\/Province\/Region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'AddressState :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'AddressZip :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip_check: If \`address_zip\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'AddressZipCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | available_payout_methods: A set of available payout methods for this card. Will be either \`[\"standard\"]\` or \`[\"standard\", \"instant\"]\`. Only values from this set should be passed as the \`method\` when creating a transfer.
        accountExternalAccounts'Data'AvailablePayoutMethods :: (GHC.Maybe.Maybe ([] AccountExternalAccounts'Data'AvailablePayoutMethods')),
        -- | bank_name: Name of the bank associated with the routing number (e.g., \`WELLS FARGO\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'BankName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | brand: Card brand. Can be \`American Express\`, \`Diners Club\`, \`Discover\`, \`JCB\`, \`MasterCard\`, \`UnionPay\`, \`Visa\`, or \`Unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'Brand :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter ISO code representing the country the bank account is located in.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/payouts) paid out to the bank account.
        accountExternalAccounts'Data'Currency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer: The ID of the customer that the bank account is associated with.
        accountExternalAccounts'Data'Customer :: (GHC.Maybe.Maybe AccountExternalAccounts'Data'Customer'Variants),
        -- | cvc_check: If a CVC was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'CvcCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | default_for_currency: Whether this bank account is the default external account for its currency.
        accountExternalAccounts'Data'DefaultForCurrency :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'DynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | exp_month: Two-digit number representing the card\'s expiration month.
        accountExternalAccounts'Data'ExpMonth :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | exp_year: Four-digit number representing the card\'s expiration year.
        accountExternalAccounts'Data'ExpYear :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | fingerprint: Uniquely identifies this particular bank account. You can use this attribute to check whether two bank accounts are the same.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'Fingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'Funding :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | last4: The last four digits of the bank account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'Last4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        accountExternalAccounts'Data'Metadata :: (GHC.Maybe.Maybe AccountExternalAccounts'Data'Metadata'),
        -- | name: Cardholder name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        accountExternalAccounts'Data'Object :: (GHC.Maybe.Maybe AccountExternalAccounts'Data'Object'),
        -- | recipient: The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
        accountExternalAccounts'Data'Recipient :: (GHC.Maybe.Maybe AccountExternalAccounts'Data'Recipient'Variants),
        -- | routing_number: The routing transit number for the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'RoutingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: For bank accounts, possible values are \`new\`, \`validated\`, \`verified\`, \`verification_failed\`, or \`errored\`. A bank account that hasn\'t had any activity or validation performed is \`new\`. If Stripe can determine that the bank account exists, its status will be \`validated\`. Note that there often isn’t enough information to know (e.g., for smaller credit unions), and the validation is not always run. If customer bank account verification has succeeded, the bank account status will be \`verified\`. If the verification failed for any reason, such as microdeposit failure, the status will be \`verification_failed\`. If a transfer sent to this bank account fails, we\'ll set the status to \`errored\` and will not continue to send transfers until the bank details are updated.
        --
        -- For external accounts, possible values are \`new\` and \`errored\`. Validations aren\'t run against external accounts because they\'re only used for payouts. This means the other statuses don\'t apply. If a transfer fails, the status is set to \`errored\` and transfers are stopped until account details are updated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'Status :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | tokenization_method: If the card number is tokenized, this is the method that was used. Can be \`amex_express_checkout\`, \`android_pay\` (includes Google Pay), \`apple_pay\`, \`masterpass\`, \`visa_checkout\`, or null.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountExternalAccounts'Data'TokenizationMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON AccountExternalAccounts'Data' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (accountExternalAccounts'Data'Account obj) : (Data.Aeson..=) "account_holder_name" (accountExternalAccounts'Data'AccountHolderName obj) : (Data.Aeson..=) "account_holder_type" (accountExternalAccounts'Data'AccountHolderType obj) : (Data.Aeson..=) "address_city" (accountExternalAccounts'Data'AddressCity obj) : (Data.Aeson..=) "address_country" (accountExternalAccounts'Data'AddressCountry obj) : (Data.Aeson..=) "address_line1" (accountExternalAccounts'Data'AddressLine1 obj) : (Data.Aeson..=) "address_line1_check" (accountExternalAccounts'Data'AddressLine1Check obj) : (Data.Aeson..=) "address_line2" (accountExternalAccounts'Data'AddressLine2 obj) : (Data.Aeson..=) "address_state" (accountExternalAccounts'Data'AddressState obj) : (Data.Aeson..=) "address_zip" (accountExternalAccounts'Data'AddressZip obj) : (Data.Aeson..=) "address_zip_check" (accountExternalAccounts'Data'AddressZipCheck obj) : (Data.Aeson..=) "available_payout_methods" (accountExternalAccounts'Data'AvailablePayoutMethods obj) : (Data.Aeson..=) "bank_name" (accountExternalAccounts'Data'BankName obj) : (Data.Aeson..=) "brand" (accountExternalAccounts'Data'Brand obj) : (Data.Aeson..=) "country" (accountExternalAccounts'Data'Country obj) : (Data.Aeson..=) "currency" (accountExternalAccounts'Data'Currency obj) : (Data.Aeson..=) "customer" (accountExternalAccounts'Data'Customer obj) : (Data.Aeson..=) "cvc_check" (accountExternalAccounts'Data'CvcCheck obj) : (Data.Aeson..=) "default_for_currency" (accountExternalAccounts'Data'DefaultForCurrency obj) : (Data.Aeson..=) "dynamic_last4" (accountExternalAccounts'Data'DynamicLast4 obj) : (Data.Aeson..=) "exp_month" (accountExternalAccounts'Data'ExpMonth obj) : (Data.Aeson..=) "exp_year" (accountExternalAccounts'Data'ExpYear obj) : (Data.Aeson..=) "fingerprint" (accountExternalAccounts'Data'Fingerprint obj) : (Data.Aeson..=) "funding" (accountExternalAccounts'Data'Funding obj) : (Data.Aeson..=) "id" (accountExternalAccounts'Data'Id obj) : (Data.Aeson..=) "last4" (accountExternalAccounts'Data'Last4 obj) : (Data.Aeson..=) "metadata" (accountExternalAccounts'Data'Metadata obj) : (Data.Aeson..=) "name" (accountExternalAccounts'Data'Name obj) : (Data.Aeson..=) "object" (accountExternalAccounts'Data'Object obj) : (Data.Aeson..=) "recipient" (accountExternalAccounts'Data'Recipient obj) : (Data.Aeson..=) "routing_number" (accountExternalAccounts'Data'RoutingNumber obj) : (Data.Aeson..=) "status" (accountExternalAccounts'Data'Status obj) : (Data.Aeson..=) "tokenization_method" (accountExternalAccounts'Data'TokenizationMethod obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (accountExternalAccounts'Data'Account obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_name" (accountExternalAccounts'Data'AccountHolderName obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_type" (accountExternalAccounts'Data'AccountHolderType obj) GHC.Base.<> ((Data.Aeson..=) "address_city" (accountExternalAccounts'Data'AddressCity obj) GHC.Base.<> ((Data.Aeson..=) "address_country" (accountExternalAccounts'Data'AddressCountry obj) GHC.Base.<> ((Data.Aeson..=) "address_line1" (accountExternalAccounts'Data'AddressLine1 obj) GHC.Base.<> ((Data.Aeson..=) "address_line1_check" (accountExternalAccounts'Data'AddressLine1Check obj) GHC.Base.<> ((Data.Aeson..=) "address_line2" (accountExternalAccounts'Data'AddressLine2 obj) GHC.Base.<> ((Data.Aeson..=) "address_state" (accountExternalAccounts'Data'AddressState obj) GHC.Base.<> ((Data.Aeson..=) "address_zip" (accountExternalAccounts'Data'AddressZip obj) GHC.Base.<> ((Data.Aeson..=) "address_zip_check" (accountExternalAccounts'Data'AddressZipCheck obj) GHC.Base.<> ((Data.Aeson..=) "available_payout_methods" (accountExternalAccounts'Data'AvailablePayoutMethods obj) GHC.Base.<> ((Data.Aeson..=) "bank_name" (accountExternalAccounts'Data'BankName obj) GHC.Base.<> ((Data.Aeson..=) "brand" (accountExternalAccounts'Data'Brand obj) GHC.Base.<> ((Data.Aeson..=) "country" (accountExternalAccounts'Data'Country obj) GHC.Base.<> ((Data.Aeson..=) "currency" (accountExternalAccounts'Data'Currency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (accountExternalAccounts'Data'Customer obj) GHC.Base.<> ((Data.Aeson..=) "cvc_check" (accountExternalAccounts'Data'CvcCheck obj) GHC.Base.<> ((Data.Aeson..=) "default_for_currency" (accountExternalAccounts'Data'DefaultForCurrency obj) GHC.Base.<> ((Data.Aeson..=) "dynamic_last4" (accountExternalAccounts'Data'DynamicLast4 obj) GHC.Base.<> ((Data.Aeson..=) "exp_month" (accountExternalAccounts'Data'ExpMonth obj) GHC.Base.<> ((Data.Aeson..=) "exp_year" (accountExternalAccounts'Data'ExpYear obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (accountExternalAccounts'Data'Fingerprint obj) GHC.Base.<> ((Data.Aeson..=) "funding" (accountExternalAccounts'Data'Funding obj) GHC.Base.<> ((Data.Aeson..=) "id" (accountExternalAccounts'Data'Id obj) GHC.Base.<> ((Data.Aeson..=) "last4" (accountExternalAccounts'Data'Last4 obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (accountExternalAccounts'Data'Metadata obj) GHC.Base.<> ((Data.Aeson..=) "name" (accountExternalAccounts'Data'Name obj) GHC.Base.<> ((Data.Aeson..=) "object" (accountExternalAccounts'Data'Object obj) GHC.Base.<> ((Data.Aeson..=) "recipient" (accountExternalAccounts'Data'Recipient obj) GHC.Base.<> ((Data.Aeson..=) "routing_number" (accountExternalAccounts'Data'RoutingNumber obj) GHC.Base.<> ((Data.Aeson..=) "status" (accountExternalAccounts'Data'Status obj) GHC.Base.<> (Data.Aeson..=) "tokenization_method" (accountExternalAccounts'Data'TokenizationMethod obj)))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON AccountExternalAccounts'Data' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "AccountExternalAccounts'Data'" (\obj -> ((((((((((((((((((((((((((((((((GHC.Base.pure AccountExternalAccounts'Data' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_state")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "available_payout_methods")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bank_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "brand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cvc_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_for_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dynamic_last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "funding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "recipient")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "routing_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tokenization_method"))

-- | Define the one-of schema accountExternal_accounts\'Data\'Account\'
--
-- The ID of the account that the bank account is associated with.
data AccountExternalAccounts'Data'Account'Variants
  = AccountExternalAccounts'Data'Account'Account Account
  | AccountExternalAccounts'Data'Account'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON AccountExternalAccounts'Data'Account'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON AccountExternalAccounts'Data'Account'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema accountExternal_accounts\'Data\'Available_payout_methods\'
data AccountExternalAccounts'Data'AvailablePayoutMethods'
  = AccountExternalAccounts'Data'AvailablePayoutMethods'EnumOther Data.Aeson.Types.Internal.Value
  | AccountExternalAccounts'Data'AvailablePayoutMethods'EnumTyped Data.Text.Internal.Text
  | AccountExternalAccounts'Data'AvailablePayoutMethods'EnumStringInstant
  | AccountExternalAccounts'Data'AvailablePayoutMethods'EnumStringStandard
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON AccountExternalAccounts'Data'AvailablePayoutMethods' where
  toJSON (AccountExternalAccounts'Data'AvailablePayoutMethods'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (AccountExternalAccounts'Data'AvailablePayoutMethods'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (AccountExternalAccounts'Data'AvailablePayoutMethods'EnumStringInstant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant"
  toJSON (AccountExternalAccounts'Data'AvailablePayoutMethods'EnumStringStandard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard"

instance Data.Aeson.FromJSON AccountExternalAccounts'Data'AvailablePayoutMethods' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant")
          then AccountExternalAccounts'Data'AvailablePayoutMethods'EnumStringInstant
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard")
              then AccountExternalAccounts'Data'AvailablePayoutMethods'EnumStringStandard
              else AccountExternalAccounts'Data'AvailablePayoutMethods'EnumOther val
      )

-- | Define the one-of schema accountExternal_accounts\'Data\'Customer\'
--
-- The ID of the customer that the bank account is associated with.
data AccountExternalAccounts'Data'Customer'Variants
  = AccountExternalAccounts'Data'Customer'Customer Customer
  | AccountExternalAccounts'Data'Customer'DeletedCustomer DeletedCustomer
  | AccountExternalAccounts'Data'Customer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON AccountExternalAccounts'Data'Customer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON AccountExternalAccounts'Data'Customer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema accountExternal_accounts\'Data\'Metadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data AccountExternalAccounts'Data'Metadata'
  = AccountExternalAccounts'Data'Metadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON AccountExternalAccounts'Data'Metadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON AccountExternalAccounts'Data'Metadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "AccountExternalAccounts'Data'Metadata'" (\obj -> GHC.Base.pure AccountExternalAccounts'Data'Metadata')

-- | Defines the enum schema accountExternal_accounts\'Data\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data AccountExternalAccounts'Data'Object'
  = AccountExternalAccounts'Data'Object'EnumOther Data.Aeson.Types.Internal.Value
  | AccountExternalAccounts'Data'Object'EnumTyped Data.Text.Internal.Text
  | AccountExternalAccounts'Data'Object'EnumStringBankAccount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON AccountExternalAccounts'Data'Object' where
  toJSON (AccountExternalAccounts'Data'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (AccountExternalAccounts'Data'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (AccountExternalAccounts'Data'Object'EnumStringBankAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account"

instance Data.Aeson.FromJSON AccountExternalAccounts'Data'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account")
          then AccountExternalAccounts'Data'Object'EnumStringBankAccount
          else AccountExternalAccounts'Data'Object'EnumOther val
      )

-- | Define the one-of schema accountExternal_accounts\'Data\'Recipient\'
--
-- The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
data AccountExternalAccounts'Data'Recipient'Variants
  = AccountExternalAccounts'Data'Recipient'Recipient Recipient
  | AccountExternalAccounts'Data'Recipient'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON AccountExternalAccounts'Data'Recipient'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON AccountExternalAccounts'Data'Recipient'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema accountExternal_accounts\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data AccountExternalAccounts'Object'
  = AccountExternalAccounts'Object'EnumOther Data.Aeson.Types.Internal.Value
  | AccountExternalAccounts'Object'EnumTyped Data.Text.Internal.Text
  | AccountExternalAccounts'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON AccountExternalAccounts'Object' where
  toJSON (AccountExternalAccounts'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (AccountExternalAccounts'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (AccountExternalAccounts'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON AccountExternalAccounts'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then AccountExternalAccounts'Object'EnumStringList
          else AccountExternalAccounts'Object'EnumOther val
      )

-- | Defines the data type for the schema accountMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data AccountMetadata'
  = AccountMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON AccountMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON AccountMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "AccountMetadata'" (\obj -> GHC.Base.pure AccountMetadata')

-- | Defines the enum schema accountObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data AccountObject'
  = AccountObject'EnumOther Data.Aeson.Types.Internal.Value
  | AccountObject'EnumTyped Data.Text.Internal.Text
  | AccountObject'EnumStringAccount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON AccountObject' where
  toJSON (AccountObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (AccountObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (AccountObject'EnumStringAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "account"

instance Data.Aeson.FromJSON AccountObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "account")
          then AccountObject'EnumStringAccount
          else AccountObject'EnumOther val
      )

-- | Defines the data type for the schema accountSettings\'
--
-- Options for customizing how the account functions within Stripe.
data AccountSettings'
  = AccountSettings'
      { -- | branding:
        accountSettings'Branding :: (GHC.Maybe.Maybe AccountBrandingSettings),
        -- | card_payments:
        accountSettings'CardPayments :: (GHC.Maybe.Maybe AccountCardPaymentsSettings),
        -- | dashboard:
        accountSettings'Dashboard :: (GHC.Maybe.Maybe AccountDashboardSettings),
        -- | payments:
        accountSettings'Payments :: (GHC.Maybe.Maybe AccountPaymentsSettings),
        -- | payouts:
        accountSettings'Payouts :: (GHC.Maybe.Maybe AccountPayoutSettings)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON AccountSettings' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "branding" (accountSettings'Branding obj) : (Data.Aeson..=) "card_payments" (accountSettings'CardPayments obj) : (Data.Aeson..=) "dashboard" (accountSettings'Dashboard obj) : (Data.Aeson..=) "payments" (accountSettings'Payments obj) : (Data.Aeson..=) "payouts" (accountSettings'Payouts obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "branding" (accountSettings'Branding obj) GHC.Base.<> ((Data.Aeson..=) "card_payments" (accountSettings'CardPayments obj) GHC.Base.<> ((Data.Aeson..=) "dashboard" (accountSettings'Dashboard obj) GHC.Base.<> ((Data.Aeson..=) "payments" (accountSettings'Payments obj) GHC.Base.<> (Data.Aeson..=) "payouts" (accountSettings'Payouts obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON AccountSettings' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "AccountSettings'" (\obj -> ((((GHC.Base.pure AccountSettings' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "branding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card_payments")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dashboard")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payments")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payouts"))

-- | Defines the enum schema accountType\'
--
-- The Stripe account type. Can be \`standard\`, \`express\`, or \`custom\`.
data AccountType'
  = AccountType'EnumOther Data.Aeson.Types.Internal.Value
  | AccountType'EnumTyped Data.Text.Internal.Text
  | AccountType'EnumStringCustom
  | AccountType'EnumStringExpress
  | AccountType'EnumStringStandard
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON AccountType' where
  toJSON (AccountType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (AccountType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (AccountType'EnumStringCustom) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "custom"
  toJSON (AccountType'EnumStringExpress) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "express"
  toJSON (AccountType'EnumStringStandard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard"

instance Data.Aeson.FromJSON AccountType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "custom")
          then AccountType'EnumStringCustom
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "express")
              then AccountType'EnumStringExpress
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard")
                  then AccountType'EnumStringStandard
                  else AccountType'EnumOther val
      )

-- | Defines the data type for the schema account_branding_settings
data AccountBrandingSettings
  = AccountBrandingSettings
      { -- | icon: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) An icon for the account. Must be square and at least 128px x 128px.
        accountBrandingSettingsIcon :: (GHC.Maybe.Maybe AccountBrandingSettingsIcon'Variants),
        -- | logo: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) A logo for the account that will be used in Checkout instead of the icon and without the account\'s name next to it if provided. Must be at least 128px x 128px.
        accountBrandingSettingsLogo :: (GHC.Maybe.Maybe AccountBrandingSettingsLogo'Variants),
        -- | primary_color: A CSS hex color value representing the primary branding color for this account
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBrandingSettingsPrimaryColor :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON AccountBrandingSettings where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "icon" (accountBrandingSettingsIcon obj) : (Data.Aeson..=) "logo" (accountBrandingSettingsLogo obj) : (Data.Aeson..=) "primary_color" (accountBrandingSettingsPrimaryColor obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "icon" (accountBrandingSettingsIcon obj) GHC.Base.<> ((Data.Aeson..=) "logo" (accountBrandingSettingsLogo obj) GHC.Base.<> (Data.Aeson..=) "primary_color" (accountBrandingSettingsPrimaryColor obj)))

instance Data.Aeson.Types.FromJSON.FromJSON AccountBrandingSettings where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "AccountBrandingSettings" (\obj -> ((GHC.Base.pure AccountBrandingSettings GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "icon")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "logo")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "primary_color"))

-- | Define the one-of schema account_branding_settingsIcon\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) An icon for the account. Must be square and at least 128px x 128px.
data AccountBrandingSettingsIcon'Variants
  = AccountBrandingSettingsIcon'File File
  | AccountBrandingSettingsIcon'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON AccountBrandingSettingsIcon'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON AccountBrandingSettingsIcon'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema account_branding_settingsLogo\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) A logo for the account that will be used in Checkout instead of the icon and without the account\'s name next to it if provided. Must be at least 128px x 128px.
data AccountBrandingSettingsLogo'Variants
  = AccountBrandingSettingsLogo'File File
  | AccountBrandingSettingsLogo'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON AccountBrandingSettingsLogo'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON AccountBrandingSettingsLogo'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema account_business_profile
data AccountBusinessProfile
  = AccountBusinessProfile
      { -- | mcc: [The merchant category code for the account](https:\/\/stripe.com\/docs\/connect\/setting-mcc). MCCs are used to classify businesses based on the goods or services they provide.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfileMcc :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: The customer-facing business name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfileName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | product_description: Internal-only description of the product sold or service provided by the business. It\'s used by Stripe for risk and underwriting purposes.
        --
        -- Constraints:
        --
        -- * Maximum length of 40000
        accountBusinessProfileProductDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | support_address: A publicly available mailing address for sending support issues to.
        accountBusinessProfileSupportAddress :: (GHC.Maybe.Maybe AccountBusinessProfileSupportAddress'),
        -- | support_email: A publicly available email address for sending support issues to.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfileSupportEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | support_phone: A publicly available phone number to call with support issues.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfileSupportPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | support_url: A publicly available website for handling support issues.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfileSupportUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | url: The business\'s publicly available website.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfileUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON AccountBusinessProfile where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "mcc" (accountBusinessProfileMcc obj) : (Data.Aeson..=) "name" (accountBusinessProfileName obj) : (Data.Aeson..=) "product_description" (accountBusinessProfileProductDescription obj) : (Data.Aeson..=) "support_address" (accountBusinessProfileSupportAddress obj) : (Data.Aeson..=) "support_email" (accountBusinessProfileSupportEmail obj) : (Data.Aeson..=) "support_phone" (accountBusinessProfileSupportPhone obj) : (Data.Aeson..=) "support_url" (accountBusinessProfileSupportUrl obj) : (Data.Aeson..=) "url" (accountBusinessProfileUrl obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "mcc" (accountBusinessProfileMcc obj) GHC.Base.<> ((Data.Aeson..=) "name" (accountBusinessProfileName obj) GHC.Base.<> ((Data.Aeson..=) "product_description" (accountBusinessProfileProductDescription obj) GHC.Base.<> ((Data.Aeson..=) "support_address" (accountBusinessProfileSupportAddress obj) GHC.Base.<> ((Data.Aeson..=) "support_email" (accountBusinessProfileSupportEmail obj) GHC.Base.<> ((Data.Aeson..=) "support_phone" (accountBusinessProfileSupportPhone obj) GHC.Base.<> ((Data.Aeson..=) "support_url" (accountBusinessProfileSupportUrl obj) GHC.Base.<> (Data.Aeson..=) "url" (accountBusinessProfileUrl obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON AccountBusinessProfile where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "AccountBusinessProfile" (\obj -> (((((((GHC.Base.pure AccountBusinessProfile GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "mcc")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "product_description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "support_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "support_email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "support_phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "support_url")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "url"))

-- | Defines the data type for the schema account_business_profileSupport_address\'
--
-- A publicly available mailing address for sending support issues to.
data AccountBusinessProfileSupportAddress'
  = AccountBusinessProfileSupportAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfileSupportAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfileSupportAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfileSupportAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfileSupportAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfileSupportAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        accountBusinessProfileSupportAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON AccountBusinessProfileSupportAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (accountBusinessProfileSupportAddress'City obj) : (Data.Aeson..=) "country" (accountBusinessProfileSupportAddress'Country obj) : (Data.Aeson..=) "line1" (accountBusinessProfileSupportAddress'Line1 obj) : (Data.Aeson..=) "line2" (accountBusinessProfileSupportAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (accountBusinessProfileSupportAddress'PostalCode obj) : (Data.Aeson..=) "state" (accountBusinessProfileSupportAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (accountBusinessProfileSupportAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (accountBusinessProfileSupportAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (accountBusinessProfileSupportAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (accountBusinessProfileSupportAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (accountBusinessProfileSupportAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (accountBusinessProfileSupportAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON AccountBusinessProfileSupportAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "AccountBusinessProfileSupportAddress'" (\obj -> (((((GHC.Base.pure AccountBusinessProfileSupportAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema account_settings
data AccountSettings
  = AccountSettings
      { -- | branding:
        accountSettingsBranding :: AccountBrandingSettings,
        -- | card_payments:
        accountSettingsCardPayments :: AccountCardPaymentsSettings,
        -- | dashboard:
        accountSettingsDashboard :: AccountDashboardSettings,
        -- | payments:
        accountSettingsPayments :: AccountPaymentsSettings,
        -- | payouts:
        accountSettingsPayouts :: (GHC.Maybe.Maybe AccountPayoutSettings)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON AccountSettings where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "branding" (accountSettingsBranding obj) : (Data.Aeson..=) "card_payments" (accountSettingsCardPayments obj) : (Data.Aeson..=) "dashboard" (accountSettingsDashboard obj) : (Data.Aeson..=) "payments" (accountSettingsPayments obj) : (Data.Aeson..=) "payouts" (accountSettingsPayouts obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "branding" (accountSettingsBranding obj) GHC.Base.<> ((Data.Aeson..=) "card_payments" (accountSettingsCardPayments obj) GHC.Base.<> ((Data.Aeson..=) "dashboard" (accountSettingsDashboard obj) GHC.Base.<> ((Data.Aeson..=) "payments" (accountSettingsPayments obj) GHC.Base.<> (Data.Aeson..=) "payouts" (accountSettingsPayouts obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON AccountSettings where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "AccountSettings" (\obj -> ((((GHC.Base.pure AccountSettings GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "branding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "card_payments")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "dashboard")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "payments")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payouts"))

-- | Defines the data type for the schema alipay_account
data AlipayAccount
  = AlipayAccount
      { -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        alipayAccountCreated :: GHC.Integer.Type.Integer,
        -- | customer: The ID of the customer associated with this Alipay Account.
        alipayAccountCustomer :: (GHC.Maybe.Maybe AlipayAccountCustomer'Variants),
        -- | fingerprint: Uniquely identifies the account and will be the same across all Alipay account objects that are linked to the same Alipay account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        alipayAccountFingerprint :: Data.Text.Internal.Text,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        alipayAccountId :: 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.
        alipayAccountLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        alipayAccountMetadata :: (GHC.Maybe.Maybe AlipayAccountMetadata'),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        alipayAccountObject :: AlipayAccountObject',
        -- | payment_amount: If the Alipay account object is not reusable, the exact amount that you can create a charge for.
        alipayAccountPaymentAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | payment_currency: If the Alipay account object is not reusable, the exact currency that you can create a charge for.
        alipayAccountPaymentCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | reusable: True if you can create multiple payments using this account. If the account is reusable, then you can freely choose the amount of each payment.
        alipayAccountReusable :: GHC.Types.Bool,
        -- | used: Whether this Alipay account object has ever been used for a payment.
        alipayAccountUsed :: GHC.Types.Bool,
        -- | username: The username for the Alipay account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        alipayAccountUsername :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON AlipayAccount where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "created" (alipayAccountCreated obj) : (Data.Aeson..=) "customer" (alipayAccountCustomer obj) : (Data.Aeson..=) "fingerprint" (alipayAccountFingerprint obj) : (Data.Aeson..=) "id" (alipayAccountId obj) : (Data.Aeson..=) "livemode" (alipayAccountLivemode obj) : (Data.Aeson..=) "metadata" (alipayAccountMetadata obj) : (Data.Aeson..=) "object" (alipayAccountObject obj) : (Data.Aeson..=) "payment_amount" (alipayAccountPaymentAmount obj) : (Data.Aeson..=) "payment_currency" (alipayAccountPaymentCurrency obj) : (Data.Aeson..=) "reusable" (alipayAccountReusable obj) : (Data.Aeson..=) "used" (alipayAccountUsed obj) : (Data.Aeson..=) "username" (alipayAccountUsername obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "created" (alipayAccountCreated obj) GHC.Base.<> ((Data.Aeson..=) "customer" (alipayAccountCustomer obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (alipayAccountFingerprint obj) GHC.Base.<> ((Data.Aeson..=) "id" (alipayAccountId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (alipayAccountLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (alipayAccountMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (alipayAccountObject obj) GHC.Base.<> ((Data.Aeson..=) "payment_amount" (alipayAccountPaymentAmount obj) GHC.Base.<> ((Data.Aeson..=) "payment_currency" (alipayAccountPaymentCurrency obj) GHC.Base.<> ((Data.Aeson..=) "reusable" (alipayAccountReusable obj) GHC.Base.<> ((Data.Aeson..=) "used" (alipayAccountUsed obj) GHC.Base.<> (Data.Aeson..=) "username" (alipayAccountUsername obj))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON AlipayAccount where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "AlipayAccount" (\obj -> (((((((((((GHC.Base.pure AlipayAccount GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "reusable")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "used")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "username"))

-- | Define the one-of schema alipay_accountCustomer\'
--
-- The ID of the customer associated with this Alipay Account.
data AlipayAccountCustomer'Variants
  = AlipayAccountCustomer'Customer Customer
  | AlipayAccountCustomer'DeletedCustomer DeletedCustomer
  | AlipayAccountCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON AlipayAccountCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON AlipayAccountCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema alipay_accountMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data AlipayAccountMetadata'
  = AlipayAccountMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON AlipayAccountMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON AlipayAccountMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "AlipayAccountMetadata'" (\obj -> GHC.Base.pure AlipayAccountMetadata')

-- | Defines the enum schema alipay_accountObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data AlipayAccountObject'
  = AlipayAccountObject'EnumOther Data.Aeson.Types.Internal.Value
  | AlipayAccountObject'EnumTyped Data.Text.Internal.Text
  | AlipayAccountObject'EnumStringAlipayAccount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON AlipayAccountObject' where
  toJSON (AlipayAccountObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (AlipayAccountObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (AlipayAccountObject'EnumStringAlipayAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay_account"

instance Data.Aeson.FromJSON AlipayAccountObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay_account")
          then AlipayAccountObject'EnumStringAlipayAccount
          else AlipayAccountObject'EnumOther val
      )

-- | Defines the data type for the schema api_errors
data ApiErrors
  = ApiErrors
      { -- | charge: For card errors, the ID of the failed charge.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsCharge :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | code: For some errors that could be handled programmatically, a short string indicating the [error code](https:\/\/stripe.com\/docs\/error-codes) reported.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | decline_code: For card errors resulting from a card issuer decline, a short string indicating the [card issuer\'s reason for the decline](https:\/\/stripe.com\/docs\/declines\#issuer-declines) if they provide one.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsDeclineCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | doc_url: A URL to more information about the [error code](https:\/\/stripe.com\/docs\/error-codes) reported.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsDocUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | message: A human-readable message providing more details about the error. For card errors, these messages can be shown to your users.
        --
        -- Constraints:
        --
        -- * Maximum length of 40000
        apiErrorsMessage :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | param: If the error is parameter-specific, the parameter related to the error. For example, you can use this to display a message near the correct form field.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsParam :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | payment_intent: A PaymentIntent guides you through the process of collecting a payment from your customer.
        -- We recommend that you create exactly one PaymentIntent for each order or
        -- customer session in your system. You can reference the PaymentIntent later to
        -- see the history of payment attempts for a particular session.
        --
        -- A PaymentIntent transitions through
        -- [multiple statuses](https:\/\/stripe.com\/docs\/payments\/intents\#intent-statuses)
        -- throughout its lifetime as it interfaces with Stripe.js to perform
        -- authentication flows and ultimately creates at most one successful charge.
        --
        -- Related guide: [Payment Intents API](https:\/\/stripe.com\/docs\/payments\/payment-intents\/creating-payment-intents).
        apiErrorsPaymentIntent :: (GHC.Maybe.Maybe PaymentIntent),
        -- | payment_method: PaymentMethod objects represent your customer\'s payment instruments.
        -- They can be used with [PaymentIntents](https:\/\/stripe.com\/docs\/payments\/payment-intents) to collect payments or saved to
        -- Customer objects to store instrument details for future payments.
        --
        -- Related guides: [Payment Methods](https:\/\/stripe.com\/docs\/payments\/payment-methods) and [More Payment Scenarios](https:\/\/stripe.com\/docs\/payments\/more-payment-scenarios).
        apiErrorsPaymentMethod :: (GHC.Maybe.Maybe PaymentMethod),
        -- | setup_intent: A SetupIntent guides you through the process of setting up a customer\'s payment credentials for future payments.
        -- For example, you could use a SetupIntent to set up your customer\'s card without immediately collecting a payment.
        -- Later, you can use [PaymentIntents](https:\/\/stripe.com\/docs\/api\#payment_intents) to drive the payment flow.
        --
        -- Create a SetupIntent as soon as you\'re ready to collect your customer\'s payment credentials.
        -- Do not maintain long-lived, unconfirmed SetupIntents as they may no longer be valid.
        -- The SetupIntent then transitions through multiple [statuses](https:\/\/stripe.com\/docs\/payments\/intents\#intent-statuses) as it guides
        -- you through the setup process.
        --
        -- Successful SetupIntents result in payment credentials that are optimized for future payments.
        -- For example, cardholders in [certain regions](\/guides\/strong-customer-authentication) may need to be run through
        -- [Strong Customer Authentication](https:\/\/stripe.com\/docs\/strong-customer-authentication) at the time of payment method collection
        -- in order to streamline later [off-session payments](https:\/\/stripe.com\/docs\/payments\/setup-intents).
        --
        -- By using SetupIntents, you ensure that your customers experience the minimum set of required friction,
        -- even as regulations change over time.
        apiErrorsSetupIntent :: (GHC.Maybe.Maybe SetupIntent),
        -- | source: The source object for errors returned on a request involving a source.
        apiErrorsSource :: (GHC.Maybe.Maybe ApiErrorsSource'),
        -- | type: The type of error returned. One of \`api_connection_error\`, \`api_error\`, \`authentication_error\`, \`card_error\`, \`idempotency_error\`, \`invalid_request_error\`, or \`rate_limit_error\`
        apiErrorsType :: ApiErrorsType'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ApiErrors where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "charge" (apiErrorsCharge obj) : (Data.Aeson..=) "code" (apiErrorsCode obj) : (Data.Aeson..=) "decline_code" (apiErrorsDeclineCode obj) : (Data.Aeson..=) "doc_url" (apiErrorsDocUrl obj) : (Data.Aeson..=) "message" (apiErrorsMessage obj) : (Data.Aeson..=) "param" (apiErrorsParam obj) : (Data.Aeson..=) "payment_intent" (apiErrorsPaymentIntent obj) : (Data.Aeson..=) "payment_method" (apiErrorsPaymentMethod obj) : (Data.Aeson..=) "setup_intent" (apiErrorsSetupIntent obj) : (Data.Aeson..=) "source" (apiErrorsSource obj) : (Data.Aeson..=) "type" (apiErrorsType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "charge" (apiErrorsCharge obj) GHC.Base.<> ((Data.Aeson..=) "code" (apiErrorsCode obj) GHC.Base.<> ((Data.Aeson..=) "decline_code" (apiErrorsDeclineCode obj) GHC.Base.<> ((Data.Aeson..=) "doc_url" (apiErrorsDocUrl obj) GHC.Base.<> ((Data.Aeson..=) "message" (apiErrorsMessage obj) GHC.Base.<> ((Data.Aeson..=) "param" (apiErrorsParam obj) GHC.Base.<> ((Data.Aeson..=) "payment_intent" (apiErrorsPaymentIntent obj) GHC.Base.<> ((Data.Aeson..=) "payment_method" (apiErrorsPaymentMethod obj) GHC.Base.<> ((Data.Aeson..=) "setup_intent" (apiErrorsSetupIntent obj) GHC.Base.<> ((Data.Aeson..=) "source" (apiErrorsSource obj) GHC.Base.<> (Data.Aeson..=) "type" (apiErrorsType obj)))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON ApiErrors where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ApiErrors" (\obj -> ((((((((((GHC.Base.pure ApiErrors GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "charge")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "decline_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "doc_url")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "message")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "param")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_intent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "setup_intent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type"))

-- | Defines the data type for the schema api_errorsSource\'
--
-- The source object for errors returned on a request involving a source.
data ApiErrorsSource'
  = ApiErrorsSource'
      { -- | account: The ID of the account that the bank account is associated with.
        apiErrorsSource'Account :: (GHC.Maybe.Maybe ApiErrorsSource'Account'Variants),
        -- | account_holder_name: The name of the person or business that owns the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'AccountHolderName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | account_holder_type: The type of entity that holds the account. This can be either \`individual\` or \`company\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'AccountHolderType :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | ach_credit_transfer
        apiErrorsSource'AchCreditTransfer :: (GHC.Maybe.Maybe SourceTypeAchCreditTransfer),
        -- | ach_debit
        apiErrorsSource'AchDebit :: (GHC.Maybe.Maybe SourceTypeAchDebit),
        -- | address_city: City\/District\/Suburb\/Town\/Village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'AddressCity :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_country: Billing address country, if provided when creating card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'AddressCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1: Address line 1 (Street address\/PO Box\/Company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'AddressLine1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1_check: If \`address_line1\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'AddressLine1Check :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line2: Address line 2 (Apartment\/Suite\/Unit\/Building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'AddressLine2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_state: State\/County\/Province\/Region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'AddressState :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'AddressZip :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip_check: If \`address_zip\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'AddressZipCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | alipay
        apiErrorsSource'Alipay :: (GHC.Maybe.Maybe SourceTypeAlipay),
        -- | amount: A positive integer in the smallest currency unit (that is, 100 cents for \$1.00, or 1 for ¥1, Japanese Yen being a zero-decimal currency) representing the total amount associated with the source. This is the amount for which the source will be chargeable once ready. Required for \`single_use\` sources.
        apiErrorsSource'Amount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | available_payout_methods: A set of available payout methods for this card. Will be either \`[\"standard\"]\` or \`[\"standard\", \"instant\"]\`. Only values from this set should be passed as the \`method\` when creating a transfer.
        apiErrorsSource'AvailablePayoutMethods :: (GHC.Maybe.Maybe ([] ApiErrorsSource'AvailablePayoutMethods')),
        -- | bancontact
        apiErrorsSource'Bancontact :: (GHC.Maybe.Maybe SourceTypeBancontact),
        -- | bank_name: Name of the bank associated with the routing number (e.g., \`WELLS FARGO\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'BankName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | brand: Card brand. Can be \`American Express\`, \`Diners Club\`, \`Discover\`, \`JCB\`, \`MasterCard\`, \`UnionPay\`, \`Visa\`, or \`Unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Brand :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | card
        apiErrorsSource'Card :: (GHC.Maybe.Maybe SourceTypeCard),
        -- | card_present
        apiErrorsSource'CardPresent :: (GHC.Maybe.Maybe SourceTypeCardPresent),
        -- | client_secret: The client secret of the source. Used for client-side retrieval using a publishable key.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'ClientSecret :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | code_verification:
        apiErrorsSource'CodeVerification :: (GHC.Maybe.Maybe SourceCodeVerificationFlow),
        -- | country: Two-letter ISO code representing the country the bank account is located in.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        apiErrorsSource'Created :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/payouts) paid out to the bank account.
        apiErrorsSource'Currency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer: The ID of the customer that the bank account is associated with.
        apiErrorsSource'Customer :: (GHC.Maybe.Maybe ApiErrorsSource'Customer'Variants),
        -- | cvc_check: If a CVC was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'CvcCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | default_for_currency: Whether this bank account is the default external account for its currency.
        apiErrorsSource'DefaultForCurrency :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'DynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | eps
        apiErrorsSource'Eps :: (GHC.Maybe.Maybe SourceTypeEps),
        -- | exp_month: Two-digit number representing the card\'s expiration month.
        apiErrorsSource'ExpMonth :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | exp_year: Four-digit number representing the card\'s expiration year.
        apiErrorsSource'ExpYear :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | fingerprint: Uniquely identifies this particular bank account. You can use this attribute to check whether two bank accounts are the same.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Fingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | flow: The authentication \`flow\` of the source. \`flow\` is one of \`redirect\`, \`receiver\`, \`code_verification\`, \`none\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Flow :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Funding :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | giropay
        apiErrorsSource'Giropay :: (GHC.Maybe.Maybe SourceTypeGiropay),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | ideal
        apiErrorsSource'Ideal :: (GHC.Maybe.Maybe SourceTypeIdeal),
        -- | klarna
        apiErrorsSource'Klarna :: (GHC.Maybe.Maybe SourceTypeKlarna),
        -- | last4: The last four digits of the bank account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Last4 :: (GHC.Maybe.Maybe 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.
        apiErrorsSource'Livemode :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        apiErrorsSource'Metadata :: (GHC.Maybe.Maybe ApiErrorsSource'Metadata'),
        -- | multibanco
        apiErrorsSource'Multibanco :: (GHC.Maybe.Maybe SourceTypeMultibanco),
        -- | name: Cardholder name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        apiErrorsSource'Object :: (GHC.Maybe.Maybe ApiErrorsSource'Object'),
        -- | owner: Information about the owner of the payment instrument that may be used or required by particular source types.
        apiErrorsSource'Owner :: (GHC.Maybe.Maybe ApiErrorsSource'Owner'),
        -- | p24
        apiErrorsSource'P24 :: (GHC.Maybe.Maybe SourceTypeP24),
        -- | receiver:
        apiErrorsSource'Receiver :: (GHC.Maybe.Maybe SourceReceiverFlow),
        -- | recipient: The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
        apiErrorsSource'Recipient :: (GHC.Maybe.Maybe ApiErrorsSource'Recipient'Variants),
        -- | redirect:
        apiErrorsSource'Redirect :: (GHC.Maybe.Maybe SourceRedirectFlow),
        -- | routing_number: The routing transit number for the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'RoutingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | sepa_debit
        apiErrorsSource'SepaDebit :: (GHC.Maybe.Maybe SourceTypeSepaDebit),
        -- | sofort
        apiErrorsSource'Sofort :: (GHC.Maybe.Maybe SourceTypeSofort),
        -- | source_order:
        apiErrorsSource'SourceOrder :: (GHC.Maybe.Maybe SourceOrder),
        -- | statement_descriptor: Extra information about a source. This will appear on your customer\'s statement every time you charge the source.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'StatementDescriptor :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: For bank accounts, possible values are \`new\`, \`validated\`, \`verified\`, \`verification_failed\`, or \`errored\`. A bank account that hasn\'t had any activity or validation performed is \`new\`. If Stripe can determine that the bank account exists, its status will be \`validated\`. Note that there often isn’t enough information to know (e.g., for smaller credit unions), and the validation is not always run. If customer bank account verification has succeeded, the bank account status will be \`verified\`. If the verification failed for any reason, such as microdeposit failure, the status will be \`verification_failed\`. If a transfer sent to this bank account fails, we\'ll set the status to \`errored\` and will not continue to send transfers until the bank details are updated.
        --
        -- For external accounts, possible values are \`new\` and \`errored\`. Validations aren\'t run against external accounts because they\'re only used for payouts. This means the other statuses don\'t apply. If a transfer fails, the status is set to \`errored\` and transfers are stopped until account details are updated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Status :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | three_d_secure
        apiErrorsSource'ThreeDSecure :: (GHC.Maybe.Maybe SourceTypeThreeDSecure),
        -- | tokenization_method: If the card number is tokenized, this is the method that was used. Can be \`amex_express_checkout\`, \`android_pay\` (includes Google Pay), \`apple_pay\`, \`masterpass\`, \`visa_checkout\`, or null.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'TokenizationMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | type: The \`type\` of the source. The \`type\` is a payment method, one of \`ach_credit_transfer\`, \`ach_debit\`, \`alipay\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`multibanco\`, \`klarna\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`three_d_secure\`, or \`wechat\`. An additional hash is included on the source with a name matching this value. It contains additional information specific to the [payment method](https:\/\/stripe.com\/docs\/sources) used.
        apiErrorsSource'Type :: (GHC.Maybe.Maybe ApiErrorsSource'Type'),
        -- | usage: Either \`reusable\` or \`single_use\`. Whether this source should be reusable or not. Some source types may or may not be reusable by construction, while others may leave the option at creation. If an incompatible value is passed, an error will be returned.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Usage :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | wechat
        apiErrorsSource'Wechat :: (GHC.Maybe.Maybe SourceTypeWechat)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ApiErrorsSource' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (apiErrorsSource'Account obj) : (Data.Aeson..=) "account_holder_name" (apiErrorsSource'AccountHolderName obj) : (Data.Aeson..=) "account_holder_type" (apiErrorsSource'AccountHolderType obj) : (Data.Aeson..=) "ach_credit_transfer" (apiErrorsSource'AchCreditTransfer obj) : (Data.Aeson..=) "ach_debit" (apiErrorsSource'AchDebit obj) : (Data.Aeson..=) "address_city" (apiErrorsSource'AddressCity obj) : (Data.Aeson..=) "address_country" (apiErrorsSource'AddressCountry obj) : (Data.Aeson..=) "address_line1" (apiErrorsSource'AddressLine1 obj) : (Data.Aeson..=) "address_line1_check" (apiErrorsSource'AddressLine1Check obj) : (Data.Aeson..=) "address_line2" (apiErrorsSource'AddressLine2 obj) : (Data.Aeson..=) "address_state" (apiErrorsSource'AddressState obj) : (Data.Aeson..=) "address_zip" (apiErrorsSource'AddressZip obj) : (Data.Aeson..=) "address_zip_check" (apiErrorsSource'AddressZipCheck obj) : (Data.Aeson..=) "alipay" (apiErrorsSource'Alipay obj) : (Data.Aeson..=) "amount" (apiErrorsSource'Amount obj) : (Data.Aeson..=) "available_payout_methods" (apiErrorsSource'AvailablePayoutMethods obj) : (Data.Aeson..=) "bancontact" (apiErrorsSource'Bancontact obj) : (Data.Aeson..=) "bank_name" (apiErrorsSource'BankName obj) : (Data.Aeson..=) "brand" (apiErrorsSource'Brand obj) : (Data.Aeson..=) "card" (apiErrorsSource'Card obj) : (Data.Aeson..=) "card_present" (apiErrorsSource'CardPresent obj) : (Data.Aeson..=) "client_secret" (apiErrorsSource'ClientSecret obj) : (Data.Aeson..=) "code_verification" (apiErrorsSource'CodeVerification obj) : (Data.Aeson..=) "country" (apiErrorsSource'Country obj) : (Data.Aeson..=) "created" (apiErrorsSource'Created obj) : (Data.Aeson..=) "currency" (apiErrorsSource'Currency obj) : (Data.Aeson..=) "customer" (apiErrorsSource'Customer obj) : (Data.Aeson..=) "cvc_check" (apiErrorsSource'CvcCheck obj) : (Data.Aeson..=) "default_for_currency" (apiErrorsSource'DefaultForCurrency obj) : (Data.Aeson..=) "dynamic_last4" (apiErrorsSource'DynamicLast4 obj) : (Data.Aeson..=) "eps" (apiErrorsSource'Eps obj) : (Data.Aeson..=) "exp_month" (apiErrorsSource'ExpMonth obj) : (Data.Aeson..=) "exp_year" (apiErrorsSource'ExpYear obj) : (Data.Aeson..=) "fingerprint" (apiErrorsSource'Fingerprint obj) : (Data.Aeson..=) "flow" (apiErrorsSource'Flow obj) : (Data.Aeson..=) "funding" (apiErrorsSource'Funding obj) : (Data.Aeson..=) "giropay" (apiErrorsSource'Giropay obj) : (Data.Aeson..=) "id" (apiErrorsSource'Id obj) : (Data.Aeson..=) "ideal" (apiErrorsSource'Ideal obj) : (Data.Aeson..=) "klarna" (apiErrorsSource'Klarna obj) : (Data.Aeson..=) "last4" (apiErrorsSource'Last4 obj) : (Data.Aeson..=) "livemode" (apiErrorsSource'Livemode obj) : (Data.Aeson..=) "metadata" (apiErrorsSource'Metadata obj) : (Data.Aeson..=) "multibanco" (apiErrorsSource'Multibanco obj) : (Data.Aeson..=) "name" (apiErrorsSource'Name obj) : (Data.Aeson..=) "object" (apiErrorsSource'Object obj) : (Data.Aeson..=) "owner" (apiErrorsSource'Owner obj) : (Data.Aeson..=) "p24" (apiErrorsSource'P24 obj) : (Data.Aeson..=) "receiver" (apiErrorsSource'Receiver obj) : (Data.Aeson..=) "recipient" (apiErrorsSource'Recipient obj) : (Data.Aeson..=) "redirect" (apiErrorsSource'Redirect obj) : (Data.Aeson..=) "routing_number" (apiErrorsSource'RoutingNumber obj) : (Data.Aeson..=) "sepa_debit" (apiErrorsSource'SepaDebit obj) : (Data.Aeson..=) "sofort" (apiErrorsSource'Sofort obj) : (Data.Aeson..=) "source_order" (apiErrorsSource'SourceOrder obj) : (Data.Aeson..=) "statement_descriptor" (apiErrorsSource'StatementDescriptor obj) : (Data.Aeson..=) "status" (apiErrorsSource'Status obj) : (Data.Aeson..=) "three_d_secure" (apiErrorsSource'ThreeDSecure obj) : (Data.Aeson..=) "tokenization_method" (apiErrorsSource'TokenizationMethod obj) : (Data.Aeson..=) "type" (apiErrorsSource'Type obj) : (Data.Aeson..=) "usage" (apiErrorsSource'Usage obj) : (Data.Aeson..=) "wechat" (apiErrorsSource'Wechat obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (apiErrorsSource'Account obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_name" (apiErrorsSource'AccountHolderName obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_type" (apiErrorsSource'AccountHolderType obj) GHC.Base.<> ((Data.Aeson..=) "ach_credit_transfer" (apiErrorsSource'AchCreditTransfer obj) GHC.Base.<> ((Data.Aeson..=) "ach_debit" (apiErrorsSource'AchDebit obj) GHC.Base.<> ((Data.Aeson..=) "address_city" (apiErrorsSource'AddressCity obj) GHC.Base.<> ((Data.Aeson..=) "address_country" (apiErrorsSource'AddressCountry obj) GHC.Base.<> ((Data.Aeson..=) "address_line1" (apiErrorsSource'AddressLine1 obj) GHC.Base.<> ((Data.Aeson..=) "address_line1_check" (apiErrorsSource'AddressLine1Check obj) GHC.Base.<> ((Data.Aeson..=) "address_line2" (apiErrorsSource'AddressLine2 obj) GHC.Base.<> ((Data.Aeson..=) "address_state" (apiErrorsSource'AddressState obj) GHC.Base.<> ((Data.Aeson..=) "address_zip" (apiErrorsSource'AddressZip obj) GHC.Base.<> ((Data.Aeson..=) "address_zip_check" (apiErrorsSource'AddressZipCheck obj) GHC.Base.<> ((Data.Aeson..=) "alipay" (apiErrorsSource'Alipay obj) GHC.Base.<> ((Data.Aeson..=) "amount" (apiErrorsSource'Amount obj) GHC.Base.<> ((Data.Aeson..=) "available_payout_methods" (apiErrorsSource'AvailablePayoutMethods obj) GHC.Base.<> ((Data.Aeson..=) "bancontact" (apiErrorsSource'Bancontact obj) GHC.Base.<> ((Data.Aeson..=) "bank_name" (apiErrorsSource'BankName obj) GHC.Base.<> ((Data.Aeson..=) "brand" (apiErrorsSource'Brand obj) GHC.Base.<> ((Data.Aeson..=) "card" (apiErrorsSource'Card obj) GHC.Base.<> ((Data.Aeson..=) "card_present" (apiErrorsSource'CardPresent obj) GHC.Base.<> ((Data.Aeson..=) "client_secret" (apiErrorsSource'ClientSecret obj) GHC.Base.<> ((Data.Aeson..=) "code_verification" (apiErrorsSource'CodeVerification obj) GHC.Base.<> ((Data.Aeson..=) "country" (apiErrorsSource'Country obj) GHC.Base.<> ((Data.Aeson..=) "created" (apiErrorsSource'Created obj) GHC.Base.<> ((Data.Aeson..=) "currency" (apiErrorsSource'Currency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (apiErrorsSource'Customer obj) GHC.Base.<> ((Data.Aeson..=) "cvc_check" (apiErrorsSource'CvcCheck obj) GHC.Base.<> ((Data.Aeson..=) "default_for_currency" (apiErrorsSource'DefaultForCurrency obj) GHC.Base.<> ((Data.Aeson..=) "dynamic_last4" (apiErrorsSource'DynamicLast4 obj) GHC.Base.<> ((Data.Aeson..=) "eps" (apiErrorsSource'Eps obj) GHC.Base.<> ((Data.Aeson..=) "exp_month" (apiErrorsSource'ExpMonth obj) GHC.Base.<> ((Data.Aeson..=) "exp_year" (apiErrorsSource'ExpYear obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (apiErrorsSource'Fingerprint obj) GHC.Base.<> ((Data.Aeson..=) "flow" (apiErrorsSource'Flow obj) GHC.Base.<> ((Data.Aeson..=) "funding" (apiErrorsSource'Funding obj) GHC.Base.<> ((Data.Aeson..=) "giropay" (apiErrorsSource'Giropay obj) GHC.Base.<> ((Data.Aeson..=) "id" (apiErrorsSource'Id obj) GHC.Base.<> ((Data.Aeson..=) "ideal" (apiErrorsSource'Ideal obj) GHC.Base.<> ((Data.Aeson..=) "klarna" (apiErrorsSource'Klarna obj) GHC.Base.<> ((Data.Aeson..=) "last4" (apiErrorsSource'Last4 obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (apiErrorsSource'Livemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (apiErrorsSource'Metadata obj) GHC.Base.<> ((Data.Aeson..=) "multibanco" (apiErrorsSource'Multibanco obj) GHC.Base.<> ((Data.Aeson..=) "name" (apiErrorsSource'Name obj) GHC.Base.<> ((Data.Aeson..=) "object" (apiErrorsSource'Object obj) GHC.Base.<> ((Data.Aeson..=) "owner" (apiErrorsSource'Owner obj) GHC.Base.<> ((Data.Aeson..=) "p24" (apiErrorsSource'P24 obj) GHC.Base.<> ((Data.Aeson..=) "receiver" (apiErrorsSource'Receiver obj) GHC.Base.<> ((Data.Aeson..=) "recipient" (apiErrorsSource'Recipient obj) GHC.Base.<> ((Data.Aeson..=) "redirect" (apiErrorsSource'Redirect obj) GHC.Base.<> ((Data.Aeson..=) "routing_number" (apiErrorsSource'RoutingNumber obj) GHC.Base.<> ((Data.Aeson..=) "sepa_debit" (apiErrorsSource'SepaDebit obj) GHC.Base.<> ((Data.Aeson..=) "sofort" (apiErrorsSource'Sofort obj) GHC.Base.<> ((Data.Aeson..=) "source_order" (apiErrorsSource'SourceOrder obj) GHC.Base.<> ((Data.Aeson..=) "statement_descriptor" (apiErrorsSource'StatementDescriptor obj) GHC.Base.<> ((Data.Aeson..=) "status" (apiErrorsSource'Status obj) GHC.Base.<> ((Data.Aeson..=) "three_d_secure" (apiErrorsSource'ThreeDSecure obj) GHC.Base.<> ((Data.Aeson..=) "tokenization_method" (apiErrorsSource'TokenizationMethod obj) GHC.Base.<> ((Data.Aeson..=) "type" (apiErrorsSource'Type obj) GHC.Base.<> ((Data.Aeson..=) "usage" (apiErrorsSource'Usage obj) GHC.Base.<> (Data.Aeson..=) "wechat" (apiErrorsSource'Wechat obj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON ApiErrorsSource' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ApiErrorsSource'" (\obj -> (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((GHC.Base.pure ApiErrorsSource' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_credit_transfer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_state")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "alipay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "available_payout_methods")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bancontact")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bank_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "brand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card_present")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "client_secret")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "code_verification")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cvc_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_for_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dynamic_last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "eps")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "flow")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "funding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "giropay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ideal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "klarna")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "multibanco")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "owner")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "p24")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "receiver")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "recipient")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "redirect")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "routing_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sepa_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sofort")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source_order")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "statement_descriptor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "three_d_secure")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tokenization_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "wechat"))

-- | Define the one-of schema api_errorsSource\'Account\'
--
-- The ID of the account that the bank account is associated with.
data ApiErrorsSource'Account'Variants
  = ApiErrorsSource'Account'Account Account
  | ApiErrorsSource'Account'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ApiErrorsSource'Account'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ApiErrorsSource'Account'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema api_errorsSource\'Available_payout_methods\'
data ApiErrorsSource'AvailablePayoutMethods'
  = ApiErrorsSource'AvailablePayoutMethods'EnumOther Data.Aeson.Types.Internal.Value
  | ApiErrorsSource'AvailablePayoutMethods'EnumTyped Data.Text.Internal.Text
  | ApiErrorsSource'AvailablePayoutMethods'EnumStringInstant
  | ApiErrorsSource'AvailablePayoutMethods'EnumStringStandard
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ApiErrorsSource'AvailablePayoutMethods' where
  toJSON (ApiErrorsSource'AvailablePayoutMethods'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ApiErrorsSource'AvailablePayoutMethods'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ApiErrorsSource'AvailablePayoutMethods'EnumStringInstant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant"
  toJSON (ApiErrorsSource'AvailablePayoutMethods'EnumStringStandard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard"

instance Data.Aeson.FromJSON ApiErrorsSource'AvailablePayoutMethods' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant")
          then ApiErrorsSource'AvailablePayoutMethods'EnumStringInstant
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard")
              then ApiErrorsSource'AvailablePayoutMethods'EnumStringStandard
              else ApiErrorsSource'AvailablePayoutMethods'EnumOther val
      )

-- | Define the one-of schema api_errorsSource\'Customer\'
--
-- The ID of the customer that the bank account is associated with.
data ApiErrorsSource'Customer'Variants
  = ApiErrorsSource'Customer'Customer Customer
  | ApiErrorsSource'Customer'DeletedCustomer DeletedCustomer
  | ApiErrorsSource'Customer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ApiErrorsSource'Customer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ApiErrorsSource'Customer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema api_errorsSource\'Metadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data ApiErrorsSource'Metadata'
  = ApiErrorsSource'Metadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ApiErrorsSource'Metadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON ApiErrorsSource'Metadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ApiErrorsSource'Metadata'" (\obj -> GHC.Base.pure ApiErrorsSource'Metadata')

-- | Defines the enum schema api_errorsSource\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data ApiErrorsSource'Object'
  = ApiErrorsSource'Object'EnumOther Data.Aeson.Types.Internal.Value
  | ApiErrorsSource'Object'EnumTyped Data.Text.Internal.Text
  | ApiErrorsSource'Object'EnumStringBankAccount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ApiErrorsSource'Object' where
  toJSON (ApiErrorsSource'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ApiErrorsSource'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ApiErrorsSource'Object'EnumStringBankAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account"

instance Data.Aeson.FromJSON ApiErrorsSource'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account")
          then ApiErrorsSource'Object'EnumStringBankAccount
          else ApiErrorsSource'Object'EnumOther val
      )

-- | Defines the data type for the schema api_errorsSource\'Owner\'
--
-- Information about the owner of the payment instrument that may be used or required by particular source types.
data ApiErrorsSource'Owner'
  = ApiErrorsSource'Owner'
      { -- | address: Owner\'s address.
        apiErrorsSource'Owner'Address :: (GHC.Maybe.Maybe ApiErrorsSource'Owner'Address'),
        -- | email: Owner\'s email address.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'Email :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Owner\'s full name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | phone: Owner\'s phone number (including extension).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'Phone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_address: Verified owner\'s address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        apiErrorsSource'Owner'VerifiedAddress :: (GHC.Maybe.Maybe ApiErrorsSource'Owner'VerifiedAddress'),
        -- | verified_email: Verified owner\'s email address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'VerifiedEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_name: Verified owner\'s full name. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'VerifiedName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_phone: Verified owner\'s phone number (including extension). Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'VerifiedPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ApiErrorsSource'Owner' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (apiErrorsSource'Owner'Address obj) : (Data.Aeson..=) "email" (apiErrorsSource'Owner'Email obj) : (Data.Aeson..=) "name" (apiErrorsSource'Owner'Name obj) : (Data.Aeson..=) "phone" (apiErrorsSource'Owner'Phone obj) : (Data.Aeson..=) "verified_address" (apiErrorsSource'Owner'VerifiedAddress obj) : (Data.Aeson..=) "verified_email" (apiErrorsSource'Owner'VerifiedEmail obj) : (Data.Aeson..=) "verified_name" (apiErrorsSource'Owner'VerifiedName obj) : (Data.Aeson..=) "verified_phone" (apiErrorsSource'Owner'VerifiedPhone obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (apiErrorsSource'Owner'Address obj) GHC.Base.<> ((Data.Aeson..=) "email" (apiErrorsSource'Owner'Email obj) GHC.Base.<> ((Data.Aeson..=) "name" (apiErrorsSource'Owner'Name obj) GHC.Base.<> ((Data.Aeson..=) "phone" (apiErrorsSource'Owner'Phone obj) GHC.Base.<> ((Data.Aeson..=) "verified_address" (apiErrorsSource'Owner'VerifiedAddress obj) GHC.Base.<> ((Data.Aeson..=) "verified_email" (apiErrorsSource'Owner'VerifiedEmail obj) GHC.Base.<> ((Data.Aeson..=) "verified_name" (apiErrorsSource'Owner'VerifiedName obj) GHC.Base.<> (Data.Aeson..=) "verified_phone" (apiErrorsSource'Owner'VerifiedPhone obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON ApiErrorsSource'Owner' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ApiErrorsSource'Owner'" (\obj -> (((((((GHC.Base.pure ApiErrorsSource'Owner' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_phone"))

-- | Defines the data type for the schema api_errorsSource\'Owner\'Address\'
--
-- Owner\\\'s address.
data ApiErrorsSource'Owner'Address'
  = ApiErrorsSource'Owner'Address'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'Address'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'Address'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'Address'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'Address'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'Address'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'Address'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ApiErrorsSource'Owner'Address' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (apiErrorsSource'Owner'Address'City obj) : (Data.Aeson..=) "country" (apiErrorsSource'Owner'Address'Country obj) : (Data.Aeson..=) "line1" (apiErrorsSource'Owner'Address'Line1 obj) : (Data.Aeson..=) "line2" (apiErrorsSource'Owner'Address'Line2 obj) : (Data.Aeson..=) "postal_code" (apiErrorsSource'Owner'Address'PostalCode obj) : (Data.Aeson..=) "state" (apiErrorsSource'Owner'Address'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (apiErrorsSource'Owner'Address'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (apiErrorsSource'Owner'Address'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (apiErrorsSource'Owner'Address'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (apiErrorsSource'Owner'Address'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (apiErrorsSource'Owner'Address'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (apiErrorsSource'Owner'Address'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON ApiErrorsSource'Owner'Address' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ApiErrorsSource'Owner'Address'" (\obj -> (((((GHC.Base.pure ApiErrorsSource'Owner'Address' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema api_errorsSource\'Owner\'Verified_address\'
--
-- Verified owner\\\'s address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
data ApiErrorsSource'Owner'VerifiedAddress'
  = ApiErrorsSource'Owner'VerifiedAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'VerifiedAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'VerifiedAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'VerifiedAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'VerifiedAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'VerifiedAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        apiErrorsSource'Owner'VerifiedAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ApiErrorsSource'Owner'VerifiedAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (apiErrorsSource'Owner'VerifiedAddress'City obj) : (Data.Aeson..=) "country" (apiErrorsSource'Owner'VerifiedAddress'Country obj) : (Data.Aeson..=) "line1" (apiErrorsSource'Owner'VerifiedAddress'Line1 obj) : (Data.Aeson..=) "line2" (apiErrorsSource'Owner'VerifiedAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (apiErrorsSource'Owner'VerifiedAddress'PostalCode obj) : (Data.Aeson..=) "state" (apiErrorsSource'Owner'VerifiedAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (apiErrorsSource'Owner'VerifiedAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (apiErrorsSource'Owner'VerifiedAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (apiErrorsSource'Owner'VerifiedAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (apiErrorsSource'Owner'VerifiedAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (apiErrorsSource'Owner'VerifiedAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (apiErrorsSource'Owner'VerifiedAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON ApiErrorsSource'Owner'VerifiedAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ApiErrorsSource'Owner'VerifiedAddress'" (\obj -> (((((GHC.Base.pure ApiErrorsSource'Owner'VerifiedAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Define the one-of schema api_errorsSource\'Recipient\'
--
-- The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
data ApiErrorsSource'Recipient'Variants
  = ApiErrorsSource'Recipient'Recipient Recipient
  | ApiErrorsSource'Recipient'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ApiErrorsSource'Recipient'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ApiErrorsSource'Recipient'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema api_errorsSource\'Type\'
--
-- The \`type\` of the source. The \`type\` is a payment method, one of \`ach_credit_transfer\`, \`ach_debit\`, \`alipay\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`multibanco\`, \`klarna\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`three_d_secure\`, or \`wechat\`. An additional hash is included on the source with a name matching this value. It contains additional information specific to the [payment method](https:\/\/stripe.com\/docs\/sources) used.
data ApiErrorsSource'Type'
  = ApiErrorsSource'Type'EnumOther Data.Aeson.Types.Internal.Value
  | ApiErrorsSource'Type'EnumTyped Data.Text.Internal.Text
  | ApiErrorsSource'Type'EnumStringAchCreditTransfer
  | ApiErrorsSource'Type'EnumStringAchDebit
  | ApiErrorsSource'Type'EnumStringAlipay
  | ApiErrorsSource'Type'EnumStringBancontact
  | ApiErrorsSource'Type'EnumStringCard
  | ApiErrorsSource'Type'EnumStringCardPresent
  | ApiErrorsSource'Type'EnumStringEps
  | ApiErrorsSource'Type'EnumStringGiropay
  | ApiErrorsSource'Type'EnumStringIdeal
  | ApiErrorsSource'Type'EnumStringKlarna
  | ApiErrorsSource'Type'EnumStringMultibanco
  | ApiErrorsSource'Type'EnumStringP24
  | ApiErrorsSource'Type'EnumStringSepaDebit
  | ApiErrorsSource'Type'EnumStringSofort
  | ApiErrorsSource'Type'EnumStringThreeDSecure
  | ApiErrorsSource'Type'EnumStringWechat
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ApiErrorsSource'Type' where
  toJSON (ApiErrorsSource'Type'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ApiErrorsSource'Type'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ApiErrorsSource'Type'EnumStringAchCreditTransfer) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_credit_transfer"
  toJSON (ApiErrorsSource'Type'EnumStringAchDebit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_debit"
  toJSON (ApiErrorsSource'Type'EnumStringAlipay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay"
  toJSON (ApiErrorsSource'Type'EnumStringBancontact) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bancontact"
  toJSON (ApiErrorsSource'Type'EnumStringCard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card"
  toJSON (ApiErrorsSource'Type'EnumStringCardPresent) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_present"
  toJSON (ApiErrorsSource'Type'EnumStringEps) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eps"
  toJSON (ApiErrorsSource'Type'EnumStringGiropay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "giropay"
  toJSON (ApiErrorsSource'Type'EnumStringIdeal) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ideal"
  toJSON (ApiErrorsSource'Type'EnumStringKlarna) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "klarna"
  toJSON (ApiErrorsSource'Type'EnumStringMultibanco) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "multibanco"
  toJSON (ApiErrorsSource'Type'EnumStringP24) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "p24"
  toJSON (ApiErrorsSource'Type'EnumStringSepaDebit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sepa_debit"
  toJSON (ApiErrorsSource'Type'EnumStringSofort) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sofort"
  toJSON (ApiErrorsSource'Type'EnumStringThreeDSecure) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "three_d_secure"
  toJSON (ApiErrorsSource'Type'EnumStringWechat) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wechat"

instance Data.Aeson.FromJSON ApiErrorsSource'Type' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_credit_transfer")
          then ApiErrorsSource'Type'EnumStringAchCreditTransfer
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_debit")
              then ApiErrorsSource'Type'EnumStringAchDebit
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay")
                  then ApiErrorsSource'Type'EnumStringAlipay
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bancontact")
                      then ApiErrorsSource'Type'EnumStringBancontact
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card")
                          then ApiErrorsSource'Type'EnumStringCard
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_present")
                              then ApiErrorsSource'Type'EnumStringCardPresent
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eps")
                                  then ApiErrorsSource'Type'EnumStringEps
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "giropay")
                                      then ApiErrorsSource'Type'EnumStringGiropay
                                      else
                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ideal")
                                          then ApiErrorsSource'Type'EnumStringIdeal
                                          else
                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "klarna")
                                              then ApiErrorsSource'Type'EnumStringKlarna
                                              else
                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "multibanco")
                                                  then ApiErrorsSource'Type'EnumStringMultibanco
                                                  else
                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "p24")
                                                      then ApiErrorsSource'Type'EnumStringP24
                                                      else
                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sepa_debit")
                                                          then ApiErrorsSource'Type'EnumStringSepaDebit
                                                          else
                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sofort")
                                                              then ApiErrorsSource'Type'EnumStringSofort
                                                              else
                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "three_d_secure")
                                                                  then ApiErrorsSource'Type'EnumStringThreeDSecure
                                                                  else
                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wechat")
                                                                      then ApiErrorsSource'Type'EnumStringWechat
                                                                      else ApiErrorsSource'Type'EnumOther val
      )

-- | Defines the enum schema api_errorsType\'
--
-- The type of error returned. One of \`api_connection_error\`, \`api_error\`, \`authentication_error\`, \`card_error\`, \`idempotency_error\`, \`invalid_request_error\`, or \`rate_limit_error\`
data ApiErrorsType'
  = ApiErrorsType'EnumOther Data.Aeson.Types.Internal.Value
  | ApiErrorsType'EnumTyped Data.Text.Internal.Text
  | ApiErrorsType'EnumStringApiConnectionError
  | ApiErrorsType'EnumStringApiError
  | ApiErrorsType'EnumStringAuthenticationError
  | ApiErrorsType'EnumStringCardError
  | ApiErrorsType'EnumStringIdempotencyError
  | ApiErrorsType'EnumStringInvalidRequestError
  | ApiErrorsType'EnumStringRateLimitError
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ApiErrorsType' where
  toJSON (ApiErrorsType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ApiErrorsType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ApiErrorsType'EnumStringApiConnectionError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "api_connection_error"
  toJSON (ApiErrorsType'EnumStringApiError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "api_error"
  toJSON (ApiErrorsType'EnumStringAuthenticationError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "authentication_error"
  toJSON (ApiErrorsType'EnumStringCardError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_error"
  toJSON (ApiErrorsType'EnumStringIdempotencyError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "idempotency_error"
  toJSON (ApiErrorsType'EnumStringInvalidRequestError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invalid_request_error"
  toJSON (ApiErrorsType'EnumStringRateLimitError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "rate_limit_error"

instance Data.Aeson.FromJSON ApiErrorsType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "api_connection_error")
          then ApiErrorsType'EnumStringApiConnectionError
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "api_error")
              then ApiErrorsType'EnumStringApiError
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "authentication_error")
                  then ApiErrorsType'EnumStringAuthenticationError
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_error")
                      then ApiErrorsType'EnumStringCardError
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "idempotency_error")
                          then ApiErrorsType'EnumStringIdempotencyError
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invalid_request_error")
                              then ApiErrorsType'EnumStringInvalidRequestError
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "rate_limit_error")
                                  then ApiErrorsType'EnumStringRateLimitError
                                  else ApiErrorsType'EnumOther val
      )

-- | Defines the data type for the schema application_fee
data ApplicationFee
  = ApplicationFee
      { -- | account: ID of the Stripe account this fee was taken from.
        applicationFeeAccount :: ApplicationFeeAccount'Variants,
        -- | amount: Amount earned, in %s.
        applicationFeeAmount :: GHC.Integer.Type.Integer,
        -- | amount_refunded: Amount in %s refunded (can be less than the amount attribute on the fee if a partial refund was issued)
        applicationFeeAmountRefunded :: GHC.Integer.Type.Integer,
        -- | application: ID of the Connect application that earned the fee.
        applicationFeeApplication :: ApplicationFeeApplication'Variants,
        -- | balance_transaction: Balance transaction that describes the impact of this collected application fee on your account balance (not including refunds).
        applicationFeeBalanceTransaction :: (GHC.Maybe.Maybe ApplicationFeeBalanceTransaction'Variants),
        -- | charge: ID of the charge that the application fee was taken from.
        applicationFeeCharge :: ApplicationFeeCharge'Variants,
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        applicationFeeCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        applicationFeeCurrency :: Data.Text.Internal.Text,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        applicationFeeId :: 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.
        applicationFeeLivemode :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        applicationFeeObject :: ApplicationFeeObject',
        -- | originating_transaction: ID of the corresponding charge on the platform account, if this fee was the result of a charge using the \`destination\` parameter.
        applicationFeeOriginatingTransaction :: (GHC.Maybe.Maybe ApplicationFeeOriginatingTransaction'Variants),
        -- | refunded: Whether the fee has been fully refunded. If the fee is only partially refunded, this attribute will still be false.
        applicationFeeRefunded :: GHC.Types.Bool,
        -- | refunds: A list of refunds that have been applied to the fee.
        applicationFeeRefunds :: ApplicationFeeRefunds'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ApplicationFee where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (applicationFeeAccount obj) : (Data.Aeson..=) "amount" (applicationFeeAmount obj) : (Data.Aeson..=) "amount_refunded" (applicationFeeAmountRefunded obj) : (Data.Aeson..=) "application" (applicationFeeApplication obj) : (Data.Aeson..=) "balance_transaction" (applicationFeeBalanceTransaction obj) : (Data.Aeson..=) "charge" (applicationFeeCharge obj) : (Data.Aeson..=) "created" (applicationFeeCreated obj) : (Data.Aeson..=) "currency" (applicationFeeCurrency obj) : (Data.Aeson..=) "id" (applicationFeeId obj) : (Data.Aeson..=) "livemode" (applicationFeeLivemode obj) : (Data.Aeson..=) "object" (applicationFeeObject obj) : (Data.Aeson..=) "originating_transaction" (applicationFeeOriginatingTransaction obj) : (Data.Aeson..=) "refunded" (applicationFeeRefunded obj) : (Data.Aeson..=) "refunds" (applicationFeeRefunds obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (applicationFeeAccount obj) GHC.Base.<> ((Data.Aeson..=) "amount" (applicationFeeAmount obj) GHC.Base.<> ((Data.Aeson..=) "amount_refunded" (applicationFeeAmountRefunded obj) GHC.Base.<> ((Data.Aeson..=) "application" (applicationFeeApplication obj) GHC.Base.<> ((Data.Aeson..=) "balance_transaction" (applicationFeeBalanceTransaction obj) GHC.Base.<> ((Data.Aeson..=) "charge" (applicationFeeCharge obj) GHC.Base.<> ((Data.Aeson..=) "created" (applicationFeeCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (applicationFeeCurrency obj) GHC.Base.<> ((Data.Aeson..=) "id" (applicationFeeId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (applicationFeeLivemode obj) GHC.Base.<> ((Data.Aeson..=) "object" (applicationFeeObject obj) GHC.Base.<> ((Data.Aeson..=) "originating_transaction" (applicationFeeOriginatingTransaction obj) GHC.Base.<> ((Data.Aeson..=) "refunded" (applicationFeeRefunded obj) GHC.Base.<> (Data.Aeson..=) "refunds" (applicationFeeRefunds obj))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON ApplicationFee where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ApplicationFee" (\obj -> (((((((((((((GHC.Base.pure ApplicationFee GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount_refunded")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "application")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "balance_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "charge")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "originating_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "refunded")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "refunds"))

-- | Define the one-of schema application_feeAccount\'
--
-- ID of the Stripe account this fee was taken from.
data ApplicationFeeAccount'Variants
  = ApplicationFeeAccount'Account Account
  | ApplicationFeeAccount'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ApplicationFeeAccount'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ApplicationFeeAccount'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema application_feeApplication\'
--
-- ID of the Connect application that earned the fee.
data ApplicationFeeApplication'Variants
  = ApplicationFeeApplication'Application Application
  | ApplicationFeeApplication'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ApplicationFeeApplication'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ApplicationFeeApplication'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema application_feeBalance_transaction\'
--
-- Balance transaction that describes the impact of this collected application fee on your account balance (not including refunds).
data ApplicationFeeBalanceTransaction'Variants
  = ApplicationFeeBalanceTransaction'BalanceTransaction BalanceTransaction
  | ApplicationFeeBalanceTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ApplicationFeeBalanceTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ApplicationFeeBalanceTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema application_feeCharge\'
--
-- ID of the charge that the application fee was taken from.
data ApplicationFeeCharge'Variants
  = ApplicationFeeCharge'Charge Charge
  | ApplicationFeeCharge'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ApplicationFeeCharge'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ApplicationFeeCharge'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema application_feeObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data ApplicationFeeObject'
  = ApplicationFeeObject'EnumOther Data.Aeson.Types.Internal.Value
  | ApplicationFeeObject'EnumTyped Data.Text.Internal.Text
  | ApplicationFeeObject'EnumStringApplicationFee
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ApplicationFeeObject' where
  toJSON (ApplicationFeeObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ApplicationFeeObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ApplicationFeeObject'EnumStringApplicationFee) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "application_fee"

instance Data.Aeson.FromJSON ApplicationFeeObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "application_fee")
          then ApplicationFeeObject'EnumStringApplicationFee
          else ApplicationFeeObject'EnumOther val
      )

-- | Define the one-of schema application_feeOriginating_transaction\'
--
-- ID of the corresponding charge on the platform account, if this fee was the result of a charge using the \`destination\` parameter.
data ApplicationFeeOriginatingTransaction'Variants
  = ApplicationFeeOriginatingTransaction'Charge Charge
  | ApplicationFeeOriginatingTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ApplicationFeeOriginatingTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ApplicationFeeOriginatingTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema application_feeRefunds\'
--
-- A list of refunds that have been applied to the fee.
data ApplicationFeeRefunds'
  = ApplicationFeeRefunds'
      { -- | data: Details about each object.
        applicationFeeRefunds'Data :: ([] FeeRefund),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        applicationFeeRefunds'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        applicationFeeRefunds'Object :: ApplicationFeeRefunds'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        applicationFeeRefunds'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ApplicationFeeRefunds' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (applicationFeeRefunds'Data obj) : (Data.Aeson..=) "has_more" (applicationFeeRefunds'HasMore obj) : (Data.Aeson..=) "object" (applicationFeeRefunds'Object obj) : (Data.Aeson..=) "url" (applicationFeeRefunds'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (applicationFeeRefunds'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (applicationFeeRefunds'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (applicationFeeRefunds'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (applicationFeeRefunds'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON ApplicationFeeRefunds' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ApplicationFeeRefunds'" (\obj -> (((GHC.Base.pure ApplicationFeeRefunds' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema application_feeRefunds\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data ApplicationFeeRefunds'Object'
  = ApplicationFeeRefunds'Object'EnumOther Data.Aeson.Types.Internal.Value
  | ApplicationFeeRefunds'Object'EnumTyped Data.Text.Internal.Text
  | ApplicationFeeRefunds'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ApplicationFeeRefunds'Object' where
  toJSON (ApplicationFeeRefunds'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ApplicationFeeRefunds'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ApplicationFeeRefunds'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON ApplicationFeeRefunds'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then ApplicationFeeRefunds'Object'EnumStringList
          else ApplicationFeeRefunds'Object'EnumOther val
      )

-- | Defines the data type for the schema balance_transaction
--
-- Balance transactions represent funds moving through your Stripe account.
-- They\'re created for every type of transaction that comes into or flows out of your Stripe account balance.
--
-- Related guide: [Balance Transaction Types](https:\/\/stripe.com\/docs\/reports\/balance-transaction-types).
data BalanceTransaction
  = BalanceTransaction
      { -- | amount: Gross amount of the transaction, in %s.
        balanceTransactionAmount :: GHC.Integer.Type.Integer,
        -- | available_on: The date the transaction\'s net funds will become available in the Stripe balance.
        balanceTransactionAvailableOn :: GHC.Integer.Type.Integer,
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        balanceTransactionCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        balanceTransactionCurrency :: Data.Text.Internal.Text,
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        balanceTransactionDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | exchange_rate: The exchange rate used, if applicable, for this transaction. Specifically, if money was converted from currency A to currency B, then the \`amount\` in currency A, times \`exchange_rate\`, would be the \`amount\` in currency B. For example, suppose you charged a customer 10.00 EUR. Then the PaymentIntent\'s \`amount\` would be \`1000\` and \`currency\` would be \`eur\`. Suppose this was converted into 12.34 USD in your Stripe account. Then the BalanceTransaction\'s \`amount\` would be \`1234\`, \`currency\` would be \`usd\`, and \`exchange_rate\` would be \`1.234\`.
        balanceTransactionExchangeRate :: (GHC.Maybe.Maybe GHC.Types.Double),
        -- | fee: Fees (in %s) paid for this transaction.
        balanceTransactionFee :: GHC.Integer.Type.Integer,
        -- | fee_details: Detailed breakdown of fees (in %s) paid for this transaction.
        balanceTransactionFeeDetails :: ([] Fee),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        balanceTransactionId :: Data.Text.Internal.Text,
        -- | net: Net amount of the transaction, in %s.
        balanceTransactionNet :: GHC.Integer.Type.Integer,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        balanceTransactionObject :: BalanceTransactionObject',
        -- | reporting_category: [Learn more](https:\/\/stripe.com\/docs\/reports\/reporting-categories) about how reporting categories can help you understand balance transactions from an accounting perspective.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        balanceTransactionReportingCategory :: Data.Text.Internal.Text,
        -- | source: The Stripe object to which this transaction is related.
        balanceTransactionSource :: (GHC.Maybe.Maybe BalanceTransactionSource'Variants),
        -- | status: If the transaction\'s net funds are available in the Stripe balance yet. Either \`available\` or \`pending\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        balanceTransactionStatus :: Data.Text.Internal.Text,
        -- | type: Transaction type: \`adjustment\`, \`advance\`, \`advance_funding\`, \`application_fee\`, \`application_fee_refund\`, \`charge\`, \`connect_collection_transfer\`, \`issuing_authorization_hold\`, \`issuing_authorization_release\`, \`issuing_transaction\`, \`payment\`, \`payment_failure_refund\`, \`payment_refund\`, \`payout\`, \`payout_cancel\`, \`payout_failure\`, \`refund\`, \`refund_failure\`, \`reserve_transaction\`, \`reserved_funds\`, \`stripe_fee\`, \`stripe_fx_fee\`, \`tax_fee\`, \`topup\`, \`topup_reversal\`, \`transfer\`, \`transfer_cancel\`, \`transfer_failure\`, or \`transfer_refund\`. [Learn more](https:\/\/stripe.com\/docs\/reports\/balance-transaction-types) about balance transaction types and what they represent. If you are looking to classify transactions for accounting purposes, you might want to consider \`reporting_category\` instead.
        balanceTransactionType :: BalanceTransactionType'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON BalanceTransaction where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (balanceTransactionAmount obj) : (Data.Aeson..=) "available_on" (balanceTransactionAvailableOn obj) : (Data.Aeson..=) "created" (balanceTransactionCreated obj) : (Data.Aeson..=) "currency" (balanceTransactionCurrency obj) : (Data.Aeson..=) "description" (balanceTransactionDescription obj) : (Data.Aeson..=) "exchange_rate" (balanceTransactionExchangeRate obj) : (Data.Aeson..=) "fee" (balanceTransactionFee obj) : (Data.Aeson..=) "fee_details" (balanceTransactionFeeDetails obj) : (Data.Aeson..=) "id" (balanceTransactionId obj) : (Data.Aeson..=) "net" (balanceTransactionNet obj) : (Data.Aeson..=) "object" (balanceTransactionObject obj) : (Data.Aeson..=) "reporting_category" (balanceTransactionReportingCategory obj) : (Data.Aeson..=) "source" (balanceTransactionSource obj) : (Data.Aeson..=) "status" (balanceTransactionStatus obj) : (Data.Aeson..=) "type" (balanceTransactionType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (balanceTransactionAmount obj) GHC.Base.<> ((Data.Aeson..=) "available_on" (balanceTransactionAvailableOn obj) GHC.Base.<> ((Data.Aeson..=) "created" (balanceTransactionCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (balanceTransactionCurrency obj) GHC.Base.<> ((Data.Aeson..=) "description" (balanceTransactionDescription obj) GHC.Base.<> ((Data.Aeson..=) "exchange_rate" (balanceTransactionExchangeRate obj) GHC.Base.<> ((Data.Aeson..=) "fee" (balanceTransactionFee obj) GHC.Base.<> ((Data.Aeson..=) "fee_details" (balanceTransactionFeeDetails obj) GHC.Base.<> ((Data.Aeson..=) "id" (balanceTransactionId obj) GHC.Base.<> ((Data.Aeson..=) "net" (balanceTransactionNet obj) GHC.Base.<> ((Data.Aeson..=) "object" (balanceTransactionObject obj) GHC.Base.<> ((Data.Aeson..=) "reporting_category" (balanceTransactionReportingCategory obj) GHC.Base.<> ((Data.Aeson..=) "source" (balanceTransactionSource obj) GHC.Base.<> ((Data.Aeson..=) "status" (balanceTransactionStatus obj) GHC.Base.<> (Data.Aeson..=) "type" (balanceTransactionType obj)))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON BalanceTransaction where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "BalanceTransaction" (\obj -> ((((((((((((((GHC.Base.pure BalanceTransaction GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "available_on")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exchange_rate")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "fee")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "fee_details")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "net")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "reporting_category")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type"))

-- | Defines the enum schema balance_transactionObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data BalanceTransactionObject'
  = BalanceTransactionObject'EnumOther Data.Aeson.Types.Internal.Value
  | BalanceTransactionObject'EnumTyped Data.Text.Internal.Text
  | BalanceTransactionObject'EnumStringBalanceTransaction
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON BalanceTransactionObject' where
  toJSON (BalanceTransactionObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (BalanceTransactionObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (BalanceTransactionObject'EnumStringBalanceTransaction) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "balance_transaction"

instance Data.Aeson.FromJSON BalanceTransactionObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "balance_transaction")
          then BalanceTransactionObject'EnumStringBalanceTransaction
          else BalanceTransactionObject'EnumOther val
      )

-- | Define the one-of schema balance_transactionSource\'
--
-- The Stripe object to which this transaction is related.
data BalanceTransactionSource'Variants
  = BalanceTransactionSource'ApplicationFee ApplicationFee
  | BalanceTransactionSource'Charge Charge
  | BalanceTransactionSource'ConnectCollectionTransfer ConnectCollectionTransfer
  | BalanceTransactionSource'Dispute Dispute
  | BalanceTransactionSource'FeeRefund FeeRefund
  | BalanceTransactionSource'Issuing'authorization Issuing'authorization
  | BalanceTransactionSource'Issuing'transaction Issuing'transaction
  | BalanceTransactionSource'Payout Payout
  | BalanceTransactionSource'PlatformTaxFee PlatformTaxFee
  | BalanceTransactionSource'Refund Refund
  | BalanceTransactionSource'ReserveTransaction ReserveTransaction
  | BalanceTransactionSource'TaxDeductedAtSource TaxDeductedAtSource
  | BalanceTransactionSource'Topup Topup
  | BalanceTransactionSource'Transfer Transfer
  | BalanceTransactionSource'TransferReversal TransferReversal
  | BalanceTransactionSource'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON BalanceTransactionSource'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON BalanceTransactionSource'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema balance_transactionType\'
--
-- Transaction type: \`adjustment\`, \`advance\`, \`advance_funding\`, \`application_fee\`, \`application_fee_refund\`, \`charge\`, \`connect_collection_transfer\`, \`issuing_authorization_hold\`, \`issuing_authorization_release\`, \`issuing_transaction\`, \`payment\`, \`payment_failure_refund\`, \`payment_refund\`, \`payout\`, \`payout_cancel\`, \`payout_failure\`, \`refund\`, \`refund_failure\`, \`reserve_transaction\`, \`reserved_funds\`, \`stripe_fee\`, \`stripe_fx_fee\`, \`tax_fee\`, \`topup\`, \`topup_reversal\`, \`transfer\`, \`transfer_cancel\`, \`transfer_failure\`, or \`transfer_refund\`. [Learn more](https:\/\/stripe.com\/docs\/reports\/balance-transaction-types) about balance transaction types and what they represent. If you are looking to classify transactions for accounting purposes, you might want to consider \`reporting_category\` instead.
data BalanceTransactionType'
  = BalanceTransactionType'EnumOther Data.Aeson.Types.Internal.Value
  | BalanceTransactionType'EnumTyped Data.Text.Internal.Text
  | BalanceTransactionType'EnumStringAdjustment
  | BalanceTransactionType'EnumStringAdvance
  | BalanceTransactionType'EnumStringAdvanceFunding
  | BalanceTransactionType'EnumStringApplicationFee
  | BalanceTransactionType'EnumStringApplicationFeeRefund
  | BalanceTransactionType'EnumStringCharge
  | BalanceTransactionType'EnumStringConnectCollectionTransfer
  | BalanceTransactionType'EnumStringIssuingAuthorizationHold
  | BalanceTransactionType'EnumStringIssuingAuthorizationRelease
  | BalanceTransactionType'EnumStringIssuingTransaction
  | BalanceTransactionType'EnumStringPayment
  | BalanceTransactionType'EnumStringPaymentFailureRefund
  | BalanceTransactionType'EnumStringPaymentRefund
  | BalanceTransactionType'EnumStringPayout
  | BalanceTransactionType'EnumStringPayoutCancel
  | BalanceTransactionType'EnumStringPayoutFailure
  | BalanceTransactionType'EnumStringRefund
  | BalanceTransactionType'EnumStringRefundFailure
  | BalanceTransactionType'EnumStringReserveTransaction
  | BalanceTransactionType'EnumStringReservedFunds
  | BalanceTransactionType'EnumStringStripeFee
  | BalanceTransactionType'EnumStringStripeFxFee
  | BalanceTransactionType'EnumStringTaxFee
  | BalanceTransactionType'EnumStringTopup
  | BalanceTransactionType'EnumStringTopupReversal
  | BalanceTransactionType'EnumStringTransfer
  | BalanceTransactionType'EnumStringTransferCancel
  | BalanceTransactionType'EnumStringTransferFailure
  | BalanceTransactionType'EnumStringTransferRefund
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON BalanceTransactionType' where
  toJSON (BalanceTransactionType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (BalanceTransactionType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (BalanceTransactionType'EnumStringAdjustment) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "adjustment"
  toJSON (BalanceTransactionType'EnumStringAdvance) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "advance"
  toJSON (BalanceTransactionType'EnumStringAdvanceFunding) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "advance_funding"
  toJSON (BalanceTransactionType'EnumStringApplicationFee) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "application_fee"
  toJSON (BalanceTransactionType'EnumStringApplicationFeeRefund) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "application_fee_refund"
  toJSON (BalanceTransactionType'EnumStringCharge) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charge"
  toJSON (BalanceTransactionType'EnumStringConnectCollectionTransfer) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "connect_collection_transfer"
  toJSON (BalanceTransactionType'EnumStringIssuingAuthorizationHold) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing_authorization_hold"
  toJSON (BalanceTransactionType'EnumStringIssuingAuthorizationRelease) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing_authorization_release"
  toJSON (BalanceTransactionType'EnumStringIssuingTransaction) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing_transaction"
  toJSON (BalanceTransactionType'EnumStringPayment) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payment"
  toJSON (BalanceTransactionType'EnumStringPaymentFailureRefund) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payment_failure_refund"
  toJSON (BalanceTransactionType'EnumStringPaymentRefund) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payment_refund"
  toJSON (BalanceTransactionType'EnumStringPayout) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payout"
  toJSON (BalanceTransactionType'EnumStringPayoutCancel) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payout_cancel"
  toJSON (BalanceTransactionType'EnumStringPayoutFailure) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payout_failure"
  toJSON (BalanceTransactionType'EnumStringRefund) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "refund"
  toJSON (BalanceTransactionType'EnumStringRefundFailure) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "refund_failure"
  toJSON (BalanceTransactionType'EnumStringReserveTransaction) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "reserve_transaction"
  toJSON (BalanceTransactionType'EnumStringReservedFunds) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "reserved_funds"
  toJSON (BalanceTransactionType'EnumStringStripeFee) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stripe_fee"
  toJSON (BalanceTransactionType'EnumStringStripeFxFee) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stripe_fx_fee"
  toJSON (BalanceTransactionType'EnumStringTaxFee) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_fee"
  toJSON (BalanceTransactionType'EnumStringTopup) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "topup"
  toJSON (BalanceTransactionType'EnumStringTopupReversal) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "topup_reversal"
  toJSON (BalanceTransactionType'EnumStringTransfer) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transfer"
  toJSON (BalanceTransactionType'EnumStringTransferCancel) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transfer_cancel"
  toJSON (BalanceTransactionType'EnumStringTransferFailure) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transfer_failure"
  toJSON (BalanceTransactionType'EnumStringTransferRefund) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transfer_refund"

instance Data.Aeson.FromJSON BalanceTransactionType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "adjustment")
          then BalanceTransactionType'EnumStringAdjustment
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "advance")
              then BalanceTransactionType'EnumStringAdvance
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "advance_funding")
                  then BalanceTransactionType'EnumStringAdvanceFunding
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "application_fee")
                      then BalanceTransactionType'EnumStringApplicationFee
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "application_fee_refund")
                          then BalanceTransactionType'EnumStringApplicationFeeRefund
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charge")
                              then BalanceTransactionType'EnumStringCharge
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "connect_collection_transfer")
                                  then BalanceTransactionType'EnumStringConnectCollectionTransfer
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing_authorization_hold")
                                      then BalanceTransactionType'EnumStringIssuingAuthorizationHold
                                      else
                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing_authorization_release")
                                          then BalanceTransactionType'EnumStringIssuingAuthorizationRelease
                                          else
                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing_transaction")
                                              then BalanceTransactionType'EnumStringIssuingTransaction
                                              else
                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payment")
                                                  then BalanceTransactionType'EnumStringPayment
                                                  else
                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payment_failure_refund")
                                                      then BalanceTransactionType'EnumStringPaymentFailureRefund
                                                      else
                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payment_refund")
                                                          then BalanceTransactionType'EnumStringPaymentRefund
                                                          else
                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payout")
                                                              then BalanceTransactionType'EnumStringPayout
                                                              else
                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payout_cancel")
                                                                  then BalanceTransactionType'EnumStringPayoutCancel
                                                                  else
                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payout_failure")
                                                                      then BalanceTransactionType'EnumStringPayoutFailure
                                                                      else
                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "refund")
                                                                          then BalanceTransactionType'EnumStringRefund
                                                                          else
                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "refund_failure")
                                                                              then BalanceTransactionType'EnumStringRefundFailure
                                                                              else
                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "reserve_transaction")
                                                                                  then BalanceTransactionType'EnumStringReserveTransaction
                                                                                  else
                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "reserved_funds")
                                                                                      then BalanceTransactionType'EnumStringReservedFunds
                                                                                      else
                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stripe_fee")
                                                                                          then BalanceTransactionType'EnumStringStripeFee
                                                                                          else
                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stripe_fx_fee")
                                                                                              then BalanceTransactionType'EnumStringStripeFxFee
                                                                                              else
                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_fee")
                                                                                                  then BalanceTransactionType'EnumStringTaxFee
                                                                                                  else
                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "topup")
                                                                                                      then BalanceTransactionType'EnumStringTopup
                                                                                                      else
                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "topup_reversal")
                                                                                                          then BalanceTransactionType'EnumStringTopupReversal
                                                                                                          else
                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transfer")
                                                                                                              then BalanceTransactionType'EnumStringTransfer
                                                                                                              else
                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transfer_cancel")
                                                                                                                  then BalanceTransactionType'EnumStringTransferCancel
                                                                                                                  else
                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transfer_failure")
                                                                                                                      then BalanceTransactionType'EnumStringTransferFailure
                                                                                                                      else
                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transfer_refund")
                                                                                                                          then BalanceTransactionType'EnumStringTransferRefund
                                                                                                                          else BalanceTransactionType'EnumOther val
      )

-- | Defines the data type for the schema bank_account
--
-- These bank accounts are payment methods on \`Customer\` objects.
--
-- On the other hand [External Accounts](https:\/\/stripe.com\/docs\/api\#external_accounts) are transfer
-- destinations on \`Account\` objects for [Custom accounts](https:\/\/stripe.com\/docs\/connect\/custom-accounts).
-- They can be bank accounts or debit cards as well, and are documented in the links above.
--
-- Related guide: [Processing ACH & Bank Transfers](https:\/\/stripe.com\/docs\/payments\/ach-bank-transfers).
data BankAccount
  = BankAccount
      { -- | account: The ID of the account that the bank account is associated with.
        bankAccountAccount :: (GHC.Maybe.Maybe BankAccountAccount'Variants),
        -- | account_holder_name: The name of the person or business that owns the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        bankAccountAccountHolderName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | account_holder_type: The type of entity that holds the account. This can be either \`individual\` or \`company\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        bankAccountAccountHolderType :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | bank_name: Name of the bank associated with the routing number (e.g., \`WELLS FARGO\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        bankAccountBankName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter ISO code representing the country the bank account is located in.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        bankAccountCountry :: Data.Text.Internal.Text,
        -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/payouts) paid out to the bank account.
        bankAccountCurrency :: Data.Text.Internal.Text,
        -- | customer: The ID of the customer that the bank account is associated with.
        bankAccountCustomer :: (GHC.Maybe.Maybe BankAccountCustomer'Variants),
        -- | default_for_currency: Whether this bank account is the default external account for its currency.
        bankAccountDefaultForCurrency :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | fingerprint: Uniquely identifies this particular bank account. You can use this attribute to check whether two bank accounts are the same.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        bankAccountFingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        bankAccountId :: Data.Text.Internal.Text,
        -- | last4: The last four digits of the bank account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        bankAccountLast4 :: Data.Text.Internal.Text,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        bankAccountMetadata :: (GHC.Maybe.Maybe BankAccountMetadata'),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        bankAccountObject :: BankAccountObject',
        -- | routing_number: The routing transit number for the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        bankAccountRoutingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: For bank accounts, possible values are \`new\`, \`validated\`, \`verified\`, \`verification_failed\`, or \`errored\`. A bank account that hasn\'t had any activity or validation performed is \`new\`. If Stripe can determine that the bank account exists, its status will be \`validated\`. Note that there often isn’t enough information to know (e.g., for smaller credit unions), and the validation is not always run. If customer bank account verification has succeeded, the bank account status will be \`verified\`. If the verification failed for any reason, such as microdeposit failure, the status will be \`verification_failed\`. If a transfer sent to this bank account fails, we\'ll set the status to \`errored\` and will not continue to send transfers until the bank details are updated.
        --
        -- For external accounts, possible values are \`new\` and \`errored\`. Validations aren\'t run against external accounts because they\'re only used for payouts. This means the other statuses don\'t apply. If a transfer fails, the status is set to \`errored\` and transfers are stopped until account details are updated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        bankAccountStatus :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON BankAccount where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (bankAccountAccount obj) : (Data.Aeson..=) "account_holder_name" (bankAccountAccountHolderName obj) : (Data.Aeson..=) "account_holder_type" (bankAccountAccountHolderType obj) : (Data.Aeson..=) "bank_name" (bankAccountBankName obj) : (Data.Aeson..=) "country" (bankAccountCountry obj) : (Data.Aeson..=) "currency" (bankAccountCurrency obj) : (Data.Aeson..=) "customer" (bankAccountCustomer obj) : (Data.Aeson..=) "default_for_currency" (bankAccountDefaultForCurrency obj) : (Data.Aeson..=) "fingerprint" (bankAccountFingerprint obj) : (Data.Aeson..=) "id" (bankAccountId obj) : (Data.Aeson..=) "last4" (bankAccountLast4 obj) : (Data.Aeson..=) "metadata" (bankAccountMetadata obj) : (Data.Aeson..=) "object" (bankAccountObject obj) : (Data.Aeson..=) "routing_number" (bankAccountRoutingNumber obj) : (Data.Aeson..=) "status" (bankAccountStatus obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (bankAccountAccount obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_name" (bankAccountAccountHolderName obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_type" (bankAccountAccountHolderType obj) GHC.Base.<> ((Data.Aeson..=) "bank_name" (bankAccountBankName obj) GHC.Base.<> ((Data.Aeson..=) "country" (bankAccountCountry obj) GHC.Base.<> ((Data.Aeson..=) "currency" (bankAccountCurrency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (bankAccountCustomer obj) GHC.Base.<> ((Data.Aeson..=) "default_for_currency" (bankAccountDefaultForCurrency obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (bankAccountFingerprint obj) GHC.Base.<> ((Data.Aeson..=) "id" (bankAccountId obj) GHC.Base.<> ((Data.Aeson..=) "last4" (bankAccountLast4 obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (bankAccountMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (bankAccountObject obj) GHC.Base.<> ((Data.Aeson..=) "routing_number" (bankAccountRoutingNumber obj) GHC.Base.<> (Data.Aeson..=) "status" (bankAccountStatus obj)))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON BankAccount where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "BankAccount" (\obj -> ((((((((((((((GHC.Base.pure BankAccount GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bank_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_for_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "routing_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status"))

-- | Define the one-of schema bank_accountAccount\'
--
-- The ID of the account that the bank account is associated with.
data BankAccountAccount'Variants
  = BankAccountAccount'Account Account
  | BankAccountAccount'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON BankAccountAccount'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON BankAccountAccount'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema bank_accountCustomer\'
--
-- The ID of the customer that the bank account is associated with.
data BankAccountCustomer'Variants
  = BankAccountCustomer'Customer Customer
  | BankAccountCustomer'DeletedCustomer DeletedCustomer
  | BankAccountCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON BankAccountCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON BankAccountCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema bank_accountMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data BankAccountMetadata'
  = BankAccountMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON BankAccountMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON BankAccountMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "BankAccountMetadata'" (\obj -> GHC.Base.pure BankAccountMetadata')

-- | Defines the enum schema bank_accountObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data BankAccountObject'
  = BankAccountObject'EnumOther Data.Aeson.Types.Internal.Value
  | BankAccountObject'EnumTyped Data.Text.Internal.Text
  | BankAccountObject'EnumStringBankAccount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON BankAccountObject' where
  toJSON (BankAccountObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (BankAccountObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (BankAccountObject'EnumStringBankAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account"

instance Data.Aeson.FromJSON BankAccountObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account")
          then BankAccountObject'EnumStringBankAccount
          else BankAccountObject'EnumOther val
      )

-- | Defines the data type for the schema billing_details
data BillingDetails
  = BillingDetails
      { -- | address: Billing address.
        billingDetailsAddress :: (GHC.Maybe.Maybe BillingDetailsAddress'),
        -- | email: Email address.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        billingDetailsEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Full name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        billingDetailsName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | phone: Billing phone number (including extension).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        billingDetailsPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON BillingDetails where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (billingDetailsAddress obj) : (Data.Aeson..=) "email" (billingDetailsEmail obj) : (Data.Aeson..=) "name" (billingDetailsName obj) : (Data.Aeson..=) "phone" (billingDetailsPhone obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (billingDetailsAddress obj) GHC.Base.<> ((Data.Aeson..=) "email" (billingDetailsEmail obj) GHC.Base.<> ((Data.Aeson..=) "name" (billingDetailsName obj) GHC.Base.<> (Data.Aeson..=) "phone" (billingDetailsPhone obj))))

instance Data.Aeson.Types.FromJSON.FromJSON BillingDetails where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "BillingDetails" (\obj -> (((GHC.Base.pure BillingDetails GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone"))

-- | Defines the data type for the schema billing_detailsAddress\'
--
-- Billing address.
data BillingDetailsAddress'
  = BillingDetailsAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        billingDetailsAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        billingDetailsAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        billingDetailsAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        billingDetailsAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        billingDetailsAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        billingDetailsAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON BillingDetailsAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (billingDetailsAddress'City obj) : (Data.Aeson..=) "country" (billingDetailsAddress'Country obj) : (Data.Aeson..=) "line1" (billingDetailsAddress'Line1 obj) : (Data.Aeson..=) "line2" (billingDetailsAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (billingDetailsAddress'PostalCode obj) : (Data.Aeson..=) "state" (billingDetailsAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (billingDetailsAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (billingDetailsAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (billingDetailsAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (billingDetailsAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (billingDetailsAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (billingDetailsAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON BillingDetailsAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "BillingDetailsAddress'" (\obj -> (((((GHC.Base.pure BillingDetailsAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema capability
--
-- This is an object representing a capability for a Stripe account.
--
-- Related guide: [Capabilities Overview](https:\/\/stripe.com\/docs\/connect\/capabilities-overview).
data Capability
  = Capability
      { -- | account: The account for which the capability enables functionality.
        capabilityAccount :: CapabilityAccount'Variants,
        -- | id: The identifier for the capability.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        capabilityId :: Data.Text.Internal.Text,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        capabilityObject :: CapabilityObject',
        -- | requested: Whether the capability has been requested.
        capabilityRequested :: GHC.Types.Bool,
        -- | requested_at: Time at which the capability was requested. Measured in seconds since the Unix epoch.
        capabilityRequestedAt :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | requirements:
        capabilityRequirements :: (GHC.Maybe.Maybe AccountCapabilityRequirements),
        -- | status: The status of the capability. Can be \`active\`, \`inactive\`, \`pending\`, or \`unrequested\`.
        capabilityStatus :: CapabilityStatus'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Capability where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (capabilityAccount obj) : (Data.Aeson..=) "id" (capabilityId obj) : (Data.Aeson..=) "object" (capabilityObject obj) : (Data.Aeson..=) "requested" (capabilityRequested obj) : (Data.Aeson..=) "requested_at" (capabilityRequestedAt obj) : (Data.Aeson..=) "requirements" (capabilityRequirements obj) : (Data.Aeson..=) "status" (capabilityStatus obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (capabilityAccount obj) GHC.Base.<> ((Data.Aeson..=) "id" (capabilityId obj) GHC.Base.<> ((Data.Aeson..=) "object" (capabilityObject obj) GHC.Base.<> ((Data.Aeson..=) "requested" (capabilityRequested obj) GHC.Base.<> ((Data.Aeson..=) "requested_at" (capabilityRequestedAt obj) GHC.Base.<> ((Data.Aeson..=) "requirements" (capabilityRequirements obj) GHC.Base.<> (Data.Aeson..=) "status" (capabilityStatus obj)))))))

instance Data.Aeson.Types.FromJSON.FromJSON Capability where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Capability" (\obj -> ((((((GHC.Base.pure Capability GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "requested")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "requested_at")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "requirements")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status"))

-- | Define the one-of schema capabilityAccount\'
--
-- The account for which the capability enables functionality.
data CapabilityAccount'Variants
  = CapabilityAccount'Account Account
  | CapabilityAccount'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CapabilityAccount'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CapabilityAccount'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema capabilityObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data CapabilityObject'
  = CapabilityObject'EnumOther Data.Aeson.Types.Internal.Value
  | CapabilityObject'EnumTyped Data.Text.Internal.Text
  | CapabilityObject'EnumStringCapability
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CapabilityObject' where
  toJSON (CapabilityObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CapabilityObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CapabilityObject'EnumStringCapability) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "capability"

instance Data.Aeson.FromJSON CapabilityObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "capability")
          then CapabilityObject'EnumStringCapability
          else CapabilityObject'EnumOther val
      )

-- | Defines the enum schema capabilityStatus\'
--
-- The status of the capability. Can be \`active\`, \`inactive\`, \`pending\`, or \`unrequested\`.
data CapabilityStatus'
  = CapabilityStatus'EnumOther Data.Aeson.Types.Internal.Value
  | CapabilityStatus'EnumTyped Data.Text.Internal.Text
  | CapabilityStatus'EnumStringActive
  | CapabilityStatus'EnumStringDisabled
  | CapabilityStatus'EnumStringInactive
  | CapabilityStatus'EnumStringPending
  | CapabilityStatus'EnumStringUnrequested
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CapabilityStatus' where
  toJSON (CapabilityStatus'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CapabilityStatus'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CapabilityStatus'EnumStringActive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active"
  toJSON (CapabilityStatus'EnumStringDisabled) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "disabled"
  toJSON (CapabilityStatus'EnumStringInactive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "inactive"
  toJSON (CapabilityStatus'EnumStringPending) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pending"
  toJSON (CapabilityStatus'EnumStringUnrequested) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unrequested"

instance Data.Aeson.FromJSON CapabilityStatus' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active")
          then CapabilityStatus'EnumStringActive
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "disabled")
              then CapabilityStatus'EnumStringDisabled
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "inactive")
                  then CapabilityStatus'EnumStringInactive
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pending")
                      then CapabilityStatus'EnumStringPending
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unrequested")
                          then CapabilityStatus'EnumStringUnrequested
                          else CapabilityStatus'EnumOther val
      )

-- | Defines the data type for the schema card
--
-- You can store multiple cards on a customer in order to charge the customer
-- later. You can also store multiple debit cards on a recipient in order to
-- transfer to those cards later.
--
-- Related guide: [Card Payments with Sources](https:\/\/stripe.com\/docs\/sources\/cards).
data Card
  = Card
      { -- | account: The account this card belongs to. This attribute will not be in the card object if the card belongs to a customer or recipient instead.
        cardAccount :: (GHC.Maybe.Maybe CardAccount'Variants),
        -- | address_city: City\/District\/Suburb\/Town\/Village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardAddressCity :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_country: Billing address country, if provided when creating card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardAddressCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1: Address line 1 (Street address\/PO Box\/Company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardAddressLine1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1_check: If \`address_line1\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardAddressLine1Check :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line2: Address line 2 (Apartment\/Suite\/Unit\/Building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardAddressLine2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_state: State\/County\/Province\/Region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardAddressState :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardAddressZip :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip_check: If \`address_zip\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardAddressZipCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | available_payout_methods: A set of available payout methods for this card. Will be either \`[\"standard\"]\` or \`[\"standard\", \"instant\"]\`. Only values from this set should be passed as the \`method\` when creating a transfer.
        cardAvailablePayoutMethods :: (GHC.Maybe.Maybe ([] CardAvailablePayoutMethods')),
        -- | brand: Card brand. Can be \`American Express\`, \`Diners Club\`, \`Discover\`, \`JCB\`, \`MasterCard\`, \`UnionPay\`, \`Visa\`, or \`Unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardBrand :: Data.Text.Internal.Text,
        -- | country: Two-letter ISO code representing the country of the card. You could use this attribute to get a sense of the international breakdown of cards you\'ve collected.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | currency
        cardCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer: The customer that this card belongs to. This attribute will not be in the card object if the card belongs to an account or recipient instead.
        cardCustomer :: (GHC.Maybe.Maybe CardCustomer'Variants),
        -- | cvc_check: If a CVC was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardCvcCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | default_for_currency: Whether this card is the default external account for its currency.
        cardDefaultForCurrency :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardDynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | exp_month: Two-digit number representing the card\'s expiration month.
        cardExpMonth :: GHC.Integer.Type.Integer,
        -- | exp_year: Four-digit number representing the card\'s expiration year.
        cardExpYear :: GHC.Integer.Type.Integer,
        -- | fingerprint: Uniquely identifies this particular card number. You can use this attribute to check whether two customers who\'ve signed up with you are using the same card number, for example.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardFingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardFunding :: Data.Text.Internal.Text,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardId :: Data.Text.Internal.Text,
        -- | last4: The last four digits of the card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardLast4 :: Data.Text.Internal.Text,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        cardMetadata :: CardMetadata',
        -- | name: Cardholder name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        cardObject :: CardObject',
        -- | recipient: The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
        cardRecipient :: (GHC.Maybe.Maybe CardRecipient'Variants),
        -- | tokenization_method: If the card number is tokenized, this is the method that was used. Can be \`amex_express_checkout\`, \`android_pay\` (includes Google Pay), \`apple_pay\`, \`masterpass\`, \`visa_checkout\`, or null.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        cardTokenizationMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Card where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (cardAccount obj) : (Data.Aeson..=) "address_city" (cardAddressCity obj) : (Data.Aeson..=) "address_country" (cardAddressCountry obj) : (Data.Aeson..=) "address_line1" (cardAddressLine1 obj) : (Data.Aeson..=) "address_line1_check" (cardAddressLine1Check obj) : (Data.Aeson..=) "address_line2" (cardAddressLine2 obj) : (Data.Aeson..=) "address_state" (cardAddressState obj) : (Data.Aeson..=) "address_zip" (cardAddressZip obj) : (Data.Aeson..=) "address_zip_check" (cardAddressZipCheck obj) : (Data.Aeson..=) "available_payout_methods" (cardAvailablePayoutMethods obj) : (Data.Aeson..=) "brand" (cardBrand obj) : (Data.Aeson..=) "country" (cardCountry obj) : (Data.Aeson..=) "currency" (cardCurrency obj) : (Data.Aeson..=) "customer" (cardCustomer obj) : (Data.Aeson..=) "cvc_check" (cardCvcCheck obj) : (Data.Aeson..=) "default_for_currency" (cardDefaultForCurrency obj) : (Data.Aeson..=) "dynamic_last4" (cardDynamicLast4 obj) : (Data.Aeson..=) "exp_month" (cardExpMonth obj) : (Data.Aeson..=) "exp_year" (cardExpYear obj) : (Data.Aeson..=) "fingerprint" (cardFingerprint obj) : (Data.Aeson..=) "funding" (cardFunding obj) : (Data.Aeson..=) "id" (cardId obj) : (Data.Aeson..=) "last4" (cardLast4 obj) : (Data.Aeson..=) "metadata" (cardMetadata obj) : (Data.Aeson..=) "name" (cardName obj) : (Data.Aeson..=) "object" (cardObject obj) : (Data.Aeson..=) "recipient" (cardRecipient obj) : (Data.Aeson..=) "tokenization_method" (cardTokenizationMethod obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (cardAccount obj) GHC.Base.<> ((Data.Aeson..=) "address_city" (cardAddressCity obj) GHC.Base.<> ((Data.Aeson..=) "address_country" (cardAddressCountry obj) GHC.Base.<> ((Data.Aeson..=) "address_line1" (cardAddressLine1 obj) GHC.Base.<> ((Data.Aeson..=) "address_line1_check" (cardAddressLine1Check obj) GHC.Base.<> ((Data.Aeson..=) "address_line2" (cardAddressLine2 obj) GHC.Base.<> ((Data.Aeson..=) "address_state" (cardAddressState obj) GHC.Base.<> ((Data.Aeson..=) "address_zip" (cardAddressZip obj) GHC.Base.<> ((Data.Aeson..=) "address_zip_check" (cardAddressZipCheck obj) GHC.Base.<> ((Data.Aeson..=) "available_payout_methods" (cardAvailablePayoutMethods obj) GHC.Base.<> ((Data.Aeson..=) "brand" (cardBrand obj) GHC.Base.<> ((Data.Aeson..=) "country" (cardCountry obj) GHC.Base.<> ((Data.Aeson..=) "currency" (cardCurrency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (cardCustomer obj) GHC.Base.<> ((Data.Aeson..=) "cvc_check" (cardCvcCheck obj) GHC.Base.<> ((Data.Aeson..=) "default_for_currency" (cardDefaultForCurrency obj) GHC.Base.<> ((Data.Aeson..=) "dynamic_last4" (cardDynamicLast4 obj) GHC.Base.<> ((Data.Aeson..=) "exp_month" (cardExpMonth obj) GHC.Base.<> ((Data.Aeson..=) "exp_year" (cardExpYear obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (cardFingerprint obj) GHC.Base.<> ((Data.Aeson..=) "funding" (cardFunding obj) GHC.Base.<> ((Data.Aeson..=) "id" (cardId obj) GHC.Base.<> ((Data.Aeson..=) "last4" (cardLast4 obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (cardMetadata obj) GHC.Base.<> ((Data.Aeson..=) "name" (cardName obj) GHC.Base.<> ((Data.Aeson..=) "object" (cardObject obj) GHC.Base.<> ((Data.Aeson..=) "recipient" (cardRecipient obj) GHC.Base.<> (Data.Aeson..=) "tokenization_method" (cardTokenizationMethod obj))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Card where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Card" (\obj -> (((((((((((((((((((((((((((GHC.Base.pure Card GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_state")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "available_payout_methods")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "brand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cvc_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_for_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dynamic_last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "funding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "recipient")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tokenization_method"))

-- | Define the one-of schema cardAccount\'
--
-- The account this card belongs to. This attribute will not be in the card object if the card belongs to a customer or recipient instead.
data CardAccount'Variants
  = CardAccount'Account Account
  | CardAccount'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CardAccount'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CardAccount'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema cardAvailable_payout_methods\'
data CardAvailablePayoutMethods'
  = CardAvailablePayoutMethods'EnumOther Data.Aeson.Types.Internal.Value
  | CardAvailablePayoutMethods'EnumTyped Data.Text.Internal.Text
  | CardAvailablePayoutMethods'EnumStringInstant
  | CardAvailablePayoutMethods'EnumStringStandard
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CardAvailablePayoutMethods' where
  toJSON (CardAvailablePayoutMethods'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CardAvailablePayoutMethods'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CardAvailablePayoutMethods'EnumStringInstant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant"
  toJSON (CardAvailablePayoutMethods'EnumStringStandard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard"

instance Data.Aeson.FromJSON CardAvailablePayoutMethods' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant")
          then CardAvailablePayoutMethods'EnumStringInstant
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard")
              then CardAvailablePayoutMethods'EnumStringStandard
              else CardAvailablePayoutMethods'EnumOther val
      )

-- | Define the one-of schema cardCustomer\'
--
-- The customer that this card belongs to. This attribute will not be in the card object if the card belongs to an account or recipient instead.
data CardCustomer'Variants
  = CardCustomer'Customer Customer
  | CardCustomer'DeletedCustomer DeletedCustomer
  | CardCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CardCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CardCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema cardMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data CardMetadata'
  = CardMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CardMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON CardMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CardMetadata'" (\obj -> GHC.Base.pure CardMetadata')

-- | Defines the enum schema cardObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data CardObject'
  = CardObject'EnumOther Data.Aeson.Types.Internal.Value
  | CardObject'EnumTyped Data.Text.Internal.Text
  | CardObject'EnumStringCard
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CardObject' where
  toJSON (CardObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CardObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CardObject'EnumStringCard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card"

instance Data.Aeson.FromJSON CardObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card")
          then CardObject'EnumStringCard
          else CardObject'EnumOther val
      )

-- | Define the one-of schema cardRecipient\'
--
-- The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
data CardRecipient'Variants
  = CardRecipient'Recipient Recipient
  | CardRecipient'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CardRecipient'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CardRecipient'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema charge
--
-- To charge a credit or a debit card, you create a \`Charge\` object. You can
-- retrieve and refund individual charges as well as list all charges. Charges
-- are identified by a unique, random ID.
--
-- Related guide: [Accept a payment with the Charges API](https:\/\/stripe.com\/docs\/payments\/accept-a-payment-charges).
data Charge
  = Charge
      { -- | amount: Amount intended to be collected by this PaymentIntent. A positive integer representing how much to charge in the [smallest currency unit](https:\/\/stripe.com\/docs\/currencies\#zero-decimal) (e.g., 100 cents to charge \$1.00 or 100 to charge ¥100, a zero-decimal currency). The minimum amount is \$0.50 US or [equivalent in charge currency](https:\/\/stripe.com\/docs\/currencies\#minimum-and-maximum-charge-amounts). The amount value supports up to eight digits (e.g., a value of 99999999 for a USD charge of \$999,999.99).
        chargeAmount :: GHC.Integer.Type.Integer,
        -- | amount_refunded: Amount in %s refunded (can be less than the amount attribute on the charge if a partial refund was issued).
        chargeAmountRefunded :: GHC.Integer.Type.Integer,
        -- | application: ID of the Connect application that created the charge.
        chargeApplication :: (GHC.Maybe.Maybe ChargeApplication'Variants),
        -- | application_fee: The application fee (if any) for the charge. [See the Connect documentation](https:\/\/stripe.com\/docs\/connect\/direct-charges\#collecting-fees) for details.
        chargeApplicationFee :: (GHC.Maybe.Maybe ChargeApplicationFee'Variants),
        -- | application_fee_amount: The amount of the application fee (if any) for the charge. [See the Connect documentation](https:\/\/stripe.com\/docs\/connect\/direct-charges\#collecting-fees) for details.
        chargeApplicationFeeAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | balance_transaction: ID of the balance transaction that describes the impact of this charge on your account balance (not including refunds or disputes).
        chargeBalanceTransaction :: (GHC.Maybe.Maybe ChargeBalanceTransaction'Variants),
        -- | billing_details:
        chargeBillingDetails :: BillingDetails,
        -- | captured: If the charge was created without capturing, this Boolean represents whether it is still uncaptured or has since been captured.
        chargeCaptured :: GHC.Types.Bool,
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        chargeCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        chargeCurrency :: Data.Text.Internal.Text,
        -- | customer: ID of the customer this charge is for if one exists.
        chargeCustomer :: (GHC.Maybe.Maybe ChargeCustomer'Variants),
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 40000
        chargeDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | disputed: Whether the charge has been disputed.
        chargeDisputed :: GHC.Types.Bool,
        -- | failure_code: Error code explaining reason for charge failure if available (see [the errors section](https:\/\/stripe.com\/docs\/api\#errors) for a list of codes).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeFailureCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | failure_message: Message to user further explaining reason for charge failure if available.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeFailureMessage :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | fraud_details: Information on fraud assessments for the charge.
        chargeFraudDetails :: (GHC.Maybe.Maybe ChargeFraudDetails'),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeId :: Data.Text.Internal.Text,
        -- | invoice: ID of the invoice this charge is for if one exists.
        chargeInvoice :: (GHC.Maybe.Maybe ChargeInvoice'Variants),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        chargeLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        chargeMetadata :: ChargeMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        chargeObject :: ChargeObject',
        -- | on_behalf_of: The account (if any) the charge was made on behalf of without triggering an automatic transfer. See the [Connect documentation](https:\/\/stripe.com\/docs\/connect\/charges-transfers) for details.
        chargeOnBehalfOf :: (GHC.Maybe.Maybe ChargeOnBehalfOf'Variants),
        -- | order: ID of the order this charge is for if one exists.
        chargeOrder :: (GHC.Maybe.Maybe ChargeOrder'Variants),
        -- | outcome: Details about whether the payment was accepted, and why. See [understanding declines](https:\/\/stripe.com\/docs\/declines) for details.
        chargeOutcome :: (GHC.Maybe.Maybe ChargeOutcome'),
        -- | paid: \`true\` if the charge succeeded, or was successfully authorized for later capture.
        chargePaid :: GHC.Types.Bool,
        -- | payment_intent: ID of the PaymentIntent associated with this charge, if one exists.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargePaymentIntent :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | payment_method: ID of the payment method used in this charge.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargePaymentMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | payment_method_details: Details about the payment method at the time of the transaction.
        chargePaymentMethodDetails :: (GHC.Maybe.Maybe ChargePaymentMethodDetails'),
        -- | receipt_email: This is the email address that the receipt for this charge was sent to.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeReceiptEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | receipt_number: This is the transaction number that appears on email receipts sent for this charge. This attribute will be \`null\` until a receipt has been sent.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeReceiptNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | receipt_url: This is the URL to view the receipt for this charge. The receipt is kept up-to-date to the latest state of the charge, including any refunds. If the charge is for an Invoice, the receipt will be stylized as an Invoice receipt.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeReceiptUrl :: Data.Text.Internal.Text,
        -- | refunded: Whether the charge has been fully refunded. If the charge is only partially refunded, this attribute will still be false.
        chargeRefunded :: GHC.Types.Bool,
        -- | refunds: A list of refunds that have been applied to the charge.
        chargeRefunds :: ChargeRefunds',
        -- | review: ID of the review associated with this charge if one exists.
        chargeReview :: (GHC.Maybe.Maybe ChargeReview'Variants),
        -- | shipping: Shipping information for the charge.
        chargeShipping :: (GHC.Maybe.Maybe ChargeShipping'),
        -- | source_transfer: The transfer ID which created this charge. Only present if the charge came from another Stripe account. [See the Connect documentation](https:\/\/stripe.com\/docs\/connect\/destination-charges) for details.
        chargeSourceTransfer :: (GHC.Maybe.Maybe ChargeSourceTransfer'Variants),
        -- | statement_descriptor: For card charges, use \`statement_descriptor_suffix\` instead. Otherwise, you can use this value as the complete description of a charge on your customers’ statements. Must contain at least one letter, maximum 22 characters.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeStatementDescriptor :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | statement_descriptor_suffix: Provides information about the charge that customers see on their statements. Concatenated with the prefix (shortened descriptor) or statement descriptor that’s set on the account to form the complete statement descriptor. Maximum 22 characters for the concatenated descriptor.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeStatementDescriptorSuffix :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: The status of the payment is either \`succeeded\`, \`pending\`, or \`failed\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeStatus :: Data.Text.Internal.Text,
        -- | transfer: ID of the transfer to the \`destination\` account (only applicable if the charge was created using the \`destination\` parameter).
        chargeTransfer :: (GHC.Maybe.Maybe ChargeTransfer'Variants),
        -- | transfer_data: An optional dictionary including the account to automatically transfer to as part of a destination charge. [See the Connect documentation](https:\/\/stripe.com\/docs\/connect\/destination-charges) for details.
        chargeTransferData :: (GHC.Maybe.Maybe ChargeTransferData'),
        -- | transfer_group: A string that identifies this transaction as part of a group. See the [Connect documentation](https:\/\/stripe.com\/docs\/connect\/charges-transfers\#transfer-options) for details.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeTransferGroup :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Charge where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (chargeAmount obj) : (Data.Aeson..=) "amount_refunded" (chargeAmountRefunded obj) : (Data.Aeson..=) "application" (chargeApplication obj) : (Data.Aeson..=) "application_fee" (chargeApplicationFee obj) : (Data.Aeson..=) "application_fee_amount" (chargeApplicationFeeAmount obj) : (Data.Aeson..=) "balance_transaction" (chargeBalanceTransaction obj) : (Data.Aeson..=) "billing_details" (chargeBillingDetails obj) : (Data.Aeson..=) "captured" (chargeCaptured obj) : (Data.Aeson..=) "created" (chargeCreated obj) : (Data.Aeson..=) "currency" (chargeCurrency obj) : (Data.Aeson..=) "customer" (chargeCustomer obj) : (Data.Aeson..=) "description" (chargeDescription obj) : (Data.Aeson..=) "disputed" (chargeDisputed obj) : (Data.Aeson..=) "failure_code" (chargeFailureCode obj) : (Data.Aeson..=) "failure_message" (chargeFailureMessage obj) : (Data.Aeson..=) "fraud_details" (chargeFraudDetails obj) : (Data.Aeson..=) "id" (chargeId obj) : (Data.Aeson..=) "invoice" (chargeInvoice obj) : (Data.Aeson..=) "livemode" (chargeLivemode obj) : (Data.Aeson..=) "metadata" (chargeMetadata obj) : (Data.Aeson..=) "object" (chargeObject obj) : (Data.Aeson..=) "on_behalf_of" (chargeOnBehalfOf obj) : (Data.Aeson..=) "order" (chargeOrder obj) : (Data.Aeson..=) "outcome" (chargeOutcome obj) : (Data.Aeson..=) "paid" (chargePaid obj) : (Data.Aeson..=) "payment_intent" (chargePaymentIntent obj) : (Data.Aeson..=) "payment_method" (chargePaymentMethod obj) : (Data.Aeson..=) "payment_method_details" (chargePaymentMethodDetails obj) : (Data.Aeson..=) "receipt_email" (chargeReceiptEmail obj) : (Data.Aeson..=) "receipt_number" (chargeReceiptNumber obj) : (Data.Aeson..=) "receipt_url" (chargeReceiptUrl obj) : (Data.Aeson..=) "refunded" (chargeRefunded obj) : (Data.Aeson..=) "refunds" (chargeRefunds obj) : (Data.Aeson..=) "review" (chargeReview obj) : (Data.Aeson..=) "shipping" (chargeShipping obj) : (Data.Aeson..=) "source_transfer" (chargeSourceTransfer obj) : (Data.Aeson..=) "statement_descriptor" (chargeStatementDescriptor obj) : (Data.Aeson..=) "statement_descriptor_suffix" (chargeStatementDescriptorSuffix obj) : (Data.Aeson..=) "status" (chargeStatus obj) : (Data.Aeson..=) "transfer" (chargeTransfer obj) : (Data.Aeson..=) "transfer_data" (chargeTransferData obj) : (Data.Aeson..=) "transfer_group" (chargeTransferGroup obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (chargeAmount obj) GHC.Base.<> ((Data.Aeson..=) "amount_refunded" (chargeAmountRefunded obj) GHC.Base.<> ((Data.Aeson..=) "application" (chargeApplication obj) GHC.Base.<> ((Data.Aeson..=) "application_fee" (chargeApplicationFee obj) GHC.Base.<> ((Data.Aeson..=) "application_fee_amount" (chargeApplicationFeeAmount obj) GHC.Base.<> ((Data.Aeson..=) "balance_transaction" (chargeBalanceTransaction obj) GHC.Base.<> ((Data.Aeson..=) "billing_details" (chargeBillingDetails obj) GHC.Base.<> ((Data.Aeson..=) "captured" (chargeCaptured obj) GHC.Base.<> ((Data.Aeson..=) "created" (chargeCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (chargeCurrency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (chargeCustomer obj) GHC.Base.<> ((Data.Aeson..=) "description" (chargeDescription obj) GHC.Base.<> ((Data.Aeson..=) "disputed" (chargeDisputed obj) GHC.Base.<> ((Data.Aeson..=) "failure_code" (chargeFailureCode obj) GHC.Base.<> ((Data.Aeson..=) "failure_message" (chargeFailureMessage obj) GHC.Base.<> ((Data.Aeson..=) "fraud_details" (chargeFraudDetails obj) GHC.Base.<> ((Data.Aeson..=) "id" (chargeId obj) GHC.Base.<> ((Data.Aeson..=) "invoice" (chargeInvoice obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (chargeLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (chargeMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (chargeObject obj) GHC.Base.<> ((Data.Aeson..=) "on_behalf_of" (chargeOnBehalfOf obj) GHC.Base.<> ((Data.Aeson..=) "order" (chargeOrder obj) GHC.Base.<> ((Data.Aeson..=) "outcome" (chargeOutcome obj) GHC.Base.<> ((Data.Aeson..=) "paid" (chargePaid obj) GHC.Base.<> ((Data.Aeson..=) "payment_intent" (chargePaymentIntent obj) GHC.Base.<> ((Data.Aeson..=) "payment_method" (chargePaymentMethod obj) GHC.Base.<> ((Data.Aeson..=) "payment_method_details" (chargePaymentMethodDetails obj) GHC.Base.<> ((Data.Aeson..=) "receipt_email" (chargeReceiptEmail obj) GHC.Base.<> ((Data.Aeson..=) "receipt_number" (chargeReceiptNumber obj) GHC.Base.<> ((Data.Aeson..=) "receipt_url" (chargeReceiptUrl obj) GHC.Base.<> ((Data.Aeson..=) "refunded" (chargeRefunded obj) GHC.Base.<> ((Data.Aeson..=) "refunds" (chargeRefunds obj) GHC.Base.<> ((Data.Aeson..=) "review" (chargeReview obj) GHC.Base.<> ((Data.Aeson..=) "shipping" (chargeShipping obj) GHC.Base.<> ((Data.Aeson..=) "source_transfer" (chargeSourceTransfer obj) GHC.Base.<> ((Data.Aeson..=) "statement_descriptor" (chargeStatementDescriptor obj) GHC.Base.<> ((Data.Aeson..=) "statement_descriptor_suffix" (chargeStatementDescriptorSuffix obj) GHC.Base.<> ((Data.Aeson..=) "status" (chargeStatus obj) GHC.Base.<> ((Data.Aeson..=) "transfer" (chargeTransfer obj) GHC.Base.<> ((Data.Aeson..=) "transfer_data" (chargeTransferData obj) GHC.Base.<> (Data.Aeson..=) "transfer_group" (chargeTransferGroup obj))))))))))))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Charge where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Charge" (\obj -> (((((((((((((((((((((((((((((((((((((((((GHC.Base.pure Charge GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount_refunded")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "application")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "application_fee")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "application_fee_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "balance_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "billing_details")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "captured")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "disputed")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "failure_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "failure_message")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fraud_details")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "invoice")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "on_behalf_of")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "order")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "outcome")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "paid")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_intent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_method_details")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "receipt_email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "receipt_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "receipt_url")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "refunded")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "refunds")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "review")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source_transfer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "statement_descriptor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "statement_descriptor_suffix")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transfer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transfer_data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transfer_group"))

-- | Define the one-of schema chargeApplication\'
--
-- ID of the Connect application that created the charge.
data ChargeApplication'Variants
  = ChargeApplication'Application Application
  | ChargeApplication'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ChargeApplication'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ChargeApplication'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema chargeApplication_fee\'
--
-- The application fee (if any) for the charge. [See the Connect documentation](https:\/\/stripe.com\/docs\/connect\/direct-charges\#collecting-fees) for details.
data ChargeApplicationFee'Variants
  = ChargeApplicationFee'ApplicationFee ApplicationFee
  | ChargeApplicationFee'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ChargeApplicationFee'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ChargeApplicationFee'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema chargeBalance_transaction\'
--
-- ID of the balance transaction that describes the impact of this charge on your account balance (not including refunds or disputes).
data ChargeBalanceTransaction'Variants
  = ChargeBalanceTransaction'BalanceTransaction BalanceTransaction
  | ChargeBalanceTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ChargeBalanceTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ChargeBalanceTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema chargeCustomer\'
--
-- ID of the customer this charge is for if one exists.
data ChargeCustomer'Variants
  = ChargeCustomer'Customer Customer
  | ChargeCustomer'DeletedCustomer DeletedCustomer
  | ChargeCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ChargeCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ChargeCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema chargeFraud_details\'
--
-- Information on fraud assessments for the charge.
data ChargeFraudDetails'
  = ChargeFraudDetails'
      { -- | stripe_report: Assessments from Stripe. If set, the value is \`fraudulent\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeFraudDetails'StripeReport :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | user_report: Assessments reported by you. If set, possible values of are \`safe\` and \`fraudulent\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeFraudDetails'UserReport :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ChargeFraudDetails' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "stripe_report" (chargeFraudDetails'StripeReport obj) : (Data.Aeson..=) "user_report" (chargeFraudDetails'UserReport obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "stripe_report" (chargeFraudDetails'StripeReport obj) GHC.Base.<> (Data.Aeson..=) "user_report" (chargeFraudDetails'UserReport obj))

instance Data.Aeson.Types.FromJSON.FromJSON ChargeFraudDetails' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ChargeFraudDetails'" (\obj -> (GHC.Base.pure ChargeFraudDetails' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "stripe_report")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "user_report"))

-- | Define the one-of schema chargeInvoice\'
--
-- ID of the invoice this charge is for if one exists.
data ChargeInvoice'Variants
  = ChargeInvoice'Invoice Invoice
  | ChargeInvoice'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ChargeInvoice'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ChargeInvoice'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema chargeMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data ChargeMetadata'
  = ChargeMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ChargeMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON ChargeMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ChargeMetadata'" (\obj -> GHC.Base.pure ChargeMetadata')

-- | Defines the enum schema chargeObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data ChargeObject'
  = ChargeObject'EnumOther Data.Aeson.Types.Internal.Value
  | ChargeObject'EnumTyped Data.Text.Internal.Text
  | ChargeObject'EnumStringCharge
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ChargeObject' where
  toJSON (ChargeObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ChargeObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ChargeObject'EnumStringCharge) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charge"

instance Data.Aeson.FromJSON ChargeObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charge")
          then ChargeObject'EnumStringCharge
          else ChargeObject'EnumOther val
      )

-- | Define the one-of schema chargeOn_behalf_of\'
--
-- The account (if any) the charge was made on behalf of without triggering an automatic transfer. See the [Connect documentation](https:\/\/stripe.com\/docs\/connect\/charges-transfers) for details.
data ChargeOnBehalfOf'Variants
  = ChargeOnBehalfOf'Account Account
  | ChargeOnBehalfOf'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ChargeOnBehalfOf'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ChargeOnBehalfOf'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema chargeOrder\'
--
-- ID of the order this charge is for if one exists.
data ChargeOrder'Variants
  = ChargeOrder'Order Order
  | ChargeOrder'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ChargeOrder'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ChargeOrder'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema chargeOutcome\'
--
-- Details about whether the payment was accepted, and why. See [understanding declines](https:\\\/\\\/stripe.com\\\/docs\\\/declines) for details.
data ChargeOutcome'
  = ChargeOutcome'
      { -- | network_status: Possible values are \`approved_by_network\`, \`declined_by_network\`, \`not_sent_to_network\`, and \`reversed_after_approval\`. The value \`reversed_after_approval\` indicates the payment was [blocked by Stripe](https:\/\/stripe.com\/docs\/declines\#blocked-payments) after bank authorization, and may temporarily appear as \"pending\" on a cardholder\'s statement.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeOutcome'NetworkStatus :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | reason: An enumerated value providing a more detailed explanation of the outcome\'s \`type\`. Charges blocked by Radar\'s default block rule have the value \`highest_risk_level\`. Charges placed in review by Radar\'s default review rule have the value \`elevated_risk_level\`. Charges authorized, blocked, or placed in review by custom rules have the value \`rule\`. See [understanding declines](https:\/\/stripe.com\/docs\/declines) for more details.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeOutcome'Reason :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | risk_level: Stripe\'s evaluation of the riskiness of the payment. Possible values for evaluated payments are \`normal\`, \`elevated\`, \`highest\`. For non-card payments, and card-based payments predating the public assignment of risk levels, this field will have the value \`not_assessed\`. In the event of an error in the evaluation, this field will have the value \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeOutcome'RiskLevel :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | risk_score: Stripe\'s evaluation of the riskiness of the payment. Possible values for evaluated payments are between 0 and 100. For non-card payments, card-based payments predating the public assignment of risk scores, or in the event of an error during evaluation, this field will not be present. This field is only available with Radar for Fraud Teams.
        chargeOutcome'RiskScore :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | rule: The ID of the Radar rule that matched the payment, if applicable.
        chargeOutcome'Rule :: (GHC.Maybe.Maybe ChargeOutcome'Rule'Variants),
        -- | seller_message: A human-readable description of the outcome type and reason, designed for you (the recipient of the payment), not your customer.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeOutcome'SellerMessage :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | type: Possible values are \`authorized\`, \`manual_review\`, \`issuer_declined\`, \`blocked\`, and \`invalid\`. See [understanding declines](https:\/\/stripe.com\/docs\/declines) and [Radar reviews](https:\/\/stripe.com\/docs\/radar\/reviews) for details.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeOutcome'Type :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ChargeOutcome' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "network_status" (chargeOutcome'NetworkStatus obj) : (Data.Aeson..=) "reason" (chargeOutcome'Reason obj) : (Data.Aeson..=) "risk_level" (chargeOutcome'RiskLevel obj) : (Data.Aeson..=) "risk_score" (chargeOutcome'RiskScore obj) : (Data.Aeson..=) "rule" (chargeOutcome'Rule obj) : (Data.Aeson..=) "seller_message" (chargeOutcome'SellerMessage obj) : (Data.Aeson..=) "type" (chargeOutcome'Type obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "network_status" (chargeOutcome'NetworkStatus obj) GHC.Base.<> ((Data.Aeson..=) "reason" (chargeOutcome'Reason obj) GHC.Base.<> ((Data.Aeson..=) "risk_level" (chargeOutcome'RiskLevel obj) GHC.Base.<> ((Data.Aeson..=) "risk_score" (chargeOutcome'RiskScore obj) GHC.Base.<> ((Data.Aeson..=) "rule" (chargeOutcome'Rule obj) GHC.Base.<> ((Data.Aeson..=) "seller_message" (chargeOutcome'SellerMessage obj) GHC.Base.<> (Data.Aeson..=) "type" (chargeOutcome'Type obj)))))))

instance Data.Aeson.Types.FromJSON.FromJSON ChargeOutcome' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ChargeOutcome'" (\obj -> ((((((GHC.Base.pure ChargeOutcome' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "network_status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "risk_level")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "risk_score")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "rule")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "seller_message")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type"))

-- | Define the one-of schema chargeOutcome\'Rule\'
--
-- The ID of the Radar rule that matched the payment, if applicable.
data ChargeOutcome'Rule'Variants
  = ChargeOutcome'Rule'Rule Rule
  | ChargeOutcome'Rule'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ChargeOutcome'Rule'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ChargeOutcome'Rule'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema chargePayment_method_details\'
--
-- Details about the payment method at the time of the transaction.
data ChargePaymentMethodDetails'
  = ChargePaymentMethodDetails'
      { -- | ach_credit_transfer:
        chargePaymentMethodDetails'AchCreditTransfer :: (GHC.Maybe.Maybe PaymentMethodDetailsAchCreditTransfer),
        -- | ach_debit:
        chargePaymentMethodDetails'AchDebit :: (GHC.Maybe.Maybe PaymentMethodDetailsAchDebit),
        -- | alipay:
        chargePaymentMethodDetails'Alipay :: (GHC.Maybe.Maybe PaymentMethodDetailsAlipay),
        -- | bancontact:
        chargePaymentMethodDetails'Bancontact :: (GHC.Maybe.Maybe PaymentMethodDetailsBancontact),
        -- | card:
        chargePaymentMethodDetails'Card :: (GHC.Maybe.Maybe PaymentMethodDetailsCard),
        -- | card_present:
        chargePaymentMethodDetails'CardPresent :: (GHC.Maybe.Maybe PaymentMethodDetailsCardPresent),
        -- | eps:
        chargePaymentMethodDetails'Eps :: (GHC.Maybe.Maybe PaymentMethodDetailsEps),
        -- | fpx:
        chargePaymentMethodDetails'Fpx :: (GHC.Maybe.Maybe PaymentMethodDetailsFpx),
        -- | giropay:
        chargePaymentMethodDetails'Giropay :: (GHC.Maybe.Maybe PaymentMethodDetailsGiropay),
        -- | ideal:
        chargePaymentMethodDetails'Ideal :: (GHC.Maybe.Maybe PaymentMethodDetailsIdeal),
        -- | klarna:
        chargePaymentMethodDetails'Klarna :: (GHC.Maybe.Maybe PaymentMethodDetailsKlarna),
        -- | multibanco:
        chargePaymentMethodDetails'Multibanco :: (GHC.Maybe.Maybe PaymentMethodDetailsMultibanco),
        -- | p24:
        chargePaymentMethodDetails'P24 :: (GHC.Maybe.Maybe PaymentMethodDetailsP24),
        -- | sepa_debit:
        chargePaymentMethodDetails'SepaDebit :: (GHC.Maybe.Maybe PaymentMethodDetailsSepaDebit),
        -- | sofort:
        chargePaymentMethodDetails'Sofort :: (GHC.Maybe.Maybe PaymentMethodDetailsSofort),
        -- | stripe_account:
        chargePaymentMethodDetails'StripeAccount :: (GHC.Maybe.Maybe PaymentMethodDetailsStripeAccount),
        -- | type: The type of transaction-specific details of the payment method used in the payment, one of \`ach_credit_transfer\`, \`ach_debit\`, \`alipay\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`klarna\`, \`multibanco\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`stripe_account\`, or \`wechat\`.
        -- An additional hash is included on \`payment_method_details\` with a name matching this value.
        -- It contains information specific to the payment method.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargePaymentMethodDetails'Type :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | wechat:
        chargePaymentMethodDetails'Wechat :: (GHC.Maybe.Maybe PaymentMethodDetailsWechat)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ChargePaymentMethodDetails' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "ach_credit_transfer" (chargePaymentMethodDetails'AchCreditTransfer obj) : (Data.Aeson..=) "ach_debit" (chargePaymentMethodDetails'AchDebit obj) : (Data.Aeson..=) "alipay" (chargePaymentMethodDetails'Alipay obj) : (Data.Aeson..=) "bancontact" (chargePaymentMethodDetails'Bancontact obj) : (Data.Aeson..=) "card" (chargePaymentMethodDetails'Card obj) : (Data.Aeson..=) "card_present" (chargePaymentMethodDetails'CardPresent obj) : (Data.Aeson..=) "eps" (chargePaymentMethodDetails'Eps obj) : (Data.Aeson..=) "fpx" (chargePaymentMethodDetails'Fpx obj) : (Data.Aeson..=) "giropay" (chargePaymentMethodDetails'Giropay obj) : (Data.Aeson..=) "ideal" (chargePaymentMethodDetails'Ideal obj) : (Data.Aeson..=) "klarna" (chargePaymentMethodDetails'Klarna obj) : (Data.Aeson..=) "multibanco" (chargePaymentMethodDetails'Multibanco obj) : (Data.Aeson..=) "p24" (chargePaymentMethodDetails'P24 obj) : (Data.Aeson..=) "sepa_debit" (chargePaymentMethodDetails'SepaDebit obj) : (Data.Aeson..=) "sofort" (chargePaymentMethodDetails'Sofort obj) : (Data.Aeson..=) "stripe_account" (chargePaymentMethodDetails'StripeAccount obj) : (Data.Aeson..=) "type" (chargePaymentMethodDetails'Type obj) : (Data.Aeson..=) "wechat" (chargePaymentMethodDetails'Wechat obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "ach_credit_transfer" (chargePaymentMethodDetails'AchCreditTransfer obj) GHC.Base.<> ((Data.Aeson..=) "ach_debit" (chargePaymentMethodDetails'AchDebit obj) GHC.Base.<> ((Data.Aeson..=) "alipay" (chargePaymentMethodDetails'Alipay obj) GHC.Base.<> ((Data.Aeson..=) "bancontact" (chargePaymentMethodDetails'Bancontact obj) GHC.Base.<> ((Data.Aeson..=) "card" (chargePaymentMethodDetails'Card obj) GHC.Base.<> ((Data.Aeson..=) "card_present" (chargePaymentMethodDetails'CardPresent obj) GHC.Base.<> ((Data.Aeson..=) "eps" (chargePaymentMethodDetails'Eps obj) GHC.Base.<> ((Data.Aeson..=) "fpx" (chargePaymentMethodDetails'Fpx obj) GHC.Base.<> ((Data.Aeson..=) "giropay" (chargePaymentMethodDetails'Giropay obj) GHC.Base.<> ((Data.Aeson..=) "ideal" (chargePaymentMethodDetails'Ideal obj) GHC.Base.<> ((Data.Aeson..=) "klarna" (chargePaymentMethodDetails'Klarna obj) GHC.Base.<> ((Data.Aeson..=) "multibanco" (chargePaymentMethodDetails'Multibanco obj) GHC.Base.<> ((Data.Aeson..=) "p24" (chargePaymentMethodDetails'P24 obj) GHC.Base.<> ((Data.Aeson..=) "sepa_debit" (chargePaymentMethodDetails'SepaDebit obj) GHC.Base.<> ((Data.Aeson..=) "sofort" (chargePaymentMethodDetails'Sofort obj) GHC.Base.<> ((Data.Aeson..=) "stripe_account" (chargePaymentMethodDetails'StripeAccount obj) GHC.Base.<> ((Data.Aeson..=) "type" (chargePaymentMethodDetails'Type obj) GHC.Base.<> (Data.Aeson..=) "wechat" (chargePaymentMethodDetails'Wechat obj))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON ChargePaymentMethodDetails' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ChargePaymentMethodDetails'" (\obj -> (((((((((((((((((GHC.Base.pure ChargePaymentMethodDetails' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_credit_transfer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "alipay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bancontact")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card_present")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "eps")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fpx")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "giropay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ideal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "klarna")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "multibanco")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "p24")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sepa_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sofort")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "stripe_account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "wechat"))

-- | Defines the data type for the schema chargeRefunds\'
--
-- A list of refunds that have been applied to the charge.
data ChargeRefunds'
  = ChargeRefunds'
      { -- | data: Details about each object.
        chargeRefunds'Data :: ([] Refund),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        chargeRefunds'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        chargeRefunds'Object :: ChargeRefunds'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeRefunds'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ChargeRefunds' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (chargeRefunds'Data obj) : (Data.Aeson..=) "has_more" (chargeRefunds'HasMore obj) : (Data.Aeson..=) "object" (chargeRefunds'Object obj) : (Data.Aeson..=) "url" (chargeRefunds'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (chargeRefunds'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (chargeRefunds'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (chargeRefunds'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (chargeRefunds'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON ChargeRefunds' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ChargeRefunds'" (\obj -> (((GHC.Base.pure ChargeRefunds' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema chargeRefunds\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data ChargeRefunds'Object'
  = ChargeRefunds'Object'EnumOther Data.Aeson.Types.Internal.Value
  | ChargeRefunds'Object'EnumTyped Data.Text.Internal.Text
  | ChargeRefunds'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ChargeRefunds'Object' where
  toJSON (ChargeRefunds'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ChargeRefunds'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ChargeRefunds'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON ChargeRefunds'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then ChargeRefunds'Object'EnumStringList
          else ChargeRefunds'Object'EnumOther val
      )

-- | Define the one-of schema chargeReview\'
--
-- ID of the review associated with this charge if one exists.
data ChargeReview'Variants
  = ChargeReview'Review Review
  | ChargeReview'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ChargeReview'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ChargeReview'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema chargeShipping\'
--
-- Shipping information for the charge.
data ChargeShipping'
  = ChargeShipping'
      { -- | address:
        chargeShipping'Address :: (GHC.Maybe.Maybe Address),
        -- | carrier: The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeShipping'Carrier :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Recipient name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeShipping'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | phone: Recipient phone (including extension).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeShipping'Phone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | tracking_number: The tracking number for a physical product, obtained from the delivery service. If multiple tracking numbers were generated for this purchase, please separate them with commas.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        chargeShipping'TrackingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ChargeShipping' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (chargeShipping'Address obj) : (Data.Aeson..=) "carrier" (chargeShipping'Carrier obj) : (Data.Aeson..=) "name" (chargeShipping'Name obj) : (Data.Aeson..=) "phone" (chargeShipping'Phone obj) : (Data.Aeson..=) "tracking_number" (chargeShipping'TrackingNumber obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (chargeShipping'Address obj) GHC.Base.<> ((Data.Aeson..=) "carrier" (chargeShipping'Carrier obj) GHC.Base.<> ((Data.Aeson..=) "name" (chargeShipping'Name obj) GHC.Base.<> ((Data.Aeson..=) "phone" (chargeShipping'Phone obj) GHC.Base.<> (Data.Aeson..=) "tracking_number" (chargeShipping'TrackingNumber obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON ChargeShipping' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ChargeShipping'" (\obj -> ((((GHC.Base.pure ChargeShipping' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "carrier")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tracking_number"))

-- | Define the one-of schema chargeSource_transfer\'
--
-- The transfer ID which created this charge. Only present if the charge came from another Stripe account. [See the Connect documentation](https:\/\/stripe.com\/docs\/connect\/destination-charges) for details.
data ChargeSourceTransfer'Variants
  = ChargeSourceTransfer'Transfer Transfer
  | ChargeSourceTransfer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ChargeSourceTransfer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ChargeSourceTransfer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema chargeTransfer\'
--
-- ID of the transfer to the \`destination\` account (only applicable if the charge was created using the \`destination\` parameter).
data ChargeTransfer'Variants
  = ChargeTransfer'Transfer Transfer
  | ChargeTransfer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ChargeTransfer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ChargeTransfer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema chargeTransfer_data\'
--
-- An optional dictionary including the account to automatically transfer to as part of a destination charge. [See the Connect documentation](https:\\\/\\\/stripe.com\\\/docs\\\/connect\\\/destination-charges) for details.
data ChargeTransferData'
  = ChargeTransferData'
      { -- | amount: The amount transferred to the destination account, if specified. By default, the entire charge amount is transferred to the destination account.
        chargeTransferData'Amount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | destination: ID of an existing, connected Stripe account to transfer funds to if \`transfer_data\` was specified in the charge request.
        chargeTransferData'Destination :: (GHC.Maybe.Maybe ChargeTransferData'Destination'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ChargeTransferData' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (chargeTransferData'Amount obj) : (Data.Aeson..=) "destination" (chargeTransferData'Destination obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (chargeTransferData'Amount obj) GHC.Base.<> (Data.Aeson..=) "destination" (chargeTransferData'Destination obj))

instance Data.Aeson.Types.FromJSON.FromJSON ChargeTransferData' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ChargeTransferData'" (\obj -> (GHC.Base.pure ChargeTransferData' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "destination"))

-- | Define the one-of schema chargeTransfer_data\'Destination\'
--
-- ID of an existing, connected Stripe account to transfer funds to if \`transfer_data\` was specified in the charge request.
data ChargeTransferData'Destination'Variants
  = ChargeTransferData'Destination'Account Account
  | ChargeTransferData'Destination'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ChargeTransferData'Destination'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ChargeTransferData'Destination'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema charge_transfer_data
data ChargeTransferData
  = ChargeTransferData
      { -- | amount: The amount transferred to the destination account, if specified. By default, the entire charge amount is transferred to the destination account.
        chargeTransferDataAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | destination: ID of an existing, connected Stripe account to transfer funds to if \`transfer_data\` was specified in the charge request.
        chargeTransferDataDestination :: ChargeTransferDataDestination'Variants
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ChargeTransferData where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (chargeTransferDataAmount obj) : (Data.Aeson..=) "destination" (chargeTransferDataDestination obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (chargeTransferDataAmount obj) GHC.Base.<> (Data.Aeson..=) "destination" (chargeTransferDataDestination obj))

instance Data.Aeson.Types.FromJSON.FromJSON ChargeTransferData where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ChargeTransferData" (\obj -> (GHC.Base.pure ChargeTransferData GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "destination"))

-- | Define the one-of schema charge_transfer_dataDestination\'
--
-- ID of an existing, connected Stripe account to transfer funds to if \`transfer_data\` was specified in the charge request.
data ChargeTransferDataDestination'Variants
  = ChargeTransferDataDestination'Account Account
  | ChargeTransferDataDestination'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ChargeTransferDataDestination'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ChargeTransferDataDestination'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema checkout.session
--
-- A Checkout Session represents your customer\'s session as they pay for
-- one-time purchases or subscriptions through [Checkout](https:\/\/stripe.com\/docs\/payments\/checkout).
-- We recommend creating a new Session each time your customer attempts to pay.
--
-- Once payment is successful, the Checkout Session will contain a reference
-- to the [Customer](https:\/\/stripe.com\/docs\/api\/customers), and either the successful
-- [PaymentIntent](https:\/\/stripe.com\/docs\/api\/payment_intents) or an active
-- [Subscription](https:\/\/stripe.com\/docs\/api\/subscriptions).
--
-- You can create a Checkout Session on your server and pass its ID to the
-- client to begin Checkout.
--
-- Related guide: [Checkout Server Quickstart](https:\/\/stripe.com\/docs\/payments\/checkout\/api).
data Checkout'session
  = Checkout'session
      { -- | billing_address_collection: The value (\`auto\` or \`required\`) for whether Checkout collected the
        -- customer\'s billing address.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        checkout'sessionBillingAddressCollection :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | cancel_url: The URL the customer will be directed to if they decide to cancel payment and return to your website.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        checkout'sessionCancelUrl :: Data.Text.Internal.Text,
        -- | client_reference_id: A unique string to reference the Checkout Session. This can be a
        -- customer ID, a cart ID, or similar, and can be used to reconcile the
        -- session with your internal systems.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        checkout'sessionClientReferenceId :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer: The ID of the customer for this session.
        -- For Checkout Sessions in \`payment\` or \`subscription\` mode, Checkout
        -- will create a new customer object based on information provided
        -- during the session unless an existing customer was provided when
        -- the session was created.
        checkout'sessionCustomer :: (GHC.Maybe.Maybe Checkout'sessionCustomer'Variants),
        -- | customer_email: If provided, this value will be used when the Customer object is created.
        -- If not provided, customers will be asked to enter their email address.
        -- Use this parameter to prefill customer data if you already have an email
        -- on file. To access information about the customer once a session is
        -- complete, use the \`customer\` field.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        checkout'sessionCustomerEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | display_items: The line items, plans, or SKUs purchased by the customer.
        checkout'sessionDisplayItems :: (GHC.Maybe.Maybe ([] CheckoutSessionDisplayItem)),
        -- | id: Unique identifier for the object. Used to pass to \`redirectToCheckout\`
        -- in Stripe.js.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        checkout'sessionId :: 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.
        checkout'sessionLivemode :: GHC.Types.Bool,
        -- | locale: The IETF language tag of the locale Checkout is displayed in. If blank or \`auto\`, the browser\'s locale is used.
        checkout'sessionLocale :: (GHC.Maybe.Maybe Checkout'sessionLocale'),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        checkout'sessionMetadata :: (GHC.Maybe.Maybe Checkout'sessionMetadata'),
        -- | mode: The mode of the Checkout Session, one of \`payment\`, \`setup\`, or \`subscription\`.
        checkout'sessionMode :: (GHC.Maybe.Maybe Checkout'sessionMode'),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        checkout'sessionObject :: Checkout'sessionObject',
        -- | payment_intent: The ID of the PaymentIntent for Checkout Sessions in \`payment\` mode.
        checkout'sessionPaymentIntent :: (GHC.Maybe.Maybe Checkout'sessionPaymentIntent'Variants),
        -- | payment_method_types: A list of the types of payment methods (e.g. card) this Checkout
        -- Session is allowed to accept.
        checkout'sessionPaymentMethodTypes :: ([] Data.Text.Internal.Text),
        -- | setup_intent: The ID of the SetupIntent for Checkout Sessions in \`setup\` mode.
        checkout'sessionSetupIntent :: (GHC.Maybe.Maybe Checkout'sessionSetupIntent'Variants),
        -- | submit_type: Describes the type of transaction being performed by Checkout in order to customize
        -- relevant text on the page, such as the submit button. \`submit_type\` can only be
        -- specified on Checkout Sessions in \`payment\` mode, but not Checkout Sessions
        -- in \`subscription\` or \`setup\` mode.
        checkout'sessionSubmitType :: (GHC.Maybe.Maybe Checkout'sessionSubmitType'),
        -- | subscription: The ID of the subscription for Checkout Sessions in \`subscription\` mode.
        checkout'sessionSubscription :: (GHC.Maybe.Maybe Checkout'sessionSubscription'Variants),
        -- | success_url: The URL the customer will be directed to after the payment or
        -- subscription creation is successful.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        checkout'sessionSuccessUrl :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Checkout'session where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "billing_address_collection" (checkout'sessionBillingAddressCollection obj) : (Data.Aeson..=) "cancel_url" (checkout'sessionCancelUrl obj) : (Data.Aeson..=) "client_reference_id" (checkout'sessionClientReferenceId obj) : (Data.Aeson..=) "customer" (checkout'sessionCustomer obj) : (Data.Aeson..=) "customer_email" (checkout'sessionCustomerEmail obj) : (Data.Aeson..=) "display_items" (checkout'sessionDisplayItems obj) : (Data.Aeson..=) "id" (checkout'sessionId obj) : (Data.Aeson..=) "livemode" (checkout'sessionLivemode obj) : (Data.Aeson..=) "locale" (checkout'sessionLocale obj) : (Data.Aeson..=) "metadata" (checkout'sessionMetadata obj) : (Data.Aeson..=) "mode" (checkout'sessionMode obj) : (Data.Aeson..=) "object" (checkout'sessionObject obj) : (Data.Aeson..=) "payment_intent" (checkout'sessionPaymentIntent obj) : (Data.Aeson..=) "payment_method_types" (checkout'sessionPaymentMethodTypes obj) : (Data.Aeson..=) "setup_intent" (checkout'sessionSetupIntent obj) : (Data.Aeson..=) "submit_type" (checkout'sessionSubmitType obj) : (Data.Aeson..=) "subscription" (checkout'sessionSubscription obj) : (Data.Aeson..=) "success_url" (checkout'sessionSuccessUrl obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "billing_address_collection" (checkout'sessionBillingAddressCollection obj) GHC.Base.<> ((Data.Aeson..=) "cancel_url" (checkout'sessionCancelUrl obj) GHC.Base.<> ((Data.Aeson..=) "client_reference_id" (checkout'sessionClientReferenceId obj) GHC.Base.<> ((Data.Aeson..=) "customer" (checkout'sessionCustomer obj) GHC.Base.<> ((Data.Aeson..=) "customer_email" (checkout'sessionCustomerEmail obj) GHC.Base.<> ((Data.Aeson..=) "display_items" (checkout'sessionDisplayItems obj) GHC.Base.<> ((Data.Aeson..=) "id" (checkout'sessionId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (checkout'sessionLivemode obj) GHC.Base.<> ((Data.Aeson..=) "locale" (checkout'sessionLocale obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (checkout'sessionMetadata obj) GHC.Base.<> ((Data.Aeson..=) "mode" (checkout'sessionMode obj) GHC.Base.<> ((Data.Aeson..=) "object" (checkout'sessionObject obj) GHC.Base.<> ((Data.Aeson..=) "payment_intent" (checkout'sessionPaymentIntent obj) GHC.Base.<> ((Data.Aeson..=) "payment_method_types" (checkout'sessionPaymentMethodTypes obj) GHC.Base.<> ((Data.Aeson..=) "setup_intent" (checkout'sessionSetupIntent obj) GHC.Base.<> ((Data.Aeson..=) "submit_type" (checkout'sessionSubmitType obj) GHC.Base.<> ((Data.Aeson..=) "subscription" (checkout'sessionSubscription obj) GHC.Base.<> (Data.Aeson..=) "success_url" (checkout'sessionSuccessUrl obj))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Checkout'session where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Checkout'session" (\obj -> (((((((((((((((((GHC.Base.pure Checkout'session GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_address_collection")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "cancel_url")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "client_reference_id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer_email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "display_items")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "locale")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "mode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_intent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "payment_method_types")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "setup_intent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "submit_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscription")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "success_url"))

-- | Define the one-of schema checkout.sessionCustomer\'
--
-- The ID of the customer for this session.
-- For Checkout Sessions in \`payment\` or \`subscription\` mode, Checkout
-- will create a new customer object based on information provided
-- during the session unless an existing customer was provided when
-- the session was created.
data Checkout'sessionCustomer'Variants
  = Checkout'sessionCustomer'Customer Customer
  | Checkout'sessionCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Checkout'sessionCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Checkout'sessionCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema checkout.sessionLocale\'
--
-- The IETF language tag of the locale Checkout is displayed in. If blank or \`auto\`, the browser\'s locale is used.
data Checkout'sessionLocale'
  = Checkout'sessionLocale'EnumOther Data.Aeson.Types.Internal.Value
  | Checkout'sessionLocale'EnumTyped Data.Text.Internal.Text
  | Checkout'sessionLocale'EnumStringAuto
  | Checkout'sessionLocale'EnumStringDa
  | Checkout'sessionLocale'EnumStringDe
  | Checkout'sessionLocale'EnumStringEn
  | Checkout'sessionLocale'EnumStringEs
  | Checkout'sessionLocale'EnumStringFi
  | Checkout'sessionLocale'EnumStringFr
  | Checkout'sessionLocale'EnumStringIt
  | Checkout'sessionLocale'EnumStringJa
  | Checkout'sessionLocale'EnumStringMs
  | Checkout'sessionLocale'EnumStringNb
  | Checkout'sessionLocale'EnumStringNl
  | Checkout'sessionLocale'EnumStringPl
  | Checkout'sessionLocale'EnumStringPt
  | Checkout'sessionLocale'EnumStringSv
  | Checkout'sessionLocale'EnumStringZh
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Checkout'sessionLocale' where
  toJSON (Checkout'sessionLocale'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Checkout'sessionLocale'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Checkout'sessionLocale'EnumStringAuto) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto"
  toJSON (Checkout'sessionLocale'EnumStringDa) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "da"
  toJSON (Checkout'sessionLocale'EnumStringDe) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "de"
  toJSON (Checkout'sessionLocale'EnumStringEn) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "en"
  toJSON (Checkout'sessionLocale'EnumStringEs) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "es"
  toJSON (Checkout'sessionLocale'EnumStringFi) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fi"
  toJSON (Checkout'sessionLocale'EnumStringFr) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fr"
  toJSON (Checkout'sessionLocale'EnumStringIt) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "it"
  toJSON (Checkout'sessionLocale'EnumStringJa) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ja"
  toJSON (Checkout'sessionLocale'EnumStringMs) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ms"
  toJSON (Checkout'sessionLocale'EnumStringNb) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nb"
  toJSON (Checkout'sessionLocale'EnumStringNl) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nl"
  toJSON (Checkout'sessionLocale'EnumStringPl) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pl"
  toJSON (Checkout'sessionLocale'EnumStringPt) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pt"
  toJSON (Checkout'sessionLocale'EnumStringSv) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sv"
  toJSON (Checkout'sessionLocale'EnumStringZh) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "zh"

instance Data.Aeson.FromJSON Checkout'sessionLocale' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto")
          then Checkout'sessionLocale'EnumStringAuto
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "da")
              then Checkout'sessionLocale'EnumStringDa
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "de")
                  then Checkout'sessionLocale'EnumStringDe
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "en")
                      then Checkout'sessionLocale'EnumStringEn
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "es")
                          then Checkout'sessionLocale'EnumStringEs
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fi")
                              then Checkout'sessionLocale'EnumStringFi
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fr")
                                  then Checkout'sessionLocale'EnumStringFr
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "it")
                                      then Checkout'sessionLocale'EnumStringIt
                                      else
                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ja")
                                          then Checkout'sessionLocale'EnumStringJa
                                          else
                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ms")
                                              then Checkout'sessionLocale'EnumStringMs
                                              else
                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nb")
                                                  then Checkout'sessionLocale'EnumStringNb
                                                  else
                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nl")
                                                      then Checkout'sessionLocale'EnumStringNl
                                                      else
                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pl")
                                                          then Checkout'sessionLocale'EnumStringPl
                                                          else
                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pt")
                                                              then Checkout'sessionLocale'EnumStringPt
                                                              else
                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sv")
                                                                  then Checkout'sessionLocale'EnumStringSv
                                                                  else
                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "zh")
                                                                      then Checkout'sessionLocale'EnumStringZh
                                                                      else Checkout'sessionLocale'EnumOther val
      )

-- | Defines the data type for the schema checkout.sessionMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data Checkout'sessionMetadata'
  = Checkout'sessionMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Checkout'sessionMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON Checkout'sessionMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Checkout'sessionMetadata'" (\obj -> GHC.Base.pure Checkout'sessionMetadata')

-- | Defines the enum schema checkout.sessionMode\'
--
-- The mode of the Checkout Session, one of \`payment\`, \`setup\`, or \`subscription\`.
data Checkout'sessionMode'
  = Checkout'sessionMode'EnumOther Data.Aeson.Types.Internal.Value
  | Checkout'sessionMode'EnumTyped Data.Text.Internal.Text
  | Checkout'sessionMode'EnumStringPayment
  | Checkout'sessionMode'EnumStringSetup
  | Checkout'sessionMode'EnumStringSubscription
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Checkout'sessionMode' where
  toJSON (Checkout'sessionMode'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Checkout'sessionMode'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Checkout'sessionMode'EnumStringPayment) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payment"
  toJSON (Checkout'sessionMode'EnumStringSetup) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "setup"
  toJSON (Checkout'sessionMode'EnumStringSubscription) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription"

instance Data.Aeson.FromJSON Checkout'sessionMode' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payment")
          then Checkout'sessionMode'EnumStringPayment
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "setup")
              then Checkout'sessionMode'EnumStringSetup
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription")
                  then Checkout'sessionMode'EnumStringSubscription
                  else Checkout'sessionMode'EnumOther val
      )

-- | Defines the enum schema checkout.sessionObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data Checkout'sessionObject'
  = Checkout'sessionObject'EnumOther Data.Aeson.Types.Internal.Value
  | Checkout'sessionObject'EnumTyped Data.Text.Internal.Text
  | Checkout'sessionObject'EnumStringCheckout'session
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Checkout'sessionObject' where
  toJSON (Checkout'sessionObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Checkout'sessionObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Checkout'sessionObject'EnumStringCheckout'session) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "checkout.session"

instance Data.Aeson.FromJSON Checkout'sessionObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "checkout.session")
          then Checkout'sessionObject'EnumStringCheckout'session
          else Checkout'sessionObject'EnumOther val
      )

-- | Define the one-of schema checkout.sessionPayment_intent\'
--
-- The ID of the PaymentIntent for Checkout Sessions in \`payment\` mode.
data Checkout'sessionPaymentIntent'Variants
  = Checkout'sessionPaymentIntent'PaymentIntent PaymentIntent
  | Checkout'sessionPaymentIntent'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Checkout'sessionPaymentIntent'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Checkout'sessionPaymentIntent'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema checkout.sessionSetup_intent\'
--
-- The ID of the SetupIntent for Checkout Sessions in \`setup\` mode.
data Checkout'sessionSetupIntent'Variants
  = Checkout'sessionSetupIntent'SetupIntent SetupIntent
  | Checkout'sessionSetupIntent'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Checkout'sessionSetupIntent'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Checkout'sessionSetupIntent'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema checkout.sessionSubmit_type\'
--
-- Describes the type of transaction being performed by Checkout in order to customize
-- relevant text on the page, such as the submit button. \`submit_type\` can only be
-- specified on Checkout Sessions in \`payment\` mode, but not Checkout Sessions
-- in \`subscription\` or \`setup\` mode.
data Checkout'sessionSubmitType'
  = Checkout'sessionSubmitType'EnumOther Data.Aeson.Types.Internal.Value
  | Checkout'sessionSubmitType'EnumTyped Data.Text.Internal.Text
  | Checkout'sessionSubmitType'EnumStringAuto
  | Checkout'sessionSubmitType'EnumStringBook
  | Checkout'sessionSubmitType'EnumStringDonate
  | Checkout'sessionSubmitType'EnumStringPay
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Checkout'sessionSubmitType' where
  toJSON (Checkout'sessionSubmitType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Checkout'sessionSubmitType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Checkout'sessionSubmitType'EnumStringAuto) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto"
  toJSON (Checkout'sessionSubmitType'EnumStringBook) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "book"
  toJSON (Checkout'sessionSubmitType'EnumStringDonate) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "donate"
  toJSON (Checkout'sessionSubmitType'EnumStringPay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pay"

instance Data.Aeson.FromJSON Checkout'sessionSubmitType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto")
          then Checkout'sessionSubmitType'EnumStringAuto
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "book")
              then Checkout'sessionSubmitType'EnumStringBook
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "donate")
                  then Checkout'sessionSubmitType'EnumStringDonate
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pay")
                      then Checkout'sessionSubmitType'EnumStringPay
                      else Checkout'sessionSubmitType'EnumOther val
      )

-- | Define the one-of schema checkout.sessionSubscription\'
--
-- The ID of the subscription for Checkout Sessions in \`subscription\` mode.
data Checkout'sessionSubscription'Variants
  = Checkout'sessionSubscription'Subscription Subscription
  | Checkout'sessionSubscription'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Checkout'sessionSubscription'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Checkout'sessionSubscription'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema checkout_session_display_item
data CheckoutSessionDisplayItem
  = CheckoutSessionDisplayItem
      { -- | amount: Amount for the display item.
        checkoutSessionDisplayItemAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        checkoutSessionDisplayItemCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | custom:
        checkoutSessionDisplayItemCustom :: (GHC.Maybe.Maybe CheckoutSessionCustomDisplayItemDescription),
        -- | plan: Plans define the base price, currency, and billing cycle for subscriptions.
        -- For example, you might have a \<currency>5\<\/currency>\/month plan
        -- that provides limited access to your products, and a
        -- \<currency>15\<\/currency>\/month plan that allows full access.
        --
        -- Related guide: [Managing Products and Plans](https:\/\/stripe.com\/docs\/billing\/subscriptions\/products-and-plans).
        checkoutSessionDisplayItemPlan :: (GHC.Maybe.Maybe Plan),
        -- | quantity: Quantity of the display item being purchased.
        checkoutSessionDisplayItemQuantity :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | sku: Stores representations of [stock keeping units](http:\/\/en.wikipedia.org\/wiki\/Stock_keeping_unit).
        -- SKUs describe specific product variations, taking into account any combination of: attributes,
        -- currency, and cost. For example, a product may be a T-shirt, whereas a specific SKU represents
        -- the \`size: large\`, \`color: red\` version of that shirt.
        --
        -- Can also be used to manage inventory.
        --
        -- Related guide: [Tax, Shipping, and Inventory](https:\/\/stripe.com\/docs\/orders).
        checkoutSessionDisplayItemSku :: (GHC.Maybe.Maybe Sku),
        -- | type: The type of display item. One of \`custom\`, \`plan\` or \`sku\`
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        checkoutSessionDisplayItemType :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CheckoutSessionDisplayItem where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (checkoutSessionDisplayItemAmount obj) : (Data.Aeson..=) "currency" (checkoutSessionDisplayItemCurrency obj) : (Data.Aeson..=) "custom" (checkoutSessionDisplayItemCustom obj) : (Data.Aeson..=) "plan" (checkoutSessionDisplayItemPlan obj) : (Data.Aeson..=) "quantity" (checkoutSessionDisplayItemQuantity obj) : (Data.Aeson..=) "sku" (checkoutSessionDisplayItemSku obj) : (Data.Aeson..=) "type" (checkoutSessionDisplayItemType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (checkoutSessionDisplayItemAmount obj) GHC.Base.<> ((Data.Aeson..=) "currency" (checkoutSessionDisplayItemCurrency obj) GHC.Base.<> ((Data.Aeson..=) "custom" (checkoutSessionDisplayItemCustom obj) GHC.Base.<> ((Data.Aeson..=) "plan" (checkoutSessionDisplayItemPlan obj) GHC.Base.<> ((Data.Aeson..=) "quantity" (checkoutSessionDisplayItemQuantity obj) GHC.Base.<> ((Data.Aeson..=) "sku" (checkoutSessionDisplayItemSku obj) GHC.Base.<> (Data.Aeson..=) "type" (checkoutSessionDisplayItemType obj)))))))

instance Data.Aeson.Types.FromJSON.FromJSON CheckoutSessionDisplayItem where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CheckoutSessionDisplayItem" (\obj -> ((((((GHC.Base.pure CheckoutSessionDisplayItem GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "custom")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "plan")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "quantity")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sku")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type"))

-- | Defines the data type for the schema connect_collection_transfer
data ConnectCollectionTransfer
  = ConnectCollectionTransfer
      { -- | amount: Amount transferred, in %s.
        connectCollectionTransferAmount :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        connectCollectionTransferCurrency :: Data.Text.Internal.Text,
        -- | destination: ID of the account that funds are being collected for.
        connectCollectionTransferDestination :: ConnectCollectionTransferDestination'Variants,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        connectCollectionTransferId :: 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.
        connectCollectionTransferLivemode :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        connectCollectionTransferObject :: ConnectCollectionTransferObject'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ConnectCollectionTransfer where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (connectCollectionTransferAmount obj) : (Data.Aeson..=) "currency" (connectCollectionTransferCurrency obj) : (Data.Aeson..=) "destination" (connectCollectionTransferDestination obj) : (Data.Aeson..=) "id" (connectCollectionTransferId obj) : (Data.Aeson..=) "livemode" (connectCollectionTransferLivemode obj) : (Data.Aeson..=) "object" (connectCollectionTransferObject obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (connectCollectionTransferAmount obj) GHC.Base.<> ((Data.Aeson..=) "currency" (connectCollectionTransferCurrency obj) GHC.Base.<> ((Data.Aeson..=) "destination" (connectCollectionTransferDestination obj) GHC.Base.<> ((Data.Aeson..=) "id" (connectCollectionTransferId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (connectCollectionTransferLivemode obj) GHC.Base.<> (Data.Aeson..=) "object" (connectCollectionTransferObject obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON ConnectCollectionTransfer where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ConnectCollectionTransfer" (\obj -> (((((GHC.Base.pure ConnectCollectionTransfer GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "destination")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object"))

-- | Define the one-of schema connect_collection_transferDestination\'
--
-- ID of the account that funds are being collected for.
data ConnectCollectionTransferDestination'Variants
  = ConnectCollectionTransferDestination'Account Account
  | ConnectCollectionTransferDestination'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ConnectCollectionTransferDestination'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ConnectCollectionTransferDestination'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema connect_collection_transferObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data ConnectCollectionTransferObject'
  = ConnectCollectionTransferObject'EnumOther Data.Aeson.Types.Internal.Value
  | ConnectCollectionTransferObject'EnumTyped Data.Text.Internal.Text
  | ConnectCollectionTransferObject'EnumStringConnectCollectionTransfer
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ConnectCollectionTransferObject' where
  toJSON (ConnectCollectionTransferObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ConnectCollectionTransferObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ConnectCollectionTransferObject'EnumStringConnectCollectionTransfer) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "connect_collection_transfer"

instance Data.Aeson.FromJSON ConnectCollectionTransferObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "connect_collection_transfer")
          then ConnectCollectionTransferObject'EnumStringConnectCollectionTransfer
          else ConnectCollectionTransferObject'EnumOther val
      )

-- | Defines the data type for the schema credit_note
--
-- Issue a credit note to adjust an invoice\'s amount after the invoice is finalized.
--
-- Related guide: [Credit Notes](https:\/\/stripe.com\/docs\/billing\/invoices\/credit-notes).
data CreditNote
  = CreditNote
      { -- | amount: The integer amount in **%s** representing the total amount of the credit note, including tax.
        creditNoteAmount :: GHC.Integer.Type.Integer,
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        creditNoteCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        creditNoteCurrency :: Data.Text.Internal.Text,
        -- | customer: ID of the customer.
        creditNoteCustomer :: CreditNoteCustomer'Variants,
        -- | customer_balance_transaction: Customer balance transaction related to this credit note.
        creditNoteCustomerBalanceTransaction :: (GHC.Maybe.Maybe CreditNoteCustomerBalanceTransaction'Variants),
        -- | discount_amount: The integer amount in **%s** representing the amount of the discount that was credited.
        creditNoteDiscountAmount :: GHC.Integer.Type.Integer,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        creditNoteId :: Data.Text.Internal.Text,
        -- | invoice: ID of the invoice.
        creditNoteInvoice :: CreditNoteInvoice'Variants,
        -- | lines: Line items that make up the credit note
        creditNoteLines :: CreditNoteLines',
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        creditNoteLivemode :: GHC.Types.Bool,
        -- | memo: Customer-facing text that appears on the credit note PDF.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        creditNoteMemo :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        creditNoteMetadata :: CreditNoteMetadata',
        -- | number: A unique number that identifies this particular credit note and appears on the PDF of the credit note and its associated invoice.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        creditNoteNumber :: Data.Text.Internal.Text,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        creditNoteObject :: CreditNoteObject',
        -- | out_of_band_amount: Amount that was credited outside of Stripe.
        creditNoteOutOfBandAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | pdf: The link to download the PDF of the credit note.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        creditNotePdf :: Data.Text.Internal.Text,
        -- | reason: Reason for issuing this credit note, one of \`duplicate\`, \`fraudulent\`, \`order_change\`, or \`product_unsatisfactory\`
        creditNoteReason :: (GHC.Maybe.Maybe CreditNoteReason'),
        -- | refund: Refund related to this credit note.
        creditNoteRefund :: (GHC.Maybe.Maybe CreditNoteRefund'Variants),
        -- | status: Status of this credit note, one of \`issued\` or \`void\`. Learn more about [voiding credit notes](https:\/\/stripe.com\/docs\/billing\/invoices\/credit-notes\#voiding).
        creditNoteStatus :: CreditNoteStatus',
        -- | subtotal: The integer amount in **%s** representing the amount of the credit note, excluding tax and discount.
        creditNoteSubtotal :: GHC.Integer.Type.Integer,
        -- | tax_amounts: The aggregate amounts calculated per tax rate for all line items.
        creditNoteTaxAmounts :: ([] CreditNoteTaxAmount),
        -- | total: The integer amount in **%s** representing the total amount of the credit note, including tax and discount.
        creditNoteTotal :: GHC.Integer.Type.Integer,
        -- | type: Type of this credit note, one of \`pre_payment\` or \`post_payment\`. A \`pre_payment\` credit note means it was issued when the invoice was open. A \`post_payment\` credit note means it was issued when the invoice was paid.
        creditNoteType :: CreditNoteType',
        -- | voided_at: The time that the credit note was voided.
        creditNoteVoidedAt :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CreditNote where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (creditNoteAmount obj) : (Data.Aeson..=) "created" (creditNoteCreated obj) : (Data.Aeson..=) "currency" (creditNoteCurrency obj) : (Data.Aeson..=) "customer" (creditNoteCustomer obj) : (Data.Aeson..=) "customer_balance_transaction" (creditNoteCustomerBalanceTransaction obj) : (Data.Aeson..=) "discount_amount" (creditNoteDiscountAmount obj) : (Data.Aeson..=) "id" (creditNoteId obj) : (Data.Aeson..=) "invoice" (creditNoteInvoice obj) : (Data.Aeson..=) "lines" (creditNoteLines obj) : (Data.Aeson..=) "livemode" (creditNoteLivemode obj) : (Data.Aeson..=) "memo" (creditNoteMemo obj) : (Data.Aeson..=) "metadata" (creditNoteMetadata obj) : (Data.Aeson..=) "number" (creditNoteNumber obj) : (Data.Aeson..=) "object" (creditNoteObject obj) : (Data.Aeson..=) "out_of_band_amount" (creditNoteOutOfBandAmount obj) : (Data.Aeson..=) "pdf" (creditNotePdf obj) : (Data.Aeson..=) "reason" (creditNoteReason obj) : (Data.Aeson..=) "refund" (creditNoteRefund obj) : (Data.Aeson..=) "status" (creditNoteStatus obj) : (Data.Aeson..=) "subtotal" (creditNoteSubtotal obj) : (Data.Aeson..=) "tax_amounts" (creditNoteTaxAmounts obj) : (Data.Aeson..=) "total" (creditNoteTotal obj) : (Data.Aeson..=) "type" (creditNoteType obj) : (Data.Aeson..=) "voided_at" (creditNoteVoidedAt obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (creditNoteAmount obj) GHC.Base.<> ((Data.Aeson..=) "created" (creditNoteCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (creditNoteCurrency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (creditNoteCustomer obj) GHC.Base.<> ((Data.Aeson..=) "customer_balance_transaction" (creditNoteCustomerBalanceTransaction obj) GHC.Base.<> ((Data.Aeson..=) "discount_amount" (creditNoteDiscountAmount obj) GHC.Base.<> ((Data.Aeson..=) "id" (creditNoteId obj) GHC.Base.<> ((Data.Aeson..=) "invoice" (creditNoteInvoice obj) GHC.Base.<> ((Data.Aeson..=) "lines" (creditNoteLines obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (creditNoteLivemode obj) GHC.Base.<> ((Data.Aeson..=) "memo" (creditNoteMemo obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (creditNoteMetadata obj) GHC.Base.<> ((Data.Aeson..=) "number" (creditNoteNumber obj) GHC.Base.<> ((Data.Aeson..=) "object" (creditNoteObject obj) GHC.Base.<> ((Data.Aeson..=) "out_of_band_amount" (creditNoteOutOfBandAmount obj) GHC.Base.<> ((Data.Aeson..=) "pdf" (creditNotePdf obj) GHC.Base.<> ((Data.Aeson..=) "reason" (creditNoteReason obj) GHC.Base.<> ((Data.Aeson..=) "refund" (creditNoteRefund obj) GHC.Base.<> ((Data.Aeson..=) "status" (creditNoteStatus obj) GHC.Base.<> ((Data.Aeson..=) "subtotal" (creditNoteSubtotal obj) GHC.Base.<> ((Data.Aeson..=) "tax_amounts" (creditNoteTaxAmounts obj) GHC.Base.<> ((Data.Aeson..=) "total" (creditNoteTotal obj) GHC.Base.<> ((Data.Aeson..=) "type" (creditNoteType obj) GHC.Base.<> (Data.Aeson..=) "voided_at" (creditNoteVoidedAt obj))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON CreditNote where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CreditNote" (\obj -> (((((((((((((((((((((((GHC.Base.pure CreditNote GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer_balance_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "discount_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "invoice")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "lines")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "memo")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "out_of_band_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "pdf")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "refund")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "subtotal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "tax_amounts")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "total")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "voided_at"))

-- | Define the one-of schema credit_noteCustomer\'
--
-- ID of the customer.
data CreditNoteCustomer'Variants
  = CreditNoteCustomer'Customer Customer
  | CreditNoteCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CreditNoteCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CreditNoteCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema credit_noteCustomer_balance_transaction\'
--
-- Customer balance transaction related to this credit note.
data CreditNoteCustomerBalanceTransaction'Variants
  = CreditNoteCustomerBalanceTransaction'CustomerBalanceTransaction CustomerBalanceTransaction
  | CreditNoteCustomerBalanceTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CreditNoteCustomerBalanceTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CreditNoteCustomerBalanceTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema credit_noteInvoice\'
--
-- ID of the invoice.
data CreditNoteInvoice'Variants
  = CreditNoteInvoice'Invoice Invoice
  | CreditNoteInvoice'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CreditNoteInvoice'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CreditNoteInvoice'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema credit_noteLines\'
--
-- Line items that make up the credit note
data CreditNoteLines'
  = CreditNoteLines'
      { -- | data: Details about each object.
        creditNoteLines'Data :: ([] CreditNoteLineItem),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        creditNoteLines'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        creditNoteLines'Object :: CreditNoteLines'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        creditNoteLines'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CreditNoteLines' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (creditNoteLines'Data obj) : (Data.Aeson..=) "has_more" (creditNoteLines'HasMore obj) : (Data.Aeson..=) "object" (creditNoteLines'Object obj) : (Data.Aeson..=) "url" (creditNoteLines'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (creditNoteLines'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (creditNoteLines'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (creditNoteLines'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (creditNoteLines'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON CreditNoteLines' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CreditNoteLines'" (\obj -> (((GHC.Base.pure CreditNoteLines' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema credit_noteLines\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data CreditNoteLines'Object'
  = CreditNoteLines'Object'EnumOther Data.Aeson.Types.Internal.Value
  | CreditNoteLines'Object'EnumTyped Data.Text.Internal.Text
  | CreditNoteLines'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CreditNoteLines'Object' where
  toJSON (CreditNoteLines'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CreditNoteLines'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CreditNoteLines'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON CreditNoteLines'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then CreditNoteLines'Object'EnumStringList
          else CreditNoteLines'Object'EnumOther val
      )

-- | Defines the data type for the schema credit_noteMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data CreditNoteMetadata'
  = CreditNoteMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CreditNoteMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON CreditNoteMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CreditNoteMetadata'" (\obj -> GHC.Base.pure CreditNoteMetadata')

-- | Defines the enum schema credit_noteObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data CreditNoteObject'
  = CreditNoteObject'EnumOther Data.Aeson.Types.Internal.Value
  | CreditNoteObject'EnumTyped Data.Text.Internal.Text
  | CreditNoteObject'EnumStringCreditNote
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CreditNoteObject' where
  toJSON (CreditNoteObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CreditNoteObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CreditNoteObject'EnumStringCreditNote) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "credit_note"

instance Data.Aeson.FromJSON CreditNoteObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "credit_note")
          then CreditNoteObject'EnumStringCreditNote
          else CreditNoteObject'EnumOther val
      )

-- | Defines the enum schema credit_noteReason\'
--
-- Reason for issuing this credit note, one of \`duplicate\`, \`fraudulent\`, \`order_change\`, or \`product_unsatisfactory\`
data CreditNoteReason'
  = CreditNoteReason'EnumOther Data.Aeson.Types.Internal.Value
  | CreditNoteReason'EnumTyped Data.Text.Internal.Text
  | CreditNoteReason'EnumStringDuplicate
  | CreditNoteReason'EnumStringFraudulent
  | CreditNoteReason'EnumStringOrderChange
  | CreditNoteReason'EnumStringProductUnsatisfactory
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CreditNoteReason' where
  toJSON (CreditNoteReason'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CreditNoteReason'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CreditNoteReason'EnumStringDuplicate) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "duplicate"
  toJSON (CreditNoteReason'EnumStringFraudulent) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fraudulent"
  toJSON (CreditNoteReason'EnumStringOrderChange) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "order_change"
  toJSON (CreditNoteReason'EnumStringProductUnsatisfactory) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "product_unsatisfactory"

instance Data.Aeson.FromJSON CreditNoteReason' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "duplicate")
          then CreditNoteReason'EnumStringDuplicate
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fraudulent")
              then CreditNoteReason'EnumStringFraudulent
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "order_change")
                  then CreditNoteReason'EnumStringOrderChange
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "product_unsatisfactory")
                      then CreditNoteReason'EnumStringProductUnsatisfactory
                      else CreditNoteReason'EnumOther val
      )

-- | Define the one-of schema credit_noteRefund\'
--
-- Refund related to this credit note.
data CreditNoteRefund'Variants
  = CreditNoteRefund'Refund Refund
  | CreditNoteRefund'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CreditNoteRefund'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CreditNoteRefund'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema credit_noteStatus\'
--
-- Status of this credit note, one of \`issued\` or \`void\`. Learn more about [voiding credit notes](https:\/\/stripe.com\/docs\/billing\/invoices\/credit-notes\#voiding).
data CreditNoteStatus'
  = CreditNoteStatus'EnumOther Data.Aeson.Types.Internal.Value
  | CreditNoteStatus'EnumTyped Data.Text.Internal.Text
  | CreditNoteStatus'EnumStringIssued
  | CreditNoteStatus'EnumStringVoid
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CreditNoteStatus' where
  toJSON (CreditNoteStatus'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CreditNoteStatus'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CreditNoteStatus'EnumStringIssued) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issued"
  toJSON (CreditNoteStatus'EnumStringVoid) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "void"

instance Data.Aeson.FromJSON CreditNoteStatus' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issued")
          then CreditNoteStatus'EnumStringIssued
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "void")
              then CreditNoteStatus'EnumStringVoid
              else CreditNoteStatus'EnumOther val
      )

-- | Defines the enum schema credit_noteType\'
--
-- Type of this credit note, one of \`pre_payment\` or \`post_payment\`. A \`pre_payment\` credit note means it was issued when the invoice was open. A \`post_payment\` credit note means it was issued when the invoice was paid.
data CreditNoteType'
  = CreditNoteType'EnumOther Data.Aeson.Types.Internal.Value
  | CreditNoteType'EnumTyped Data.Text.Internal.Text
  | CreditNoteType'EnumStringPostPayment
  | CreditNoteType'EnumStringPrePayment
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CreditNoteType' where
  toJSON (CreditNoteType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CreditNoteType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CreditNoteType'EnumStringPostPayment) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "post_payment"
  toJSON (CreditNoteType'EnumStringPrePayment) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pre_payment"

instance Data.Aeson.FromJSON CreditNoteType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "post_payment")
          then CreditNoteType'EnumStringPostPayment
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pre_payment")
              then CreditNoteType'EnumStringPrePayment
              else CreditNoteType'EnumOther val
      )

-- | Defines the data type for the schema customer
--
-- \`Customer\` objects allow you to perform recurring charges, and to track
-- multiple charges, that are associated with the same customer. The API allows
-- you to create, delete, and update your customers. You can retrieve individual
-- customers as well as a list of all your customers.
--
-- Related guide: [Saving Cards with Customers](https:\/\/stripe.com\/docs\/saving-cards).
data Customer
  = Customer
      { -- | address: The customer\'s address.
        customerAddress :: (GHC.Maybe.Maybe CustomerAddress'),
        -- | balance: Current balance, if any, being stored on the customer. If negative, the customer has credit to apply to their next invoice. If positive, the customer has an amount owed that will be added to their next invoice. The balance does not refer to any unpaid invoices; it solely takes into account amounts that have yet to be successfully applied to any invoice. This balance is only taken into account as invoices are finalized.
        customerBalance :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        customerCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/currencies) the customer can be charged in for recurring billing purposes.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | default_source: ID of the default payment source for the customer.
        --
        -- If you are using payment methods created via the PaymentMethods API, see the [invoice_settings.default_payment_method](https:\/\/stripe.com\/docs\/api\/customers\/object\#customer_object-invoice_settings-default_payment_method) field instead.
        customerDefaultSource :: (GHC.Maybe.Maybe CustomerDefaultSource'Variants),
        -- | delinquent: When the customer\'s latest invoice is billed by charging automatically, delinquent is true if the invoice\'s latest charge is failed. When the customer\'s latest invoice is billed by sending an invoice, delinquent is true if the invoice is not paid by its due date.
        customerDelinquent :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | discount: Describes the current discount active on the customer, if there is one.
        customerDiscount :: (GHC.Maybe.Maybe CustomerDiscount'),
        -- | email: The customer\'s email address.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerId :: Data.Text.Internal.Text,
        -- | invoice_prefix: The prefix for the customer used to generate unique invoice numbers.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerInvoicePrefix :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | invoice_settings:
        customerInvoiceSettings :: (GHC.Maybe.Maybe InvoiceSettingCustomerSetting),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        customerLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        customerMetadata :: (GHC.Maybe.Maybe CustomerMetadata'),
        -- | name: The customer\'s full name or business name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | next_invoice_sequence: The suffix of the customer\'s next invoice number, e.g., 0001.
        customerNextInvoiceSequence :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        customerObject :: CustomerObject',
        -- | phone: The customer\'s phone number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | preferred_locales: The customer\'s preferred locales (languages), ordered by preference.
        customerPreferredLocales :: (GHC.Maybe.Maybe ([] Data.Text.Internal.Text)),
        -- | shipping: Mailing and shipping address for the customer. Appears on invoices emailed to this customer.
        customerShipping :: (GHC.Maybe.Maybe CustomerShipping'),
        -- | sources: The customer\'s payment sources, if any.
        customerSources :: CustomerSources',
        -- | subscriptions: The customer\'s current subscriptions, if any.
        customerSubscriptions :: (GHC.Maybe.Maybe CustomerSubscriptions'),
        -- | tax_exempt: Describes the customer\'s tax exemption status. One of \`none\`, \`exempt\`, or \`reverse\`. When set to \`reverse\`, invoice and receipt PDFs include the text **\"Reverse charge\"**.
        customerTaxExempt :: (GHC.Maybe.Maybe CustomerTaxExempt'),
        -- | tax_ids: The customer\'s tax IDs.
        customerTaxIds :: (GHC.Maybe.Maybe CustomerTaxIds')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Customer where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (customerAddress obj) : (Data.Aeson..=) "balance" (customerBalance obj) : (Data.Aeson..=) "created" (customerCreated obj) : (Data.Aeson..=) "currency" (customerCurrency obj) : (Data.Aeson..=) "default_source" (customerDefaultSource obj) : (Data.Aeson..=) "delinquent" (customerDelinquent obj) : (Data.Aeson..=) "description" (customerDescription obj) : (Data.Aeson..=) "discount" (customerDiscount obj) : (Data.Aeson..=) "email" (customerEmail obj) : (Data.Aeson..=) "id" (customerId obj) : (Data.Aeson..=) "invoice_prefix" (customerInvoicePrefix obj) : (Data.Aeson..=) "invoice_settings" (customerInvoiceSettings obj) : (Data.Aeson..=) "livemode" (customerLivemode obj) : (Data.Aeson..=) "metadata" (customerMetadata obj) : (Data.Aeson..=) "name" (customerName obj) : (Data.Aeson..=) "next_invoice_sequence" (customerNextInvoiceSequence obj) : (Data.Aeson..=) "object" (customerObject obj) : (Data.Aeson..=) "phone" (customerPhone obj) : (Data.Aeson..=) "preferred_locales" (customerPreferredLocales obj) : (Data.Aeson..=) "shipping" (customerShipping obj) : (Data.Aeson..=) "sources" (customerSources obj) : (Data.Aeson..=) "subscriptions" (customerSubscriptions obj) : (Data.Aeson..=) "tax_exempt" (customerTaxExempt obj) : (Data.Aeson..=) "tax_ids" (customerTaxIds obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (customerAddress obj) GHC.Base.<> ((Data.Aeson..=) "balance" (customerBalance obj) GHC.Base.<> ((Data.Aeson..=) "created" (customerCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (customerCurrency obj) GHC.Base.<> ((Data.Aeson..=) "default_source" (customerDefaultSource obj) GHC.Base.<> ((Data.Aeson..=) "delinquent" (customerDelinquent obj) GHC.Base.<> ((Data.Aeson..=) "description" (customerDescription obj) GHC.Base.<> ((Data.Aeson..=) "discount" (customerDiscount obj) GHC.Base.<> ((Data.Aeson..=) "email" (customerEmail obj) GHC.Base.<> ((Data.Aeson..=) "id" (customerId obj) GHC.Base.<> ((Data.Aeson..=) "invoice_prefix" (customerInvoicePrefix obj) GHC.Base.<> ((Data.Aeson..=) "invoice_settings" (customerInvoiceSettings obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (customerLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (customerMetadata obj) GHC.Base.<> ((Data.Aeson..=) "name" (customerName obj) GHC.Base.<> ((Data.Aeson..=) "next_invoice_sequence" (customerNextInvoiceSequence obj) GHC.Base.<> ((Data.Aeson..=) "object" (customerObject obj) GHC.Base.<> ((Data.Aeson..=) "phone" (customerPhone obj) GHC.Base.<> ((Data.Aeson..=) "preferred_locales" (customerPreferredLocales obj) GHC.Base.<> ((Data.Aeson..=) "shipping" (customerShipping obj) GHC.Base.<> ((Data.Aeson..=) "sources" (customerSources obj) GHC.Base.<> ((Data.Aeson..=) "subscriptions" (customerSubscriptions obj) GHC.Base.<> ((Data.Aeson..=) "tax_exempt" (customerTaxExempt obj) GHC.Base.<> (Data.Aeson..=) "tax_ids" (customerTaxIds obj))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Customer where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Customer" (\obj -> (((((((((((((((((((((((GHC.Base.pure Customer GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "balance")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_source")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "delinquent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "discount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "invoice_prefix")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "invoice_settings")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "next_invoice_sequence")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "preferred_locales")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "sources")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscriptions")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_exempt")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_ids"))

-- | Defines the data type for the schema customerAddress\'
--
-- The customer\\\'s address.
data CustomerAddress'
  = CustomerAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (customerAddress'City obj) : (Data.Aeson..=) "country" (customerAddress'Country obj) : (Data.Aeson..=) "line1" (customerAddress'Line1 obj) : (Data.Aeson..=) "line2" (customerAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (customerAddress'PostalCode obj) : (Data.Aeson..=) "state" (customerAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (customerAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (customerAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (customerAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (customerAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (customerAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (customerAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerAddress'" (\obj -> (((((GHC.Base.pure CustomerAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Define the one-of schema customerDefault_source\'
--
-- ID of the default payment source for the customer.
--
-- If you are using payment methods created via the PaymentMethods API, see the [invoice_settings.default_payment_method](https:\/\/stripe.com\/docs\/api\/customers\/object\#customer_object-invoice_settings-default_payment_method) field instead.
data CustomerDefaultSource'Variants
  = CustomerDefaultSource'AlipayAccount AlipayAccount
  | CustomerDefaultSource'BankAccount BankAccount
  | CustomerDefaultSource'BitcoinReceiver BitcoinReceiver
  | CustomerDefaultSource'Card Card
  | CustomerDefaultSource'Source Source
  | CustomerDefaultSource'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CustomerDefaultSource'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CustomerDefaultSource'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema customerDiscount\'
--
-- Describes the current discount active on the customer, if there is one.
data CustomerDiscount'
  = CustomerDiscount'
      { -- | coupon: A coupon contains information about a percent-off or amount-off discount you
        -- might want to apply to a customer. Coupons may be applied to [invoices](https:\/\/stripe.com\/docs\/api\#invoices) or
        -- [orders](https:\/\/stripe.com\/docs\/api\#create_order-coupon). Coupons do not work with conventional one-off [charges](https:\/\/stripe.com\/docs\/api\#create_charge).
        customerDiscount'Coupon :: (GHC.Maybe.Maybe Coupon),
        -- | customer: The ID of the customer associated with this discount.
        customerDiscount'Customer :: (GHC.Maybe.Maybe CustomerDiscount'Customer'Variants),
        -- | end: If the coupon has a duration of \`repeating\`, the date that this discount will end. If the coupon has a duration of \`once\` or \`forever\`, this attribute will be null.
        customerDiscount'End :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        customerDiscount'Object :: (GHC.Maybe.Maybe CustomerDiscount'Object'),
        -- | start: Date that the coupon was applied.
        customerDiscount'Start :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | subscription: The subscription that this coupon is applied to, if it is applied to a particular subscription.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerDiscount'Subscription :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerDiscount' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "coupon" (customerDiscount'Coupon obj) : (Data.Aeson..=) "customer" (customerDiscount'Customer obj) : (Data.Aeson..=) "end" (customerDiscount'End obj) : (Data.Aeson..=) "object" (customerDiscount'Object obj) : (Data.Aeson..=) "start" (customerDiscount'Start obj) : (Data.Aeson..=) "subscription" (customerDiscount'Subscription obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "coupon" (customerDiscount'Coupon obj) GHC.Base.<> ((Data.Aeson..=) "customer" (customerDiscount'Customer obj) GHC.Base.<> ((Data.Aeson..=) "end" (customerDiscount'End obj) GHC.Base.<> ((Data.Aeson..=) "object" (customerDiscount'Object obj) GHC.Base.<> ((Data.Aeson..=) "start" (customerDiscount'Start obj) GHC.Base.<> (Data.Aeson..=) "subscription" (customerDiscount'Subscription obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerDiscount' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerDiscount'" (\obj -> (((((GHC.Base.pure CustomerDiscount' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "coupon")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "end")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "start")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscription"))

-- | Define the one-of schema customerDiscount\'Customer\'
--
-- The ID of the customer associated with this discount.
data CustomerDiscount'Customer'Variants
  = CustomerDiscount'Customer'Customer Customer
  | CustomerDiscount'Customer'DeletedCustomer DeletedCustomer
  | CustomerDiscount'Customer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CustomerDiscount'Customer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CustomerDiscount'Customer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema customerDiscount\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data CustomerDiscount'Object'
  = CustomerDiscount'Object'EnumOther Data.Aeson.Types.Internal.Value
  | CustomerDiscount'Object'EnumTyped Data.Text.Internal.Text
  | CustomerDiscount'Object'EnumStringDiscount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CustomerDiscount'Object' where
  toJSON (CustomerDiscount'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerDiscount'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerDiscount'Object'EnumStringDiscount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount"

instance Data.Aeson.FromJSON CustomerDiscount'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount")
          then CustomerDiscount'Object'EnumStringDiscount
          else CustomerDiscount'Object'EnumOther val
      )

-- | Defines the data type for the schema customerMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data CustomerMetadata'
  = CustomerMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerMetadata'" (\obj -> GHC.Base.pure CustomerMetadata')

-- | Defines the enum schema customerObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data CustomerObject'
  = CustomerObject'EnumOther Data.Aeson.Types.Internal.Value
  | CustomerObject'EnumTyped Data.Text.Internal.Text
  | CustomerObject'EnumStringCustomer
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CustomerObject' where
  toJSON (CustomerObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerObject'EnumStringCustomer) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "customer"

instance Data.Aeson.FromJSON CustomerObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "customer")
          then CustomerObject'EnumStringCustomer
          else CustomerObject'EnumOther val
      )

-- | Defines the data type for the schema customerShipping\'
--
-- Mailing and shipping address for the customer. Appears on invoices emailed to this customer.
data CustomerShipping'
  = CustomerShipping'
      { -- | address:
        customerShipping'Address :: (GHC.Maybe.Maybe Address),
        -- | carrier: The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerShipping'Carrier :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Recipient name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerShipping'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | phone: Recipient phone (including extension).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerShipping'Phone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | tracking_number: The tracking number for a physical product, obtained from the delivery service. If multiple tracking numbers were generated for this purchase, please separate them with commas.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerShipping'TrackingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerShipping' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (customerShipping'Address obj) : (Data.Aeson..=) "carrier" (customerShipping'Carrier obj) : (Data.Aeson..=) "name" (customerShipping'Name obj) : (Data.Aeson..=) "phone" (customerShipping'Phone obj) : (Data.Aeson..=) "tracking_number" (customerShipping'TrackingNumber obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (customerShipping'Address obj) GHC.Base.<> ((Data.Aeson..=) "carrier" (customerShipping'Carrier obj) GHC.Base.<> ((Data.Aeson..=) "name" (customerShipping'Name obj) GHC.Base.<> ((Data.Aeson..=) "phone" (customerShipping'Phone obj) GHC.Base.<> (Data.Aeson..=) "tracking_number" (customerShipping'TrackingNumber obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerShipping' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerShipping'" (\obj -> ((((GHC.Base.pure CustomerShipping' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "carrier")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tracking_number"))

-- | Defines the data type for the schema customerSources\'
--
-- The customer\'s payment sources, if any.
data CustomerSources'
  = CustomerSources'
      { -- | data: Details about each object.
        customerSources'Data :: ([] CustomerSources'Data'),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        customerSources'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        customerSources'Object :: CustomerSources'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerSources' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (customerSources'Data obj) : (Data.Aeson..=) "has_more" (customerSources'HasMore obj) : (Data.Aeson..=) "object" (customerSources'Object obj) : (Data.Aeson..=) "url" (customerSources'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (customerSources'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (customerSources'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (customerSources'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (customerSources'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerSources' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerSources'" (\obj -> (((GHC.Base.pure CustomerSources' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the data type for the schema customerSources\'Data\'
data CustomerSources'Data'
  = CustomerSources'Data'
      { -- | account: The ID of the account that the bank account is associated with.
        customerSources'Data'Account :: (GHC.Maybe.Maybe CustomerSources'Data'Account'Variants),
        -- | account_holder_name: The name of the person or business that owns the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'AccountHolderName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | account_holder_type: The type of entity that holds the account. This can be either \`individual\` or \`company\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'AccountHolderType :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | ach_credit_transfer
        customerSources'Data'AchCreditTransfer :: (GHC.Maybe.Maybe SourceTypeAchCreditTransfer),
        -- | ach_debit
        customerSources'Data'AchDebit :: (GHC.Maybe.Maybe SourceTypeAchDebit),
        -- | active: True when this bitcoin receiver has received a non-zero amount of bitcoin.
        customerSources'Data'Active :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | address_city: City\/District\/Suburb\/Town\/Village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'AddressCity :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_country: Billing address country, if provided when creating card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'AddressCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1: Address line 1 (Street address\/PO Box\/Company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'AddressLine1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1_check: If \`address_line1\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'AddressLine1Check :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line2: Address line 2 (Apartment\/Suite\/Unit\/Building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'AddressLine2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_state: State\/County\/Province\/Region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'AddressState :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'AddressZip :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip_check: If \`address_zip\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'AddressZipCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | alipay
        customerSources'Data'Alipay :: (GHC.Maybe.Maybe SourceTypeAlipay),
        -- | amount: The amount of \`currency\` that you are collecting as payment.
        customerSources'Data'Amount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | amount_received: The amount of \`currency\` to which \`bitcoin_amount_received\` has been converted.
        customerSources'Data'AmountReceived :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | available_payout_methods: A set of available payout methods for this card. Will be either \`[\"standard\"]\` or \`[\"standard\", \"instant\"]\`. Only values from this set should be passed as the \`method\` when creating a transfer.
        customerSources'Data'AvailablePayoutMethods :: (GHC.Maybe.Maybe ([] CustomerSources'Data'AvailablePayoutMethods')),
        -- | bancontact
        customerSources'Data'Bancontact :: (GHC.Maybe.Maybe SourceTypeBancontact),
        -- | bank_name: Name of the bank associated with the routing number (e.g., \`WELLS FARGO\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'BankName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | bitcoin_amount: The amount of bitcoin that the customer should send to fill the receiver. The \`bitcoin_amount\` is denominated in Satoshi: there are 10^8 Satoshi in one bitcoin.
        customerSources'Data'BitcoinAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | bitcoin_amount_received: The amount of bitcoin that has been sent by the customer to this receiver.
        customerSources'Data'BitcoinAmountReceived :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | bitcoin_uri: This URI can be displayed to the customer as a clickable link (to activate their bitcoin client) or as a QR code (for mobile wallets).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'BitcoinUri :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | brand: Card brand. Can be \`American Express\`, \`Diners Club\`, \`Discover\`, \`JCB\`, \`MasterCard\`, \`UnionPay\`, \`Visa\`, or \`Unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Brand :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | card
        customerSources'Data'Card :: (GHC.Maybe.Maybe SourceTypeCard),
        -- | card_present
        customerSources'Data'CardPresent :: (GHC.Maybe.Maybe SourceTypeCardPresent),
        -- | client_secret: The client secret of the source. Used for client-side retrieval using a publishable key.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'ClientSecret :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | code_verification:
        customerSources'Data'CodeVerification :: (GHC.Maybe.Maybe SourceCodeVerificationFlow),
        -- | country: Two-letter ISO code representing the country the bank account is located in.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        customerSources'Data'Created :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/payouts) paid out to the bank account.
        customerSources'Data'Currency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer: The ID of the customer associated with this Alipay Account.
        customerSources'Data'Customer :: (GHC.Maybe.Maybe CustomerSources'Data'Customer'Variants),
        -- | cvc_check: If a CVC was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'CvcCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | default_for_currency: Whether this bank account is the default external account for its currency.
        customerSources'Data'DefaultForCurrency :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Description :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'DynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | email: The customer\'s email address, set by the API call that creates the receiver.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Email :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | eps
        customerSources'Data'Eps :: (GHC.Maybe.Maybe SourceTypeEps),
        -- | exp_month: Two-digit number representing the card\'s expiration month.
        customerSources'Data'ExpMonth :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | exp_year: Four-digit number representing the card\'s expiration year.
        customerSources'Data'ExpYear :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | filled: This flag is initially false and updates to true when the customer sends the \`bitcoin_amount\` to this receiver.
        customerSources'Data'Filled :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | fingerprint: Uniquely identifies the account and will be the same across all Alipay account objects that are linked to the same Alipay account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Fingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | flow: The authentication \`flow\` of the source. \`flow\` is one of \`redirect\`, \`receiver\`, \`code_verification\`, \`none\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Flow :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Funding :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | giropay
        customerSources'Data'Giropay :: (GHC.Maybe.Maybe SourceTypeGiropay),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | ideal
        customerSources'Data'Ideal :: (GHC.Maybe.Maybe SourceTypeIdeal),
        -- | inbound_address: A bitcoin address that is specific to this receiver. The customer can send bitcoin to this address to fill the receiver.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'InboundAddress :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | klarna
        customerSources'Data'Klarna :: (GHC.Maybe.Maybe SourceTypeKlarna),
        -- | last4: The last four digits of the bank account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Last4 :: (GHC.Maybe.Maybe 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.
        customerSources'Data'Livemode :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        customerSources'Data'Metadata :: (GHC.Maybe.Maybe CustomerSources'Data'Metadata'),
        -- | multibanco
        customerSources'Data'Multibanco :: (GHC.Maybe.Maybe SourceTypeMultibanco),
        -- | name: Cardholder name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        customerSources'Data'Object :: (GHC.Maybe.Maybe CustomerSources'Data'Object'),
        -- | owner: Information about the owner of the payment instrument that may be used or required by particular source types.
        customerSources'Data'Owner :: (GHC.Maybe.Maybe CustomerSources'Data'Owner'),
        -- | p24
        customerSources'Data'P24 :: (GHC.Maybe.Maybe SourceTypeP24),
        -- | payment: The ID of the payment created from the receiver, if any. Hidden when viewing the receiver with a publishable key.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Payment :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | payment_amount: If the Alipay account object is not reusable, the exact amount that you can create a charge for.
        customerSources'Data'PaymentAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | payment_currency: If the Alipay account object is not reusable, the exact currency that you can create a charge for.
        customerSources'Data'PaymentCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | receiver:
        customerSources'Data'Receiver :: (GHC.Maybe.Maybe SourceReceiverFlow),
        -- | recipient: The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
        customerSources'Data'Recipient :: (GHC.Maybe.Maybe CustomerSources'Data'Recipient'Variants),
        -- | redirect:
        customerSources'Data'Redirect :: (GHC.Maybe.Maybe SourceRedirectFlow),
        -- | refund_address: The refund address of this bitcoin receiver.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'RefundAddress :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | reusable: True if you can create multiple payments using this account. If the account is reusable, then you can freely choose the amount of each payment.
        customerSources'Data'Reusable :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | routing_number: The routing transit number for the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'RoutingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | sepa_debit
        customerSources'Data'SepaDebit :: (GHC.Maybe.Maybe SourceTypeSepaDebit),
        -- | sofort
        customerSources'Data'Sofort :: (GHC.Maybe.Maybe SourceTypeSofort),
        -- | source_order:
        customerSources'Data'SourceOrder :: (GHC.Maybe.Maybe SourceOrder),
        -- | statement_descriptor: Extra information about a source. This will appear on your customer\'s statement every time you charge the source.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'StatementDescriptor :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: For bank accounts, possible values are \`new\`, \`validated\`, \`verified\`, \`verification_failed\`, or \`errored\`. A bank account that hasn\'t had any activity or validation performed is \`new\`. If Stripe can determine that the bank account exists, its status will be \`validated\`. Note that there often isn’t enough information to know (e.g., for smaller credit unions), and the validation is not always run. If customer bank account verification has succeeded, the bank account status will be \`verified\`. If the verification failed for any reason, such as microdeposit failure, the status will be \`verification_failed\`. If a transfer sent to this bank account fails, we\'ll set the status to \`errored\` and will not continue to send transfers until the bank details are updated.
        --
        -- For external accounts, possible values are \`new\` and \`errored\`. Validations aren\'t run against external accounts because they\'re only used for payouts. This means the other statuses don\'t apply. If a transfer fails, the status is set to \`errored\` and transfers are stopped until account details are updated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Status :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | three_d_secure
        customerSources'Data'ThreeDSecure :: (GHC.Maybe.Maybe SourceTypeThreeDSecure),
        -- | tokenization_method: If the card number is tokenized, this is the method that was used. Can be \`amex_express_checkout\`, \`android_pay\` (includes Google Pay), \`apple_pay\`, \`masterpass\`, \`visa_checkout\`, or null.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'TokenizationMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | transactions: A list with one entry for each time that the customer sent bitcoin to the receiver. Hidden when viewing the receiver with a publishable key.
        customerSources'Data'Transactions :: (GHC.Maybe.Maybe CustomerSources'Data'Transactions'),
        -- | type: The \`type\` of the source. The \`type\` is a payment method, one of \`ach_credit_transfer\`, \`ach_debit\`, \`alipay\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`multibanco\`, \`klarna\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`three_d_secure\`, or \`wechat\`. An additional hash is included on the source with a name matching this value. It contains additional information specific to the [payment method](https:\/\/stripe.com\/docs\/sources) used.
        customerSources'Data'Type :: (GHC.Maybe.Maybe CustomerSources'Data'Type'),
        -- | uncaptured_funds: This receiver contains uncaptured funds that can be used for a payment or refunded.
        customerSources'Data'UncapturedFunds :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | usage: Either \`reusable\` or \`single_use\`. Whether this source should be reusable or not. Some source types may or may not be reusable by construction, while others may leave the option at creation. If an incompatible value is passed, an error will be returned.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Usage :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | used: Whether this Alipay account object has ever been used for a payment.
        customerSources'Data'Used :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | used_for_payment: Indicate if this source is used for payment.
        customerSources'Data'UsedForPayment :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | username: The username for the Alipay account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Username :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | wechat
        customerSources'Data'Wechat :: (GHC.Maybe.Maybe SourceTypeWechat)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerSources'Data' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (customerSources'Data'Account obj) : (Data.Aeson..=) "account_holder_name" (customerSources'Data'AccountHolderName obj) : (Data.Aeson..=) "account_holder_type" (customerSources'Data'AccountHolderType obj) : (Data.Aeson..=) "ach_credit_transfer" (customerSources'Data'AchCreditTransfer obj) : (Data.Aeson..=) "ach_debit" (customerSources'Data'AchDebit obj) : (Data.Aeson..=) "active" (customerSources'Data'Active obj) : (Data.Aeson..=) "address_city" (customerSources'Data'AddressCity obj) : (Data.Aeson..=) "address_country" (customerSources'Data'AddressCountry obj) : (Data.Aeson..=) "address_line1" (customerSources'Data'AddressLine1 obj) : (Data.Aeson..=) "address_line1_check" (customerSources'Data'AddressLine1Check obj) : (Data.Aeson..=) "address_line2" (customerSources'Data'AddressLine2 obj) : (Data.Aeson..=) "address_state" (customerSources'Data'AddressState obj) : (Data.Aeson..=) "address_zip" (customerSources'Data'AddressZip obj) : (Data.Aeson..=) "address_zip_check" (customerSources'Data'AddressZipCheck obj) : (Data.Aeson..=) "alipay" (customerSources'Data'Alipay obj) : (Data.Aeson..=) "amount" (customerSources'Data'Amount obj) : (Data.Aeson..=) "amount_received" (customerSources'Data'AmountReceived obj) : (Data.Aeson..=) "available_payout_methods" (customerSources'Data'AvailablePayoutMethods obj) : (Data.Aeson..=) "bancontact" (customerSources'Data'Bancontact obj) : (Data.Aeson..=) "bank_name" (customerSources'Data'BankName obj) : (Data.Aeson..=) "bitcoin_amount" (customerSources'Data'BitcoinAmount obj) : (Data.Aeson..=) "bitcoin_amount_received" (customerSources'Data'BitcoinAmountReceived obj) : (Data.Aeson..=) "bitcoin_uri" (customerSources'Data'BitcoinUri obj) : (Data.Aeson..=) "brand" (customerSources'Data'Brand obj) : (Data.Aeson..=) "card" (customerSources'Data'Card obj) : (Data.Aeson..=) "card_present" (customerSources'Data'CardPresent obj) : (Data.Aeson..=) "client_secret" (customerSources'Data'ClientSecret obj) : (Data.Aeson..=) "code_verification" (customerSources'Data'CodeVerification obj) : (Data.Aeson..=) "country" (customerSources'Data'Country obj) : (Data.Aeson..=) "created" (customerSources'Data'Created obj) : (Data.Aeson..=) "currency" (customerSources'Data'Currency obj) : (Data.Aeson..=) "customer" (customerSources'Data'Customer obj) : (Data.Aeson..=) "cvc_check" (customerSources'Data'CvcCheck obj) : (Data.Aeson..=) "default_for_currency" (customerSources'Data'DefaultForCurrency obj) : (Data.Aeson..=) "description" (customerSources'Data'Description obj) : (Data.Aeson..=) "dynamic_last4" (customerSources'Data'DynamicLast4 obj) : (Data.Aeson..=) "email" (customerSources'Data'Email obj) : (Data.Aeson..=) "eps" (customerSources'Data'Eps obj) : (Data.Aeson..=) "exp_month" (customerSources'Data'ExpMonth obj) : (Data.Aeson..=) "exp_year" (customerSources'Data'ExpYear obj) : (Data.Aeson..=) "filled" (customerSources'Data'Filled obj) : (Data.Aeson..=) "fingerprint" (customerSources'Data'Fingerprint obj) : (Data.Aeson..=) "flow" (customerSources'Data'Flow obj) : (Data.Aeson..=) "funding" (customerSources'Data'Funding obj) : (Data.Aeson..=) "giropay" (customerSources'Data'Giropay obj) : (Data.Aeson..=) "id" (customerSources'Data'Id obj) : (Data.Aeson..=) "ideal" (customerSources'Data'Ideal obj) : (Data.Aeson..=) "inbound_address" (customerSources'Data'InboundAddress obj) : (Data.Aeson..=) "klarna" (customerSources'Data'Klarna obj) : (Data.Aeson..=) "last4" (customerSources'Data'Last4 obj) : (Data.Aeson..=) "livemode" (customerSources'Data'Livemode obj) : (Data.Aeson..=) "metadata" (customerSources'Data'Metadata obj) : (Data.Aeson..=) "multibanco" (customerSources'Data'Multibanco obj) : (Data.Aeson..=) "name" (customerSources'Data'Name obj) : (Data.Aeson..=) "object" (customerSources'Data'Object obj) : (Data.Aeson..=) "owner" (customerSources'Data'Owner obj) : (Data.Aeson..=) "p24" (customerSources'Data'P24 obj) : (Data.Aeson..=) "payment" (customerSources'Data'Payment obj) : (Data.Aeson..=) "payment_amount" (customerSources'Data'PaymentAmount obj) : (Data.Aeson..=) "payment_currency" (customerSources'Data'PaymentCurrency obj) : (Data.Aeson..=) "receiver" (customerSources'Data'Receiver obj) : (Data.Aeson..=) "recipient" (customerSources'Data'Recipient obj) : (Data.Aeson..=) "redirect" (customerSources'Data'Redirect obj) : (Data.Aeson..=) "refund_address" (customerSources'Data'RefundAddress obj) : (Data.Aeson..=) "reusable" (customerSources'Data'Reusable obj) : (Data.Aeson..=) "routing_number" (customerSources'Data'RoutingNumber obj) : (Data.Aeson..=) "sepa_debit" (customerSources'Data'SepaDebit obj) : (Data.Aeson..=) "sofort" (customerSources'Data'Sofort obj) : (Data.Aeson..=) "source_order" (customerSources'Data'SourceOrder obj) : (Data.Aeson..=) "statement_descriptor" (customerSources'Data'StatementDescriptor obj) : (Data.Aeson..=) "status" (customerSources'Data'Status obj) : (Data.Aeson..=) "three_d_secure" (customerSources'Data'ThreeDSecure obj) : (Data.Aeson..=) "tokenization_method" (customerSources'Data'TokenizationMethod obj) : (Data.Aeson..=) "transactions" (customerSources'Data'Transactions obj) : (Data.Aeson..=) "type" (customerSources'Data'Type obj) : (Data.Aeson..=) "uncaptured_funds" (customerSources'Data'UncapturedFunds obj) : (Data.Aeson..=) "usage" (customerSources'Data'Usage obj) : (Data.Aeson..=) "used" (customerSources'Data'Used obj) : (Data.Aeson..=) "used_for_payment" (customerSources'Data'UsedForPayment obj) : (Data.Aeson..=) "username" (customerSources'Data'Username obj) : (Data.Aeson..=) "wechat" (customerSources'Data'Wechat obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (customerSources'Data'Account obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_name" (customerSources'Data'AccountHolderName obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_type" (customerSources'Data'AccountHolderType obj) GHC.Base.<> ((Data.Aeson..=) "ach_credit_transfer" (customerSources'Data'AchCreditTransfer obj) GHC.Base.<> ((Data.Aeson..=) "ach_debit" (customerSources'Data'AchDebit obj) GHC.Base.<> ((Data.Aeson..=) "active" (customerSources'Data'Active obj) GHC.Base.<> ((Data.Aeson..=) "address_city" (customerSources'Data'AddressCity obj) GHC.Base.<> ((Data.Aeson..=) "address_country" (customerSources'Data'AddressCountry obj) GHC.Base.<> ((Data.Aeson..=) "address_line1" (customerSources'Data'AddressLine1 obj) GHC.Base.<> ((Data.Aeson..=) "address_line1_check" (customerSources'Data'AddressLine1Check obj) GHC.Base.<> ((Data.Aeson..=) "address_line2" (customerSources'Data'AddressLine2 obj) GHC.Base.<> ((Data.Aeson..=) "address_state" (customerSources'Data'AddressState obj) GHC.Base.<> ((Data.Aeson..=) "address_zip" (customerSources'Data'AddressZip obj) GHC.Base.<> ((Data.Aeson..=) "address_zip_check" (customerSources'Data'AddressZipCheck obj) GHC.Base.<> ((Data.Aeson..=) "alipay" (customerSources'Data'Alipay obj) GHC.Base.<> ((Data.Aeson..=) "amount" (customerSources'Data'Amount obj) GHC.Base.<> ((Data.Aeson..=) "amount_received" (customerSources'Data'AmountReceived obj) GHC.Base.<> ((Data.Aeson..=) "available_payout_methods" (customerSources'Data'AvailablePayoutMethods obj) GHC.Base.<> ((Data.Aeson..=) "bancontact" (customerSources'Data'Bancontact obj) GHC.Base.<> ((Data.Aeson..=) "bank_name" (customerSources'Data'BankName obj) GHC.Base.<> ((Data.Aeson..=) "bitcoin_amount" (customerSources'Data'BitcoinAmount obj) GHC.Base.<> ((Data.Aeson..=) "bitcoin_amount_received" (customerSources'Data'BitcoinAmountReceived obj) GHC.Base.<> ((Data.Aeson..=) "bitcoin_uri" (customerSources'Data'BitcoinUri obj) GHC.Base.<> ((Data.Aeson..=) "brand" (customerSources'Data'Brand obj) GHC.Base.<> ((Data.Aeson..=) "card" (customerSources'Data'Card obj) GHC.Base.<> ((Data.Aeson..=) "card_present" (customerSources'Data'CardPresent obj) GHC.Base.<> ((Data.Aeson..=) "client_secret" (customerSources'Data'ClientSecret obj) GHC.Base.<> ((Data.Aeson..=) "code_verification" (customerSources'Data'CodeVerification obj) GHC.Base.<> ((Data.Aeson..=) "country" (customerSources'Data'Country obj) GHC.Base.<> ((Data.Aeson..=) "created" (customerSources'Data'Created obj) GHC.Base.<> ((Data.Aeson..=) "currency" (customerSources'Data'Currency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (customerSources'Data'Customer obj) GHC.Base.<> ((Data.Aeson..=) "cvc_check" (customerSources'Data'CvcCheck obj) GHC.Base.<> ((Data.Aeson..=) "default_for_currency" (customerSources'Data'DefaultForCurrency obj) GHC.Base.<> ((Data.Aeson..=) "description" (customerSources'Data'Description obj) GHC.Base.<> ((Data.Aeson..=) "dynamic_last4" (customerSources'Data'DynamicLast4 obj) GHC.Base.<> ((Data.Aeson..=) "email" (customerSources'Data'Email obj) GHC.Base.<> ((Data.Aeson..=) "eps" (customerSources'Data'Eps obj) GHC.Base.<> ((Data.Aeson..=) "exp_month" (customerSources'Data'ExpMonth obj) GHC.Base.<> ((Data.Aeson..=) "exp_year" (customerSources'Data'ExpYear obj) GHC.Base.<> ((Data.Aeson..=) "filled" (customerSources'Data'Filled obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (customerSources'Data'Fingerprint obj) GHC.Base.<> ((Data.Aeson..=) "flow" (customerSources'Data'Flow obj) GHC.Base.<> ((Data.Aeson..=) "funding" (customerSources'Data'Funding obj) GHC.Base.<> ((Data.Aeson..=) "giropay" (customerSources'Data'Giropay obj) GHC.Base.<> ((Data.Aeson..=) "id" (customerSources'Data'Id obj) GHC.Base.<> ((Data.Aeson..=) "ideal" (customerSources'Data'Ideal obj) GHC.Base.<> ((Data.Aeson..=) "inbound_address" (customerSources'Data'InboundAddress obj) GHC.Base.<> ((Data.Aeson..=) "klarna" (customerSources'Data'Klarna obj) GHC.Base.<> ((Data.Aeson..=) "last4" (customerSources'Data'Last4 obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (customerSources'Data'Livemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (customerSources'Data'Metadata obj) GHC.Base.<> ((Data.Aeson..=) "multibanco" (customerSources'Data'Multibanco obj) GHC.Base.<> ((Data.Aeson..=) "name" (customerSources'Data'Name obj) GHC.Base.<> ((Data.Aeson..=) "object" (customerSources'Data'Object obj) GHC.Base.<> ((Data.Aeson..=) "owner" (customerSources'Data'Owner obj) GHC.Base.<> ((Data.Aeson..=) "p24" (customerSources'Data'P24 obj) GHC.Base.<> ((Data.Aeson..=) "payment" (customerSources'Data'Payment obj) GHC.Base.<> ((Data.Aeson..=) "payment_amount" (customerSources'Data'PaymentAmount obj) GHC.Base.<> ((Data.Aeson..=) "payment_currency" (customerSources'Data'PaymentCurrency obj) GHC.Base.<> ((Data.Aeson..=) "receiver" (customerSources'Data'Receiver obj) GHC.Base.<> ((Data.Aeson..=) "recipient" (customerSources'Data'Recipient obj) GHC.Base.<> ((Data.Aeson..=) "redirect" (customerSources'Data'Redirect obj) GHC.Base.<> ((Data.Aeson..=) "refund_address" (customerSources'Data'RefundAddress obj) GHC.Base.<> ((Data.Aeson..=) "reusable" (customerSources'Data'Reusable obj) GHC.Base.<> ((Data.Aeson..=) "routing_number" (customerSources'Data'RoutingNumber obj) GHC.Base.<> ((Data.Aeson..=) "sepa_debit" (customerSources'Data'SepaDebit obj) GHC.Base.<> ((Data.Aeson..=) "sofort" (customerSources'Data'Sofort obj) GHC.Base.<> ((Data.Aeson..=) "source_order" (customerSources'Data'SourceOrder obj) GHC.Base.<> ((Data.Aeson..=) "statement_descriptor" (customerSources'Data'StatementDescriptor obj) GHC.Base.<> ((Data.Aeson..=) "status" (customerSources'Data'Status obj) GHC.Base.<> ((Data.Aeson..=) "three_d_secure" (customerSources'Data'ThreeDSecure obj) GHC.Base.<> ((Data.Aeson..=) "tokenization_method" (customerSources'Data'TokenizationMethod obj) GHC.Base.<> ((Data.Aeson..=) "transactions" (customerSources'Data'Transactions obj) GHC.Base.<> ((Data.Aeson..=) "type" (customerSources'Data'Type obj) GHC.Base.<> ((Data.Aeson..=) "uncaptured_funds" (customerSources'Data'UncapturedFunds obj) GHC.Base.<> ((Data.Aeson..=) "usage" (customerSources'Data'Usage obj) GHC.Base.<> ((Data.Aeson..=) "used" (customerSources'Data'Used obj) GHC.Base.<> ((Data.Aeson..=) "used_for_payment" (customerSources'Data'UsedForPayment obj) GHC.Base.<> ((Data.Aeson..=) "username" (customerSources'Data'Username obj) GHC.Base.<> (Data.Aeson..=) "wechat" (customerSources'Data'Wechat obj)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerSources'Data' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerSources'Data'" (\obj -> ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((GHC.Base.pure CustomerSources'Data' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_credit_transfer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "active")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_state")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "alipay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount_received")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "available_payout_methods")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bancontact")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bank_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bitcoin_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bitcoin_amount_received")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bitcoin_uri")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "brand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card_present")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "client_secret")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "code_verification")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cvc_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_for_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dynamic_last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "eps")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "filled")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "flow")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "funding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "giropay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ideal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "inbound_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "klarna")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "multibanco")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "owner")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "p24")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "receiver")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "recipient")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "redirect")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "refund_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "reusable")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "routing_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sepa_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sofort")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source_order")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "statement_descriptor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "three_d_secure")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tokenization_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transactions")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "uncaptured_funds")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "used")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "used_for_payment")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "username")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "wechat"))

-- | Define the one-of schema customerSources\'Data\'Account\'
--
-- The ID of the account that the bank account is associated with.
data CustomerSources'Data'Account'Variants
  = CustomerSources'Data'Account'Account Account
  | CustomerSources'Data'Account'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CustomerSources'Data'Account'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CustomerSources'Data'Account'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema customerSources\'Data\'Available_payout_methods\'
data CustomerSources'Data'AvailablePayoutMethods'
  = CustomerSources'Data'AvailablePayoutMethods'EnumOther Data.Aeson.Types.Internal.Value
  | CustomerSources'Data'AvailablePayoutMethods'EnumTyped Data.Text.Internal.Text
  | CustomerSources'Data'AvailablePayoutMethods'EnumStringInstant
  | CustomerSources'Data'AvailablePayoutMethods'EnumStringStandard
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CustomerSources'Data'AvailablePayoutMethods' where
  toJSON (CustomerSources'Data'AvailablePayoutMethods'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerSources'Data'AvailablePayoutMethods'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerSources'Data'AvailablePayoutMethods'EnumStringInstant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant"
  toJSON (CustomerSources'Data'AvailablePayoutMethods'EnumStringStandard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard"

instance Data.Aeson.FromJSON CustomerSources'Data'AvailablePayoutMethods' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant")
          then CustomerSources'Data'AvailablePayoutMethods'EnumStringInstant
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard")
              then CustomerSources'Data'AvailablePayoutMethods'EnumStringStandard
              else CustomerSources'Data'AvailablePayoutMethods'EnumOther val
      )

-- | Define the one-of schema customerSources\'Data\'Customer\'
--
-- The ID of the customer associated with this Alipay Account.
data CustomerSources'Data'Customer'Variants
  = CustomerSources'Data'Customer'Customer Customer
  | CustomerSources'Data'Customer'DeletedCustomer DeletedCustomer
  | CustomerSources'Data'Customer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CustomerSources'Data'Customer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CustomerSources'Data'Customer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema customerSources\'Data\'Metadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data CustomerSources'Data'Metadata'
  = CustomerSources'Data'Metadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerSources'Data'Metadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerSources'Data'Metadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerSources'Data'Metadata'" (\obj -> GHC.Base.pure CustomerSources'Data'Metadata')

-- | Defines the enum schema customerSources\'Data\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data CustomerSources'Data'Object'
  = CustomerSources'Data'Object'EnumOther Data.Aeson.Types.Internal.Value
  | CustomerSources'Data'Object'EnumTyped Data.Text.Internal.Text
  | CustomerSources'Data'Object'EnumStringAlipayAccount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CustomerSources'Data'Object' where
  toJSON (CustomerSources'Data'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerSources'Data'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerSources'Data'Object'EnumStringAlipayAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay_account"

instance Data.Aeson.FromJSON CustomerSources'Data'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay_account")
          then CustomerSources'Data'Object'EnumStringAlipayAccount
          else CustomerSources'Data'Object'EnumOther val
      )

-- | Defines the data type for the schema customerSources\'Data\'Owner\'
--
-- Information about the owner of the payment instrument that may be used or required by particular source types.
data CustomerSources'Data'Owner'
  = CustomerSources'Data'Owner'
      { -- | address: Owner\'s address.
        customerSources'Data'Owner'Address :: (GHC.Maybe.Maybe CustomerSources'Data'Owner'Address'),
        -- | email: Owner\'s email address.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'Email :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Owner\'s full name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | phone: Owner\'s phone number (including extension).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'Phone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_address: Verified owner\'s address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        customerSources'Data'Owner'VerifiedAddress :: (GHC.Maybe.Maybe CustomerSources'Data'Owner'VerifiedAddress'),
        -- | verified_email: Verified owner\'s email address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'VerifiedEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_name: Verified owner\'s full name. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'VerifiedName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_phone: Verified owner\'s phone number (including extension). Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'VerifiedPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerSources'Data'Owner' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (customerSources'Data'Owner'Address obj) : (Data.Aeson..=) "email" (customerSources'Data'Owner'Email obj) : (Data.Aeson..=) "name" (customerSources'Data'Owner'Name obj) : (Data.Aeson..=) "phone" (customerSources'Data'Owner'Phone obj) : (Data.Aeson..=) "verified_address" (customerSources'Data'Owner'VerifiedAddress obj) : (Data.Aeson..=) "verified_email" (customerSources'Data'Owner'VerifiedEmail obj) : (Data.Aeson..=) "verified_name" (customerSources'Data'Owner'VerifiedName obj) : (Data.Aeson..=) "verified_phone" (customerSources'Data'Owner'VerifiedPhone obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (customerSources'Data'Owner'Address obj) GHC.Base.<> ((Data.Aeson..=) "email" (customerSources'Data'Owner'Email obj) GHC.Base.<> ((Data.Aeson..=) "name" (customerSources'Data'Owner'Name obj) GHC.Base.<> ((Data.Aeson..=) "phone" (customerSources'Data'Owner'Phone obj) GHC.Base.<> ((Data.Aeson..=) "verified_address" (customerSources'Data'Owner'VerifiedAddress obj) GHC.Base.<> ((Data.Aeson..=) "verified_email" (customerSources'Data'Owner'VerifiedEmail obj) GHC.Base.<> ((Data.Aeson..=) "verified_name" (customerSources'Data'Owner'VerifiedName obj) GHC.Base.<> (Data.Aeson..=) "verified_phone" (customerSources'Data'Owner'VerifiedPhone obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerSources'Data'Owner' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerSources'Data'Owner'" (\obj -> (((((((GHC.Base.pure CustomerSources'Data'Owner' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_phone"))

-- | Defines the data type for the schema customerSources\'Data\'Owner\'Address\'
--
-- Owner\\\'s address.
data CustomerSources'Data'Owner'Address'
  = CustomerSources'Data'Owner'Address'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'Address'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'Address'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'Address'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'Address'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'Address'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'Address'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerSources'Data'Owner'Address' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (customerSources'Data'Owner'Address'City obj) : (Data.Aeson..=) "country" (customerSources'Data'Owner'Address'Country obj) : (Data.Aeson..=) "line1" (customerSources'Data'Owner'Address'Line1 obj) : (Data.Aeson..=) "line2" (customerSources'Data'Owner'Address'Line2 obj) : (Data.Aeson..=) "postal_code" (customerSources'Data'Owner'Address'PostalCode obj) : (Data.Aeson..=) "state" (customerSources'Data'Owner'Address'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (customerSources'Data'Owner'Address'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (customerSources'Data'Owner'Address'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (customerSources'Data'Owner'Address'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (customerSources'Data'Owner'Address'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (customerSources'Data'Owner'Address'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (customerSources'Data'Owner'Address'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerSources'Data'Owner'Address' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerSources'Data'Owner'Address'" (\obj -> (((((GHC.Base.pure CustomerSources'Data'Owner'Address' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema customerSources\'Data\'Owner\'Verified_address\'
--
-- Verified owner\\\'s address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
data CustomerSources'Data'Owner'VerifiedAddress'
  = CustomerSources'Data'Owner'VerifiedAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'VerifiedAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'VerifiedAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'VerifiedAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'VerifiedAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'VerifiedAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Owner'VerifiedAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerSources'Data'Owner'VerifiedAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (customerSources'Data'Owner'VerifiedAddress'City obj) : (Data.Aeson..=) "country" (customerSources'Data'Owner'VerifiedAddress'Country obj) : (Data.Aeson..=) "line1" (customerSources'Data'Owner'VerifiedAddress'Line1 obj) : (Data.Aeson..=) "line2" (customerSources'Data'Owner'VerifiedAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (customerSources'Data'Owner'VerifiedAddress'PostalCode obj) : (Data.Aeson..=) "state" (customerSources'Data'Owner'VerifiedAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (customerSources'Data'Owner'VerifiedAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (customerSources'Data'Owner'VerifiedAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (customerSources'Data'Owner'VerifiedAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (customerSources'Data'Owner'VerifiedAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (customerSources'Data'Owner'VerifiedAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (customerSources'Data'Owner'VerifiedAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerSources'Data'Owner'VerifiedAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerSources'Data'Owner'VerifiedAddress'" (\obj -> (((((GHC.Base.pure CustomerSources'Data'Owner'VerifiedAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Define the one-of schema customerSources\'Data\'Recipient\'
--
-- The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
data CustomerSources'Data'Recipient'Variants
  = CustomerSources'Data'Recipient'Recipient Recipient
  | CustomerSources'Data'Recipient'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CustomerSources'Data'Recipient'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CustomerSources'Data'Recipient'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema customerSources\'Data\'Transactions\'
--
-- A list with one entry for each time that the customer sent bitcoin to the receiver. Hidden when viewing the receiver with a publishable key.
data CustomerSources'Data'Transactions'
  = CustomerSources'Data'Transactions'
      { -- | data: Details about each object.
        customerSources'Data'Transactions'Data :: ([] BitcoinTransaction),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        customerSources'Data'Transactions'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        customerSources'Data'Transactions'Object :: CustomerSources'Data'Transactions'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSources'Data'Transactions'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerSources'Data'Transactions' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (customerSources'Data'Transactions'Data obj) : (Data.Aeson..=) "has_more" (customerSources'Data'Transactions'HasMore obj) : (Data.Aeson..=) "object" (customerSources'Data'Transactions'Object obj) : (Data.Aeson..=) "url" (customerSources'Data'Transactions'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (customerSources'Data'Transactions'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (customerSources'Data'Transactions'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (customerSources'Data'Transactions'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (customerSources'Data'Transactions'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerSources'Data'Transactions' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerSources'Data'Transactions'" (\obj -> (((GHC.Base.pure CustomerSources'Data'Transactions' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema customerSources\'Data\'Transactions\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data CustomerSources'Data'Transactions'Object'
  = CustomerSources'Data'Transactions'Object'EnumOther Data.Aeson.Types.Internal.Value
  | CustomerSources'Data'Transactions'Object'EnumTyped Data.Text.Internal.Text
  | CustomerSources'Data'Transactions'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CustomerSources'Data'Transactions'Object' where
  toJSON (CustomerSources'Data'Transactions'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerSources'Data'Transactions'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerSources'Data'Transactions'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON CustomerSources'Data'Transactions'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then CustomerSources'Data'Transactions'Object'EnumStringList
          else CustomerSources'Data'Transactions'Object'EnumOther val
      )

-- | Defines the enum schema customerSources\'Data\'Type\'
--
-- The \`type\` of the source. The \`type\` is a payment method, one of \`ach_credit_transfer\`, \`ach_debit\`, \`alipay\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`multibanco\`, \`klarna\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`three_d_secure\`, or \`wechat\`. An additional hash is included on the source with a name matching this value. It contains additional information specific to the [payment method](https:\/\/stripe.com\/docs\/sources) used.
data CustomerSources'Data'Type'
  = CustomerSources'Data'Type'EnumOther Data.Aeson.Types.Internal.Value
  | CustomerSources'Data'Type'EnumTyped Data.Text.Internal.Text
  | CustomerSources'Data'Type'EnumStringAchCreditTransfer
  | CustomerSources'Data'Type'EnumStringAchDebit
  | CustomerSources'Data'Type'EnumStringAlipay
  | CustomerSources'Data'Type'EnumStringBancontact
  | CustomerSources'Data'Type'EnumStringCard
  | CustomerSources'Data'Type'EnumStringCardPresent
  | CustomerSources'Data'Type'EnumStringEps
  | CustomerSources'Data'Type'EnumStringGiropay
  | CustomerSources'Data'Type'EnumStringIdeal
  | CustomerSources'Data'Type'EnumStringKlarna
  | CustomerSources'Data'Type'EnumStringMultibanco
  | CustomerSources'Data'Type'EnumStringP24
  | CustomerSources'Data'Type'EnumStringSepaDebit
  | CustomerSources'Data'Type'EnumStringSofort
  | CustomerSources'Data'Type'EnumStringThreeDSecure
  | CustomerSources'Data'Type'EnumStringWechat
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CustomerSources'Data'Type' where
  toJSON (CustomerSources'Data'Type'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerSources'Data'Type'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerSources'Data'Type'EnumStringAchCreditTransfer) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_credit_transfer"
  toJSON (CustomerSources'Data'Type'EnumStringAchDebit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_debit"
  toJSON (CustomerSources'Data'Type'EnumStringAlipay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay"
  toJSON (CustomerSources'Data'Type'EnumStringBancontact) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bancontact"
  toJSON (CustomerSources'Data'Type'EnumStringCard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card"
  toJSON (CustomerSources'Data'Type'EnumStringCardPresent) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_present"
  toJSON (CustomerSources'Data'Type'EnumStringEps) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eps"
  toJSON (CustomerSources'Data'Type'EnumStringGiropay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "giropay"
  toJSON (CustomerSources'Data'Type'EnumStringIdeal) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ideal"
  toJSON (CustomerSources'Data'Type'EnumStringKlarna) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "klarna"
  toJSON (CustomerSources'Data'Type'EnumStringMultibanco) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "multibanco"
  toJSON (CustomerSources'Data'Type'EnumStringP24) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "p24"
  toJSON (CustomerSources'Data'Type'EnumStringSepaDebit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sepa_debit"
  toJSON (CustomerSources'Data'Type'EnumStringSofort) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sofort"
  toJSON (CustomerSources'Data'Type'EnumStringThreeDSecure) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "three_d_secure"
  toJSON (CustomerSources'Data'Type'EnumStringWechat) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wechat"

instance Data.Aeson.FromJSON CustomerSources'Data'Type' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_credit_transfer")
          then CustomerSources'Data'Type'EnumStringAchCreditTransfer
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_debit")
              then CustomerSources'Data'Type'EnumStringAchDebit
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay")
                  then CustomerSources'Data'Type'EnumStringAlipay
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bancontact")
                      then CustomerSources'Data'Type'EnumStringBancontact
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card")
                          then CustomerSources'Data'Type'EnumStringCard
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_present")
                              then CustomerSources'Data'Type'EnumStringCardPresent
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eps")
                                  then CustomerSources'Data'Type'EnumStringEps
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "giropay")
                                      then CustomerSources'Data'Type'EnumStringGiropay
                                      else
                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ideal")
                                          then CustomerSources'Data'Type'EnumStringIdeal
                                          else
                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "klarna")
                                              then CustomerSources'Data'Type'EnumStringKlarna
                                              else
                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "multibanco")
                                                  then CustomerSources'Data'Type'EnumStringMultibanco
                                                  else
                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "p24")
                                                      then CustomerSources'Data'Type'EnumStringP24
                                                      else
                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sepa_debit")
                                                          then CustomerSources'Data'Type'EnumStringSepaDebit
                                                          else
                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sofort")
                                                              then CustomerSources'Data'Type'EnumStringSofort
                                                              else
                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "three_d_secure")
                                                                  then CustomerSources'Data'Type'EnumStringThreeDSecure
                                                                  else
                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wechat")
                                                                      then CustomerSources'Data'Type'EnumStringWechat
                                                                      else CustomerSources'Data'Type'EnumOther val
      )

-- | Defines the enum schema customerSources\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data CustomerSources'Object'
  = CustomerSources'Object'EnumOther Data.Aeson.Types.Internal.Value
  | CustomerSources'Object'EnumTyped Data.Text.Internal.Text
  | CustomerSources'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CustomerSources'Object' where
  toJSON (CustomerSources'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerSources'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerSources'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON CustomerSources'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then CustomerSources'Object'EnumStringList
          else CustomerSources'Object'EnumOther val
      )

-- | Defines the data type for the schema customerSubscriptions\'
--
-- The customer\'s current subscriptions, if any.
data CustomerSubscriptions'
  = CustomerSubscriptions'
      { -- | data: Details about each object.
        customerSubscriptions'Data :: ([] Subscription),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        customerSubscriptions'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        customerSubscriptions'Object :: CustomerSubscriptions'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerSubscriptions'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerSubscriptions' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (customerSubscriptions'Data obj) : (Data.Aeson..=) "has_more" (customerSubscriptions'HasMore obj) : (Data.Aeson..=) "object" (customerSubscriptions'Object obj) : (Data.Aeson..=) "url" (customerSubscriptions'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (customerSubscriptions'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (customerSubscriptions'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (customerSubscriptions'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (customerSubscriptions'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerSubscriptions' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerSubscriptions'" (\obj -> (((GHC.Base.pure CustomerSubscriptions' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema customerSubscriptions\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data CustomerSubscriptions'Object'
  = CustomerSubscriptions'Object'EnumOther Data.Aeson.Types.Internal.Value
  | CustomerSubscriptions'Object'EnumTyped Data.Text.Internal.Text
  | CustomerSubscriptions'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CustomerSubscriptions'Object' where
  toJSON (CustomerSubscriptions'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerSubscriptions'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerSubscriptions'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON CustomerSubscriptions'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then CustomerSubscriptions'Object'EnumStringList
          else CustomerSubscriptions'Object'EnumOther val
      )

-- | Defines the enum schema customerTax_exempt\'
--
-- Describes the customer\'s tax exemption status. One of \`none\`, \`exempt\`, or \`reverse\`. When set to \`reverse\`, invoice and receipt PDFs include the text **\"Reverse charge\"**.
data CustomerTaxExempt'
  = CustomerTaxExempt'EnumOther Data.Aeson.Types.Internal.Value
  | CustomerTaxExempt'EnumTyped Data.Text.Internal.Text
  | CustomerTaxExempt'EnumStringExempt
  | CustomerTaxExempt'EnumStringNone
  | CustomerTaxExempt'EnumStringReverse
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CustomerTaxExempt' where
  toJSON (CustomerTaxExempt'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerTaxExempt'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerTaxExempt'EnumStringExempt) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "exempt"
  toJSON (CustomerTaxExempt'EnumStringNone) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "none"
  toJSON (CustomerTaxExempt'EnumStringReverse) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "reverse"

instance Data.Aeson.FromJSON CustomerTaxExempt' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "exempt")
          then CustomerTaxExempt'EnumStringExempt
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "none")
              then CustomerTaxExempt'EnumStringNone
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "reverse")
                  then CustomerTaxExempt'EnumStringReverse
                  else CustomerTaxExempt'EnumOther val
      )

-- | Defines the data type for the schema customerTax_ids\'
--
-- The customer\'s tax IDs.
data CustomerTaxIds'
  = CustomerTaxIds'
      { -- | data: Details about each object.
        customerTaxIds'Data :: ([] TaxId),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        customerTaxIds'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        customerTaxIds'Object :: CustomerTaxIds'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerTaxIds'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerTaxIds' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (customerTaxIds'Data obj) : (Data.Aeson..=) "has_more" (customerTaxIds'HasMore obj) : (Data.Aeson..=) "object" (customerTaxIds'Object obj) : (Data.Aeson..=) "url" (customerTaxIds'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (customerTaxIds'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (customerTaxIds'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (customerTaxIds'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (customerTaxIds'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerTaxIds' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerTaxIds'" (\obj -> (((GHC.Base.pure CustomerTaxIds' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema customerTax_ids\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data CustomerTaxIds'Object'
  = CustomerTaxIds'Object'EnumOther Data.Aeson.Types.Internal.Value
  | CustomerTaxIds'Object'EnumTyped Data.Text.Internal.Text
  | CustomerTaxIds'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CustomerTaxIds'Object' where
  toJSON (CustomerTaxIds'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerTaxIds'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerTaxIds'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON CustomerTaxIds'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then CustomerTaxIds'Object'EnumStringList
          else CustomerTaxIds'Object'EnumOther val
      )

-- | Defines the data type for the schema customer_balance_transaction
--
-- Each customer has a [\`balance\`](https:\/\/stripe.com\/docs\/api\/customers\/object\#customer_object-balance) value,
-- which denotes a debit or credit that\'s automatically applied to their next invoice upon finalization.
-- You may modify the value directly by using the [update customer API](https:\/\/stripe.com\/docs\/api\/customers\/update),
-- or by creating a Customer Balance Transaction, which increments or decrements the customer\'s \`balance\` by the specified \`amount\`.
--
-- Related guide: [Customer Balance](https:\/\/stripe.com\/docs\/billing\/customer\/balance) to learn more.
data CustomerBalanceTransaction
  = CustomerBalanceTransaction
      { -- | amount: The amount of the transaction. A negative value is a credit for the customer\'s balance, and a positive value is a debit to the customer\'s \`balance\`.
        customerBalanceTransactionAmount :: GHC.Integer.Type.Integer,
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        customerBalanceTransactionCreated :: GHC.Integer.Type.Integer,
        -- | credit_note: The ID of the credit note (if any) related to the transaction.
        customerBalanceTransactionCreditNote :: (GHC.Maybe.Maybe CustomerBalanceTransactionCreditNote'Variants),
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        customerBalanceTransactionCurrency :: Data.Text.Internal.Text,
        -- | customer: The ID of the customer the transaction belongs to.
        customerBalanceTransactionCustomer :: CustomerBalanceTransactionCustomer'Variants,
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerBalanceTransactionDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | ending_balance: The customer\'s \`balance\` after the transaction was applied. A negative value decreases the amount due on the customer\'s next invoice. A positive value increases the amount due on the customer\'s next invoice.
        customerBalanceTransactionEndingBalance :: GHC.Integer.Type.Integer,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        customerBalanceTransactionId :: Data.Text.Internal.Text,
        -- | invoice: The ID of the invoice (if any) related to the transaction.
        customerBalanceTransactionInvoice :: (GHC.Maybe.Maybe CustomerBalanceTransactionInvoice'Variants),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        customerBalanceTransactionLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        customerBalanceTransactionMetadata :: (GHC.Maybe.Maybe CustomerBalanceTransactionMetadata'),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        customerBalanceTransactionObject :: CustomerBalanceTransactionObject',
        -- | type: Transaction type: \`adjustment\`, \`applied_to_invoice\`, \`credit_note\`, \`initial\`, \`invoice_too_large\`, \`invoice_too_small\`, \`unspent_receiver_credit\`, or \`unapplied_from_invoice\`. See the [Customer Balance page](https:\/\/stripe.com\/docs\/billing\/customer\/balance\#types) to learn more about transaction types.
        customerBalanceTransactionType :: CustomerBalanceTransactionType'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerBalanceTransaction where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (customerBalanceTransactionAmount obj) : (Data.Aeson..=) "created" (customerBalanceTransactionCreated obj) : (Data.Aeson..=) "credit_note" (customerBalanceTransactionCreditNote obj) : (Data.Aeson..=) "currency" (customerBalanceTransactionCurrency obj) : (Data.Aeson..=) "customer" (customerBalanceTransactionCustomer obj) : (Data.Aeson..=) "description" (customerBalanceTransactionDescription obj) : (Data.Aeson..=) "ending_balance" (customerBalanceTransactionEndingBalance obj) : (Data.Aeson..=) "id" (customerBalanceTransactionId obj) : (Data.Aeson..=) "invoice" (customerBalanceTransactionInvoice obj) : (Data.Aeson..=) "livemode" (customerBalanceTransactionLivemode obj) : (Data.Aeson..=) "metadata" (customerBalanceTransactionMetadata obj) : (Data.Aeson..=) "object" (customerBalanceTransactionObject obj) : (Data.Aeson..=) "type" (customerBalanceTransactionType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (customerBalanceTransactionAmount obj) GHC.Base.<> ((Data.Aeson..=) "created" (customerBalanceTransactionCreated obj) GHC.Base.<> ((Data.Aeson..=) "credit_note" (customerBalanceTransactionCreditNote obj) GHC.Base.<> ((Data.Aeson..=) "currency" (customerBalanceTransactionCurrency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (customerBalanceTransactionCustomer obj) GHC.Base.<> ((Data.Aeson..=) "description" (customerBalanceTransactionDescription obj) GHC.Base.<> ((Data.Aeson..=) "ending_balance" (customerBalanceTransactionEndingBalance obj) GHC.Base.<> ((Data.Aeson..=) "id" (customerBalanceTransactionId obj) GHC.Base.<> ((Data.Aeson..=) "invoice" (customerBalanceTransactionInvoice obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (customerBalanceTransactionLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (customerBalanceTransactionMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (customerBalanceTransactionObject obj) GHC.Base.<> (Data.Aeson..=) "type" (customerBalanceTransactionType obj)))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerBalanceTransaction where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerBalanceTransaction" (\obj -> ((((((((((((GHC.Base.pure CustomerBalanceTransaction GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "credit_note")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "ending_balance")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "invoice")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type"))

-- | Define the one-of schema customer_balance_transactionCredit_note\'
--
-- The ID of the credit note (if any) related to the transaction.
data CustomerBalanceTransactionCreditNote'Variants
  = CustomerBalanceTransactionCreditNote'CreditNote CreditNote
  | CustomerBalanceTransactionCreditNote'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CustomerBalanceTransactionCreditNote'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CustomerBalanceTransactionCreditNote'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema customer_balance_transactionCustomer\'
--
-- The ID of the customer the transaction belongs to.
data CustomerBalanceTransactionCustomer'Variants
  = CustomerBalanceTransactionCustomer'Customer Customer
  | CustomerBalanceTransactionCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CustomerBalanceTransactionCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CustomerBalanceTransactionCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema customer_balance_transactionInvoice\'
--
-- The ID of the invoice (if any) related to the transaction.
data CustomerBalanceTransactionInvoice'Variants
  = CustomerBalanceTransactionInvoice'Invoice Invoice
  | CustomerBalanceTransactionInvoice'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON CustomerBalanceTransactionInvoice'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON CustomerBalanceTransactionInvoice'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema customer_balance_transactionMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data CustomerBalanceTransactionMetadata'
  = CustomerBalanceTransactionMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON CustomerBalanceTransactionMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON CustomerBalanceTransactionMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "CustomerBalanceTransactionMetadata'" (\obj -> GHC.Base.pure CustomerBalanceTransactionMetadata')

-- | Defines the enum schema customer_balance_transactionObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data CustomerBalanceTransactionObject'
  = CustomerBalanceTransactionObject'EnumOther Data.Aeson.Types.Internal.Value
  | CustomerBalanceTransactionObject'EnumTyped Data.Text.Internal.Text
  | CustomerBalanceTransactionObject'EnumStringCustomerBalanceTransaction
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CustomerBalanceTransactionObject' where
  toJSON (CustomerBalanceTransactionObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerBalanceTransactionObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerBalanceTransactionObject'EnumStringCustomerBalanceTransaction) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "customer_balance_transaction"

instance Data.Aeson.FromJSON CustomerBalanceTransactionObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "customer_balance_transaction")
          then CustomerBalanceTransactionObject'EnumStringCustomerBalanceTransaction
          else CustomerBalanceTransactionObject'EnumOther val
      )

-- | Defines the enum schema customer_balance_transactionType\'
--
-- Transaction type: \`adjustment\`, \`applied_to_invoice\`, \`credit_note\`, \`initial\`, \`invoice_too_large\`, \`invoice_too_small\`, \`unspent_receiver_credit\`, or \`unapplied_from_invoice\`. See the [Customer Balance page](https:\/\/stripe.com\/docs\/billing\/customer\/balance\#types) to learn more about transaction types.
data CustomerBalanceTransactionType'
  = CustomerBalanceTransactionType'EnumOther Data.Aeson.Types.Internal.Value
  | CustomerBalanceTransactionType'EnumTyped Data.Text.Internal.Text
  | CustomerBalanceTransactionType'EnumStringAdjustment
  | CustomerBalanceTransactionType'EnumStringAppliedToInvoice
  | CustomerBalanceTransactionType'EnumStringCreditNote
  | CustomerBalanceTransactionType'EnumStringInitial
  | CustomerBalanceTransactionType'EnumStringInvoiceTooLarge
  | CustomerBalanceTransactionType'EnumStringInvoiceTooSmall
  | CustomerBalanceTransactionType'EnumStringMigration
  | CustomerBalanceTransactionType'EnumStringUnappliedFromInvoice
  | CustomerBalanceTransactionType'EnumStringUnspentReceiverCredit
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON CustomerBalanceTransactionType' where
  toJSON (CustomerBalanceTransactionType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerBalanceTransactionType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (CustomerBalanceTransactionType'EnumStringAdjustment) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "adjustment"
  toJSON (CustomerBalanceTransactionType'EnumStringAppliedToInvoice) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "applied_to_invoice"
  toJSON (CustomerBalanceTransactionType'EnumStringCreditNote) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "credit_note"
  toJSON (CustomerBalanceTransactionType'EnumStringInitial) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "initial"
  toJSON (CustomerBalanceTransactionType'EnumStringInvoiceTooLarge) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invoice_too_large"
  toJSON (CustomerBalanceTransactionType'EnumStringInvoiceTooSmall) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invoice_too_small"
  toJSON (CustomerBalanceTransactionType'EnumStringMigration) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "migration"
  toJSON (CustomerBalanceTransactionType'EnumStringUnappliedFromInvoice) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unapplied_from_invoice"
  toJSON (CustomerBalanceTransactionType'EnumStringUnspentReceiverCredit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unspent_receiver_credit"

instance Data.Aeson.FromJSON CustomerBalanceTransactionType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "adjustment")
          then CustomerBalanceTransactionType'EnumStringAdjustment
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "applied_to_invoice")
              then CustomerBalanceTransactionType'EnumStringAppliedToInvoice
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "credit_note")
                  then CustomerBalanceTransactionType'EnumStringCreditNote
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "initial")
                      then CustomerBalanceTransactionType'EnumStringInitial
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invoice_too_large")
                          then CustomerBalanceTransactionType'EnumStringInvoiceTooLarge
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invoice_too_small")
                              then CustomerBalanceTransactionType'EnumStringInvoiceTooSmall
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "migration")
                                  then CustomerBalanceTransactionType'EnumStringMigration
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unapplied_from_invoice")
                                      then CustomerBalanceTransactionType'EnumStringUnappliedFromInvoice
                                      else
                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unspent_receiver_credit")
                                          then CustomerBalanceTransactionType'EnumStringUnspentReceiverCredit
                                          else CustomerBalanceTransactionType'EnumOther val
      )

-- | Defines the data type for the schema deleted_external_account
data DeletedExternalAccount
  = DeletedExternalAccount
      { -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/payouts) paid out to the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        deletedExternalAccountCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | deleted: Always true for a deleted object
        deletedExternalAccountDeleted :: (GHC.Maybe.Maybe DeletedExternalAccountDeleted'),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        deletedExternalAccountId :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        deletedExternalAccountObject :: (GHC.Maybe.Maybe DeletedExternalAccountObject')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON DeletedExternalAccount where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "currency" (deletedExternalAccountCurrency obj) : (Data.Aeson..=) "deleted" (deletedExternalAccountDeleted obj) : (Data.Aeson..=) "id" (deletedExternalAccountId obj) : (Data.Aeson..=) "object" (deletedExternalAccountObject obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "currency" (deletedExternalAccountCurrency obj) GHC.Base.<> ((Data.Aeson..=) "deleted" (deletedExternalAccountDeleted obj) GHC.Base.<> ((Data.Aeson..=) "id" (deletedExternalAccountId obj) GHC.Base.<> (Data.Aeson..=) "object" (deletedExternalAccountObject obj))))

instance Data.Aeson.Types.FromJSON.FromJSON DeletedExternalAccount where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "DeletedExternalAccount" (\obj -> (((GHC.Base.pure DeletedExternalAccount GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "deleted")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object"))

-- | Defines the enum schema deleted_external_accountDeleted\'
--
-- Always true for a deleted object
data DeletedExternalAccountDeleted'
  = DeletedExternalAccountDeleted'EnumOther Data.Aeson.Types.Internal.Value
  | DeletedExternalAccountDeleted'EnumTyped GHC.Types.Bool
  | DeletedExternalAccountDeleted'EnumBoolTrue
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON DeletedExternalAccountDeleted' where
  toJSON (DeletedExternalAccountDeleted'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (DeletedExternalAccountDeleted'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (DeletedExternalAccountDeleted'EnumBoolTrue) = Data.Aeson.Types.Internal.Bool GHC.Types.True

instance Data.Aeson.FromJSON DeletedExternalAccountDeleted' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== Data.Aeson.Types.Internal.Bool GHC.Types.True
          then DeletedExternalAccountDeleted'EnumBoolTrue
          else DeletedExternalAccountDeleted'EnumOther val
      )

-- | Defines the enum schema deleted_external_accountObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data DeletedExternalAccountObject'
  = DeletedExternalAccountObject'EnumOther Data.Aeson.Types.Internal.Value
  | DeletedExternalAccountObject'EnumTyped Data.Text.Internal.Text
  | DeletedExternalAccountObject'EnumStringBankAccount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON DeletedExternalAccountObject' where
  toJSON (DeletedExternalAccountObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (DeletedExternalAccountObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (DeletedExternalAccountObject'EnumStringBankAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account"

instance Data.Aeson.FromJSON DeletedExternalAccountObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account")
          then DeletedExternalAccountObject'EnumStringBankAccount
          else DeletedExternalAccountObject'EnumOther val
      )

-- | Defines the data type for the schema deleted_payment_source
data DeletedPaymentSource
  = DeletedPaymentSource
      { -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/payouts) paid out to the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        deletedPaymentSourceCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | deleted: Always true for a deleted object
        deletedPaymentSourceDeleted :: (GHC.Maybe.Maybe DeletedPaymentSourceDeleted'),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        deletedPaymentSourceId :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        deletedPaymentSourceObject :: (GHC.Maybe.Maybe DeletedPaymentSourceObject')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON DeletedPaymentSource where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "currency" (deletedPaymentSourceCurrency obj) : (Data.Aeson..=) "deleted" (deletedPaymentSourceDeleted obj) : (Data.Aeson..=) "id" (deletedPaymentSourceId obj) : (Data.Aeson..=) "object" (deletedPaymentSourceObject obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "currency" (deletedPaymentSourceCurrency obj) GHC.Base.<> ((Data.Aeson..=) "deleted" (deletedPaymentSourceDeleted obj) GHC.Base.<> ((Data.Aeson..=) "id" (deletedPaymentSourceId obj) GHC.Base.<> (Data.Aeson..=) "object" (deletedPaymentSourceObject obj))))

instance Data.Aeson.Types.FromJSON.FromJSON DeletedPaymentSource where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "DeletedPaymentSource" (\obj -> (((GHC.Base.pure DeletedPaymentSource GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "deleted")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object"))

-- | Defines the enum schema deleted_payment_sourceDeleted\'
--
-- Always true for a deleted object
data DeletedPaymentSourceDeleted'
  = DeletedPaymentSourceDeleted'EnumOther Data.Aeson.Types.Internal.Value
  | DeletedPaymentSourceDeleted'EnumTyped GHC.Types.Bool
  | DeletedPaymentSourceDeleted'EnumBoolTrue
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON DeletedPaymentSourceDeleted' where
  toJSON (DeletedPaymentSourceDeleted'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (DeletedPaymentSourceDeleted'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (DeletedPaymentSourceDeleted'EnumBoolTrue) = Data.Aeson.Types.Internal.Bool GHC.Types.True

instance Data.Aeson.FromJSON DeletedPaymentSourceDeleted' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== Data.Aeson.Types.Internal.Bool GHC.Types.True
          then DeletedPaymentSourceDeleted'EnumBoolTrue
          else DeletedPaymentSourceDeleted'EnumOther val
      )

-- | Defines the enum schema deleted_payment_sourceObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data DeletedPaymentSourceObject'
  = DeletedPaymentSourceObject'EnumOther Data.Aeson.Types.Internal.Value
  | DeletedPaymentSourceObject'EnumTyped Data.Text.Internal.Text
  | DeletedPaymentSourceObject'EnumStringAlipayAccount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON DeletedPaymentSourceObject' where
  toJSON (DeletedPaymentSourceObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (DeletedPaymentSourceObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (DeletedPaymentSourceObject'EnumStringAlipayAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay_account"

instance Data.Aeson.FromJSON DeletedPaymentSourceObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay_account")
          then DeletedPaymentSourceObject'EnumStringAlipayAccount
          else DeletedPaymentSourceObject'EnumOther val
      )

-- | Defines the data type for the schema discount
--
-- A discount represents the actual application of a coupon to a particular
-- customer. It contains information about when the discount began and when it
-- will end.
--
-- Related guide: [Applying Discounts to Subscriptions](https:\/\/stripe.com\/docs\/billing\/subscriptions\/discounts).
data Discount
  = Discount
      { -- | coupon: A coupon contains information about a percent-off or amount-off discount you
        -- might want to apply to a customer. Coupons may be applied to [invoices](https:\/\/stripe.com\/docs\/api\#invoices) or
        -- [orders](https:\/\/stripe.com\/docs\/api\#create_order-coupon). Coupons do not work with conventional one-off [charges](https:\/\/stripe.com\/docs\/api\#create_charge).
        discountCoupon :: Coupon,
        -- | customer: The ID of the customer associated with this discount.
        discountCustomer :: (GHC.Maybe.Maybe DiscountCustomer'Variants),
        -- | end: If the coupon has a duration of \`repeating\`, the date that this discount will end. If the coupon has a duration of \`once\` or \`forever\`, this attribute will be null.
        discountEnd :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        discountObject :: DiscountObject',
        -- | start: Date that the coupon was applied.
        discountStart :: GHC.Integer.Type.Integer,
        -- | subscription: The subscription that this coupon is applied to, if it is applied to a particular subscription.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        discountSubscription :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Discount where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "coupon" (discountCoupon obj) : (Data.Aeson..=) "customer" (discountCustomer obj) : (Data.Aeson..=) "end" (discountEnd obj) : (Data.Aeson..=) "object" (discountObject obj) : (Data.Aeson..=) "start" (discountStart obj) : (Data.Aeson..=) "subscription" (discountSubscription obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "coupon" (discountCoupon obj) GHC.Base.<> ((Data.Aeson..=) "customer" (discountCustomer obj) GHC.Base.<> ((Data.Aeson..=) "end" (discountEnd obj) GHC.Base.<> ((Data.Aeson..=) "object" (discountObject obj) GHC.Base.<> ((Data.Aeson..=) "start" (discountStart obj) GHC.Base.<> (Data.Aeson..=) "subscription" (discountSubscription obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON Discount where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Discount" (\obj -> (((((GHC.Base.pure Discount GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "coupon")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "end")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "start")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscription"))

-- | Define the one-of schema discountCustomer\'
--
-- The ID of the customer associated with this discount.
data DiscountCustomer'Variants
  = DiscountCustomer'Customer Customer
  | DiscountCustomer'DeletedCustomer DeletedCustomer
  | DiscountCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON DiscountCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON DiscountCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema discountObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data DiscountObject'
  = DiscountObject'EnumOther Data.Aeson.Types.Internal.Value
  | DiscountObject'EnumTyped Data.Text.Internal.Text
  | DiscountObject'EnumStringDiscount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON DiscountObject' where
  toJSON (DiscountObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (DiscountObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (DiscountObject'EnumStringDiscount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount"

instance Data.Aeson.FromJSON DiscountObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount")
          then DiscountObject'EnumStringDiscount
          else DiscountObject'EnumOther val
      )

-- | Defines the data type for the schema dispute
--
-- A dispute occurs when a customer questions your charge with their card issuer.
-- When this happens, you\'re given the opportunity to respond to the dispute with
-- evidence that shows that the charge is legitimate. You can find more
-- information about the dispute process in our [Disputes and
-- Fraud](\/docs\/disputes) documentation.
--
-- Related guide: [Disputes and Fraud](https:\/\/stripe.com\/docs\/disputes).
data Dispute
  = Dispute
      { -- | amount: Disputed amount. Usually the amount of the charge, but can differ (usually because of currency fluctuation or because only part of the order is disputed).
        disputeAmount :: GHC.Integer.Type.Integer,
        -- | balance_transactions: List of zero, one, or two balance transactions that show funds withdrawn and reinstated to your Stripe account as a result of this dispute.
        disputeBalanceTransactions :: ([] BalanceTransaction),
        -- | charge: ID of the charge that was disputed.
        disputeCharge :: DisputeCharge'Variants,
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        disputeCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        disputeCurrency :: Data.Text.Internal.Text,
        -- | evidence:
        disputeEvidence :: DisputeEvidence,
        -- | evidence_details:
        disputeEvidenceDetails :: DisputeEvidenceDetails,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        disputeId :: Data.Text.Internal.Text,
        -- | is_charge_refundable: If true, it is still possible to refund the disputed payment. Once the payment has been fully refunded, no further funds will be withdrawn from your Stripe account as a result of this dispute.
        disputeIsChargeRefundable :: GHC.Types.Bool,
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        disputeLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        disputeMetadata :: DisputeMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        disputeObject :: DisputeObject',
        -- | payment_intent: ID of the PaymentIntent that was disputed.
        disputePaymentIntent :: (GHC.Maybe.Maybe DisputePaymentIntent'Variants),
        -- | reason: Reason given by cardholder for dispute. Possible values are \`bank_cannot_process\`, \`check_returned\`, \`credit_not_processed\`, \`customer_initiated\`, \`debit_not_authorized\`, \`duplicate\`, \`fraudulent\`, \`general\`, \`incorrect_account_details\`, \`insufficient_funds\`, \`product_not_received\`, \`product_unacceptable\`, \`subscription_canceled\`, or \`unrecognized\`. Read more about [dispute reasons](https:\/\/stripe.com\/docs\/disputes\/categories).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        disputeReason :: Data.Text.Internal.Text,
        -- | status: Current status of dispute. Possible values are \`warning_needs_response\`, \`warning_under_review\`, \`warning_closed\`, \`needs_response\`, \`under_review\`, \`charge_refunded\`, \`won\`, or \`lost\`.
        disputeStatus :: DisputeStatus'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Dispute where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (disputeAmount obj) : (Data.Aeson..=) "balance_transactions" (disputeBalanceTransactions obj) : (Data.Aeson..=) "charge" (disputeCharge obj) : (Data.Aeson..=) "created" (disputeCreated obj) : (Data.Aeson..=) "currency" (disputeCurrency obj) : (Data.Aeson..=) "evidence" (disputeEvidence obj) : (Data.Aeson..=) "evidence_details" (disputeEvidenceDetails obj) : (Data.Aeson..=) "id" (disputeId obj) : (Data.Aeson..=) "is_charge_refundable" (disputeIsChargeRefundable obj) : (Data.Aeson..=) "livemode" (disputeLivemode obj) : (Data.Aeson..=) "metadata" (disputeMetadata obj) : (Data.Aeson..=) "object" (disputeObject obj) : (Data.Aeson..=) "payment_intent" (disputePaymentIntent obj) : (Data.Aeson..=) "reason" (disputeReason obj) : (Data.Aeson..=) "status" (disputeStatus obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (disputeAmount obj) GHC.Base.<> ((Data.Aeson..=) "balance_transactions" (disputeBalanceTransactions obj) GHC.Base.<> ((Data.Aeson..=) "charge" (disputeCharge obj) GHC.Base.<> ((Data.Aeson..=) "created" (disputeCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (disputeCurrency obj) GHC.Base.<> ((Data.Aeson..=) "evidence" (disputeEvidence obj) GHC.Base.<> ((Data.Aeson..=) "evidence_details" (disputeEvidenceDetails obj) GHC.Base.<> ((Data.Aeson..=) "id" (disputeId obj) GHC.Base.<> ((Data.Aeson..=) "is_charge_refundable" (disputeIsChargeRefundable obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (disputeLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (disputeMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (disputeObject obj) GHC.Base.<> ((Data.Aeson..=) "payment_intent" (disputePaymentIntent obj) GHC.Base.<> ((Data.Aeson..=) "reason" (disputeReason obj) GHC.Base.<> (Data.Aeson..=) "status" (disputeStatus obj)))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Dispute where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Dispute" (\obj -> ((((((((((((((GHC.Base.pure Dispute GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "balance_transactions")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "charge")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "evidence")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "evidence_details")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "is_charge_refundable")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_intent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status"))

-- | Define the one-of schema disputeCharge\'
--
-- ID of the charge that was disputed.
data DisputeCharge'Variants
  = DisputeCharge'Charge Charge
  | DisputeCharge'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON DisputeCharge'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON DisputeCharge'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema disputeMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data DisputeMetadata'
  = DisputeMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON DisputeMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON DisputeMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "DisputeMetadata'" (\obj -> GHC.Base.pure DisputeMetadata')

-- | Defines the enum schema disputeObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data DisputeObject'
  = DisputeObject'EnumOther Data.Aeson.Types.Internal.Value
  | DisputeObject'EnumTyped Data.Text.Internal.Text
  | DisputeObject'EnumStringDispute
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON DisputeObject' where
  toJSON (DisputeObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (DisputeObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (DisputeObject'EnumStringDispute) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dispute"

instance Data.Aeson.FromJSON DisputeObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dispute")
          then DisputeObject'EnumStringDispute
          else DisputeObject'EnumOther val
      )

-- | Define the one-of schema disputePayment_intent\'
--
-- ID of the PaymentIntent that was disputed.
data DisputePaymentIntent'Variants
  = DisputePaymentIntent'PaymentIntent PaymentIntent
  | DisputePaymentIntent'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON DisputePaymentIntent'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON DisputePaymentIntent'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema disputeStatus\'
--
-- Current status of dispute. Possible values are \`warning_needs_response\`, \`warning_under_review\`, \`warning_closed\`, \`needs_response\`, \`under_review\`, \`charge_refunded\`, \`won\`, or \`lost\`.
data DisputeStatus'
  = DisputeStatus'EnumOther Data.Aeson.Types.Internal.Value
  | DisputeStatus'EnumTyped Data.Text.Internal.Text
  | DisputeStatus'EnumStringChargeRefunded
  | DisputeStatus'EnumStringLost
  | DisputeStatus'EnumStringNeedsResponse
  | DisputeStatus'EnumStringUnderReview
  | DisputeStatus'EnumStringWarningClosed
  | DisputeStatus'EnumStringWarningNeedsResponse
  | DisputeStatus'EnumStringWarningUnderReview
  | DisputeStatus'EnumStringWon
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON DisputeStatus' where
  toJSON (DisputeStatus'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (DisputeStatus'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (DisputeStatus'EnumStringChargeRefunded) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charge_refunded"
  toJSON (DisputeStatus'EnumStringLost) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "lost"
  toJSON (DisputeStatus'EnumStringNeedsResponse) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "needs_response"
  toJSON (DisputeStatus'EnumStringUnderReview) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "under_review"
  toJSON (DisputeStatus'EnumStringWarningClosed) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "warning_closed"
  toJSON (DisputeStatus'EnumStringWarningNeedsResponse) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "warning_needs_response"
  toJSON (DisputeStatus'EnumStringWarningUnderReview) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "warning_under_review"
  toJSON (DisputeStatus'EnumStringWon) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "won"

instance Data.Aeson.FromJSON DisputeStatus' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charge_refunded")
          then DisputeStatus'EnumStringChargeRefunded
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "lost")
              then DisputeStatus'EnumStringLost
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "needs_response")
                  then DisputeStatus'EnumStringNeedsResponse
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "under_review")
                      then DisputeStatus'EnumStringUnderReview
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "warning_closed")
                          then DisputeStatus'EnumStringWarningClosed
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "warning_needs_response")
                              then DisputeStatus'EnumStringWarningNeedsResponse
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "warning_under_review")
                                  then DisputeStatus'EnumStringWarningUnderReview
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "won")
                                      then DisputeStatus'EnumStringWon
                                      else DisputeStatus'EnumOther val
      )

-- | Defines the data type for the schema dispute_evidence
data DisputeEvidence
  = DisputeEvidence
      { -- | access_activity_log: Any server or activity logs showing proof that the customer accessed or downloaded the purchased digital product. This information should include IP addresses, corresponding timestamps, and any detailed recorded activity.
        --
        -- Constraints:
        --
        -- * Maximum length of 150000
        disputeEvidenceAccessActivityLog :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | billing_address: The billing address provided by the customer.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        disputeEvidenceBillingAddress :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | cancellation_policy: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Your subscription cancellation policy, as shown to the customer.
        disputeEvidenceCancellationPolicy :: (GHC.Maybe.Maybe DisputeEvidenceCancellationPolicy'Variants),
        -- | cancellation_policy_disclosure: An explanation of how and when the customer was shown your refund policy prior to purchase.
        --
        -- Constraints:
        --
        -- * Maximum length of 150000
        disputeEvidenceCancellationPolicyDisclosure :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | cancellation_rebuttal: A justification for why the customer\'s subscription was not canceled.
        --
        -- Constraints:
        --
        -- * Maximum length of 150000
        disputeEvidenceCancellationRebuttal :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer_communication: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Any communication with the customer that you feel is relevant to your case. Examples include emails proving that the customer received the product or service, or demonstrating their use of or satisfaction with the product or service.
        disputeEvidenceCustomerCommunication :: (GHC.Maybe.Maybe DisputeEvidenceCustomerCommunication'Variants),
        -- | customer_email_address: The email address of the customer.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        disputeEvidenceCustomerEmailAddress :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer_name: The name of the customer.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        disputeEvidenceCustomerName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer_purchase_ip: The IP address that the customer used when making the purchase.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        disputeEvidenceCustomerPurchaseIp :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer_signature: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) A relevant document or contract showing the customer\'s signature.
        disputeEvidenceCustomerSignature :: (GHC.Maybe.Maybe DisputeEvidenceCustomerSignature'Variants),
        -- | duplicate_charge_documentation: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Documentation for the prior charge that can uniquely identify the charge, such as a receipt, shipping label, work order, etc. This document should be paired with a similar document from the disputed payment that proves the two payments are separate.
        disputeEvidenceDuplicateChargeDocumentation :: (GHC.Maybe.Maybe DisputeEvidenceDuplicateChargeDocumentation'Variants),
        -- | duplicate_charge_explanation: An explanation of the difference between the disputed charge versus the prior charge that appears to be a duplicate.
        --
        -- Constraints:
        --
        -- * Maximum length of 150000
        disputeEvidenceDuplicateChargeExplanation :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | duplicate_charge_id: The Stripe ID for the prior charge which appears to be a duplicate of the disputed charge.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        disputeEvidenceDuplicateChargeId :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | product_description: A description of the product or service that was sold.
        --
        -- Constraints:
        --
        -- * Maximum length of 150000
        disputeEvidenceProductDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | receipt: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Any receipt or message sent to the customer notifying them of the charge.
        disputeEvidenceReceipt :: (GHC.Maybe.Maybe DisputeEvidenceReceipt'Variants),
        -- | refund_policy: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Your refund policy, as shown to the customer.
        disputeEvidenceRefundPolicy :: (GHC.Maybe.Maybe DisputeEvidenceRefundPolicy'Variants),
        -- | refund_policy_disclosure: Documentation demonstrating that the customer was shown your refund policy prior to purchase.
        --
        -- Constraints:
        --
        -- * Maximum length of 150000
        disputeEvidenceRefundPolicyDisclosure :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | refund_refusal_explanation: A justification for why the customer is not entitled to a refund.
        --
        -- Constraints:
        --
        -- * Maximum length of 150000
        disputeEvidenceRefundRefusalExplanation :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | service_date: The date on which the customer received or began receiving the purchased service, in a clear human-readable format.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        disputeEvidenceServiceDate :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | service_documentation: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Documentation showing proof that a service was provided to the customer. This could include a copy of a signed contract, work order, or other form of written agreement.
        disputeEvidenceServiceDocumentation :: (GHC.Maybe.Maybe DisputeEvidenceServiceDocumentation'Variants),
        -- | shipping_address: The address to which a physical product was shipped. You should try to include as complete address information as possible.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        disputeEvidenceShippingAddress :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | shipping_carrier: The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc. If multiple carriers were used for this purchase, please separate them with commas.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        disputeEvidenceShippingCarrier :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | shipping_date: The date on which a physical product began its route to the shipping address, in a clear human-readable format.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        disputeEvidenceShippingDate :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | shipping_documentation: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Documentation showing proof that a product was shipped to the customer at the same address the customer provided to you. This could include a copy of the shipment receipt, shipping label, etc. It should show the customer\'s full shipping address, if possible.
        disputeEvidenceShippingDocumentation :: (GHC.Maybe.Maybe DisputeEvidenceShippingDocumentation'Variants),
        -- | shipping_tracking_number: The tracking number for a physical product, obtained from the delivery service. If multiple tracking numbers were generated for this purchase, please separate them with commas.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        disputeEvidenceShippingTrackingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | uncategorized_file: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Any additional evidence or statements.
        disputeEvidenceUncategorizedFile :: (GHC.Maybe.Maybe DisputeEvidenceUncategorizedFile'Variants),
        -- | uncategorized_text: Any additional evidence or statements.
        --
        -- Constraints:
        --
        -- * Maximum length of 150000
        disputeEvidenceUncategorizedText :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON DisputeEvidence where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "access_activity_log" (disputeEvidenceAccessActivityLog obj) : (Data.Aeson..=) "billing_address" (disputeEvidenceBillingAddress obj) : (Data.Aeson..=) "cancellation_policy" (disputeEvidenceCancellationPolicy obj) : (Data.Aeson..=) "cancellation_policy_disclosure" (disputeEvidenceCancellationPolicyDisclosure obj) : (Data.Aeson..=) "cancellation_rebuttal" (disputeEvidenceCancellationRebuttal obj) : (Data.Aeson..=) "customer_communication" (disputeEvidenceCustomerCommunication obj) : (Data.Aeson..=) "customer_email_address" (disputeEvidenceCustomerEmailAddress obj) : (Data.Aeson..=) "customer_name" (disputeEvidenceCustomerName obj) : (Data.Aeson..=) "customer_purchase_ip" (disputeEvidenceCustomerPurchaseIp obj) : (Data.Aeson..=) "customer_signature" (disputeEvidenceCustomerSignature obj) : (Data.Aeson..=) "duplicate_charge_documentation" (disputeEvidenceDuplicateChargeDocumentation obj) : (Data.Aeson..=) "duplicate_charge_explanation" (disputeEvidenceDuplicateChargeExplanation obj) : (Data.Aeson..=) "duplicate_charge_id" (disputeEvidenceDuplicateChargeId obj) : (Data.Aeson..=) "product_description" (disputeEvidenceProductDescription obj) : (Data.Aeson..=) "receipt" (disputeEvidenceReceipt obj) : (Data.Aeson..=) "refund_policy" (disputeEvidenceRefundPolicy obj) : (Data.Aeson..=) "refund_policy_disclosure" (disputeEvidenceRefundPolicyDisclosure obj) : (Data.Aeson..=) "refund_refusal_explanation" (disputeEvidenceRefundRefusalExplanation obj) : (Data.Aeson..=) "service_date" (disputeEvidenceServiceDate obj) : (Data.Aeson..=) "service_documentation" (disputeEvidenceServiceDocumentation obj) : (Data.Aeson..=) "shipping_address" (disputeEvidenceShippingAddress obj) : (Data.Aeson..=) "shipping_carrier" (disputeEvidenceShippingCarrier obj) : (Data.Aeson..=) "shipping_date" (disputeEvidenceShippingDate obj) : (Data.Aeson..=) "shipping_documentation" (disputeEvidenceShippingDocumentation obj) : (Data.Aeson..=) "shipping_tracking_number" (disputeEvidenceShippingTrackingNumber obj) : (Data.Aeson..=) "uncategorized_file" (disputeEvidenceUncategorizedFile obj) : (Data.Aeson..=) "uncategorized_text" (disputeEvidenceUncategorizedText obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "access_activity_log" (disputeEvidenceAccessActivityLog obj) GHC.Base.<> ((Data.Aeson..=) "billing_address" (disputeEvidenceBillingAddress obj) GHC.Base.<> ((Data.Aeson..=) "cancellation_policy" (disputeEvidenceCancellationPolicy obj) GHC.Base.<> ((Data.Aeson..=) "cancellation_policy_disclosure" (disputeEvidenceCancellationPolicyDisclosure obj) GHC.Base.<> ((Data.Aeson..=) "cancellation_rebuttal" (disputeEvidenceCancellationRebuttal obj) GHC.Base.<> ((Data.Aeson..=) "customer_communication" (disputeEvidenceCustomerCommunication obj) GHC.Base.<> ((Data.Aeson..=) "customer_email_address" (disputeEvidenceCustomerEmailAddress obj) GHC.Base.<> ((Data.Aeson..=) "customer_name" (disputeEvidenceCustomerName obj) GHC.Base.<> ((Data.Aeson..=) "customer_purchase_ip" (disputeEvidenceCustomerPurchaseIp obj) GHC.Base.<> ((Data.Aeson..=) "customer_signature" (disputeEvidenceCustomerSignature obj) GHC.Base.<> ((Data.Aeson..=) "duplicate_charge_documentation" (disputeEvidenceDuplicateChargeDocumentation obj) GHC.Base.<> ((Data.Aeson..=) "duplicate_charge_explanation" (disputeEvidenceDuplicateChargeExplanation obj) GHC.Base.<> ((Data.Aeson..=) "duplicate_charge_id" (disputeEvidenceDuplicateChargeId obj) GHC.Base.<> ((Data.Aeson..=) "product_description" (disputeEvidenceProductDescription obj) GHC.Base.<> ((Data.Aeson..=) "receipt" (disputeEvidenceReceipt obj) GHC.Base.<> ((Data.Aeson..=) "refund_policy" (disputeEvidenceRefundPolicy obj) GHC.Base.<> ((Data.Aeson..=) "refund_policy_disclosure" (disputeEvidenceRefundPolicyDisclosure obj) GHC.Base.<> ((Data.Aeson..=) "refund_refusal_explanation" (disputeEvidenceRefundRefusalExplanation obj) GHC.Base.<> ((Data.Aeson..=) "service_date" (disputeEvidenceServiceDate obj) GHC.Base.<> ((Data.Aeson..=) "service_documentation" (disputeEvidenceServiceDocumentation obj) GHC.Base.<> ((Data.Aeson..=) "shipping_address" (disputeEvidenceShippingAddress obj) GHC.Base.<> ((Data.Aeson..=) "shipping_carrier" (disputeEvidenceShippingCarrier obj) GHC.Base.<> ((Data.Aeson..=) "shipping_date" (disputeEvidenceShippingDate obj) GHC.Base.<> ((Data.Aeson..=) "shipping_documentation" (disputeEvidenceShippingDocumentation obj) GHC.Base.<> ((Data.Aeson..=) "shipping_tracking_number" (disputeEvidenceShippingTrackingNumber obj) GHC.Base.<> ((Data.Aeson..=) "uncategorized_file" (disputeEvidenceUncategorizedFile obj) GHC.Base.<> (Data.Aeson..=) "uncategorized_text" (disputeEvidenceUncategorizedText obj)))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON DisputeEvidence where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "DisputeEvidence" (\obj -> ((((((((((((((((((((((((((GHC.Base.pure DisputeEvidence GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "access_activity_log")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cancellation_policy")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cancellation_policy_disclosure")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cancellation_rebuttal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer_communication")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer_email_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer_purchase_ip")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer_signature")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "duplicate_charge_documentation")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "duplicate_charge_explanation")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "duplicate_charge_id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "product_description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "receipt")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "refund_policy")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "refund_policy_disclosure")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "refund_refusal_explanation")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "service_date")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "service_documentation")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping_carrier")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping_date")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping_documentation")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping_tracking_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "uncategorized_file")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "uncategorized_text"))

-- | Define the one-of schema dispute_evidenceCancellation_policy\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Your subscription cancellation policy, as shown to the customer.
data DisputeEvidenceCancellationPolicy'Variants
  = DisputeEvidenceCancellationPolicy'File File
  | DisputeEvidenceCancellationPolicy'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON DisputeEvidenceCancellationPolicy'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON DisputeEvidenceCancellationPolicy'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema dispute_evidenceCustomer_communication\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Any communication with the customer that you feel is relevant to your case. Examples include emails proving that the customer received the product or service, or demonstrating their use of or satisfaction with the product or service.
data DisputeEvidenceCustomerCommunication'Variants
  = DisputeEvidenceCustomerCommunication'File File
  | DisputeEvidenceCustomerCommunication'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON DisputeEvidenceCustomerCommunication'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON DisputeEvidenceCustomerCommunication'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema dispute_evidenceCustomer_signature\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) A relevant document or contract showing the customer\'s signature.
data DisputeEvidenceCustomerSignature'Variants
  = DisputeEvidenceCustomerSignature'File File
  | DisputeEvidenceCustomerSignature'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON DisputeEvidenceCustomerSignature'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON DisputeEvidenceCustomerSignature'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema dispute_evidenceDuplicate_charge_documentation\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Documentation for the prior charge that can uniquely identify the charge, such as a receipt, shipping label, work order, etc. This document should be paired with a similar document from the disputed payment that proves the two payments are separate.
data DisputeEvidenceDuplicateChargeDocumentation'Variants
  = DisputeEvidenceDuplicateChargeDocumentation'File File
  | DisputeEvidenceDuplicateChargeDocumentation'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON DisputeEvidenceDuplicateChargeDocumentation'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON DisputeEvidenceDuplicateChargeDocumentation'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema dispute_evidenceReceipt\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Any receipt or message sent to the customer notifying them of the charge.
data DisputeEvidenceReceipt'Variants
  = DisputeEvidenceReceipt'File File
  | DisputeEvidenceReceipt'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON DisputeEvidenceReceipt'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON DisputeEvidenceReceipt'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema dispute_evidenceRefund_policy\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Your refund policy, as shown to the customer.
data DisputeEvidenceRefundPolicy'Variants
  = DisputeEvidenceRefundPolicy'File File
  | DisputeEvidenceRefundPolicy'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON DisputeEvidenceRefundPolicy'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON DisputeEvidenceRefundPolicy'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema dispute_evidenceService_documentation\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Documentation showing proof that a service was provided to the customer. This could include a copy of a signed contract, work order, or other form of written agreement.
data DisputeEvidenceServiceDocumentation'Variants
  = DisputeEvidenceServiceDocumentation'File File
  | DisputeEvidenceServiceDocumentation'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON DisputeEvidenceServiceDocumentation'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON DisputeEvidenceServiceDocumentation'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema dispute_evidenceShipping_documentation\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Documentation showing proof that a product was shipped to the customer at the same address the customer provided to you. This could include a copy of the shipment receipt, shipping label, etc. It should show the customer\'s full shipping address, if possible.
data DisputeEvidenceShippingDocumentation'Variants
  = DisputeEvidenceShippingDocumentation'File File
  | DisputeEvidenceShippingDocumentation'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON DisputeEvidenceShippingDocumentation'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON DisputeEvidenceShippingDocumentation'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema dispute_evidenceUncategorized_file\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Any additional evidence or statements.
data DisputeEvidenceUncategorizedFile'Variants
  = DisputeEvidenceUncategorizedFile'File File
  | DisputeEvidenceUncategorizedFile'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON DisputeEvidenceUncategorizedFile'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON DisputeEvidenceUncategorizedFile'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema error
--
-- An error response from the Stripe API
data Error
  = Error
      { -- | error:
        errorError :: ApiErrors
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Error where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "error" (errorError obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "error" (errorError obj))

instance Data.Aeson.Types.FromJSON.FromJSON Error where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Error" (\obj -> GHC.Base.pure Error GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "error"))

-- | Defines the data type for the schema event
--
-- Events are our way of letting you know when something interesting happens in
-- your account. When an interesting event occurs, we create a new \`Event\`
-- object. For example, when a charge succeeds, we create a \`charge.succeeded\`
-- event; and when an invoice payment attempt fails, we create an
-- \`invoice.payment_failed\` event. Note that many API requests may cause multiple
-- events to be created. For example, if you create a new subscription for a
-- customer, you will receive both a \`customer.subscription.created\` event and a
-- \`charge.succeeded\` event.
--
-- Events occur when the state of another API resource changes. The state of that
-- resource at the time of the change is embedded in the event\'s data field. For
-- example, a \`charge.succeeded\` event will contain a charge, and an
-- \`invoice.payment_failed\` event will contain an invoice.
--
-- As with other API resources, you can use endpoints to retrieve an
-- [individual event](https:\/\/stripe.com\/docs\/api\#retrieve_event) or a [list of events](https:\/\/stripe.com\/docs\/api\#list_events)
-- from the API. We also have a separate
-- [webhooks](http:\/\/en.wikipedia.org\/wiki\/Webhook) system for sending the
-- \`Event\` objects directly to an endpoint on your server. Webhooks are managed
-- in your
-- [account settings](https:\/\/dashboard.stripe.com\/account\/webhooks\'),
-- and our [Using Webhooks](https:\/\/stripe.com\/docs\/webhooks) guide will help you get set up.
--
-- When using [Connect](https:\/\/stripe.com\/docs\/connect), you can also receive notifications of
-- events that occur in connected accounts. For these events, there will be an
-- additional \`account\` attribute in the received \`Event\` object.
--
-- **NOTE:** Right now, access to events through the [Retrieve Event API](https:\/\/stripe.com\/docs\/api\#retrieve_event) is
-- guaranteed only for 30 days.
data Event
  = Event
      { -- | account: The connected account that originated the event.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        eventAccount :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | api_version: The Stripe API version used to render \`data\`. *Note: This property is populated only for events on or after October 31, 2014*.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        eventApiVersion :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        eventCreated :: GHC.Integer.Type.Integer,
        -- | data:
        eventData :: NotificationEventData,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        eventId :: 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.
        eventLivemode :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        eventObject :: EventObject',
        -- | pending_webhooks: Number of webhooks that have yet to be successfully delivered (i.e., to return a 20x response) to the URLs you\'ve specified.
        eventPendingWebhooks :: GHC.Integer.Type.Integer,
        -- | request: Information on the API request that instigated the event.
        eventRequest :: (GHC.Maybe.Maybe EventRequest'),
        -- | type: Description of the event (e.g., \`invoice.created\` or \`charge.refunded\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        eventType :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Event where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (eventAccount obj) : (Data.Aeson..=) "api_version" (eventApiVersion obj) : (Data.Aeson..=) "created" (eventCreated obj) : (Data.Aeson..=) "data" (eventData obj) : (Data.Aeson..=) "id" (eventId obj) : (Data.Aeson..=) "livemode" (eventLivemode obj) : (Data.Aeson..=) "object" (eventObject obj) : (Data.Aeson..=) "pending_webhooks" (eventPendingWebhooks obj) : (Data.Aeson..=) "request" (eventRequest obj) : (Data.Aeson..=) "type" (eventType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (eventAccount obj) GHC.Base.<> ((Data.Aeson..=) "api_version" (eventApiVersion obj) GHC.Base.<> ((Data.Aeson..=) "created" (eventCreated obj) GHC.Base.<> ((Data.Aeson..=) "data" (eventData obj) GHC.Base.<> ((Data.Aeson..=) "id" (eventId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (eventLivemode obj) GHC.Base.<> ((Data.Aeson..=) "object" (eventObject obj) GHC.Base.<> ((Data.Aeson..=) "pending_webhooks" (eventPendingWebhooks obj) GHC.Base.<> ((Data.Aeson..=) "request" (eventRequest obj) GHC.Base.<> (Data.Aeson..=) "type" (eventType obj))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Event where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Event" (\obj -> (((((((((GHC.Base.pure Event GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "api_version")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "pending_webhooks")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "request")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type"))

-- | Defines the enum schema eventObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data EventObject'
  = EventObject'EnumOther Data.Aeson.Types.Internal.Value
  | EventObject'EnumTyped Data.Text.Internal.Text
  | EventObject'EnumStringEvent
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON EventObject' where
  toJSON (EventObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (EventObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (EventObject'EnumStringEvent) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "event"

instance Data.Aeson.FromJSON EventObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "event")
          then EventObject'EnumStringEvent
          else EventObject'EnumOther val
      )

-- | Defines the data type for the schema eventRequest\'
--
-- Information on the API request that instigated the event.
data EventRequest'
  = EventRequest'
      { -- | id: ID of the API request that caused the event. If null, the event was automatic (e.g., Stripe\'s automatic subscription handling). Request logs are available in the [dashboard](https:\/\/dashboard.stripe.com\/logs), but currently not in the API.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        eventRequest'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | idempotency_key: The idempotency key transmitted during the request, if any. *Note: This property is populated only for events on or after May 23, 2017*.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        eventRequest'IdempotencyKey :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON EventRequest' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "id" (eventRequest'Id obj) : (Data.Aeson..=) "idempotency_key" (eventRequest'IdempotencyKey obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "id" (eventRequest'Id obj) GHC.Base.<> (Data.Aeson..=) "idempotency_key" (eventRequest'IdempotencyKey obj))

instance Data.Aeson.Types.FromJSON.FromJSON EventRequest' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "EventRequest'" (\obj -> (GHC.Base.pure EventRequest' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "idempotency_key"))

-- | Defines the data type for the schema external_account
data ExternalAccount
  = ExternalAccount
      { -- | account: The ID of the account that the bank account is associated with.
        externalAccountAccount :: (GHC.Maybe.Maybe ExternalAccountAccount'Variants),
        -- | account_holder_name: The name of the person or business that owns the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountAccountHolderName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | account_holder_type: The type of entity that holds the account. This can be either \`individual\` or \`company\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountAccountHolderType :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_city: City\/District\/Suburb\/Town\/Village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountAddressCity :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_country: Billing address country, if provided when creating card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountAddressCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1: Address line 1 (Street address\/PO Box\/Company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountAddressLine1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1_check: If \`address_line1\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountAddressLine1Check :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line2: Address line 2 (Apartment\/Suite\/Unit\/Building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountAddressLine2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_state: State\/County\/Province\/Region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountAddressState :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountAddressZip :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip_check: If \`address_zip\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountAddressZipCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | available_payout_methods: A set of available payout methods for this card. Will be either \`[\"standard\"]\` or \`[\"standard\", \"instant\"]\`. Only values from this set should be passed as the \`method\` when creating a transfer.
        externalAccountAvailablePayoutMethods :: (GHC.Maybe.Maybe ([] ExternalAccountAvailablePayoutMethods')),
        -- | bank_name: Name of the bank associated with the routing number (e.g., \`WELLS FARGO\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountBankName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | brand: Card brand. Can be \`American Express\`, \`Diners Club\`, \`Discover\`, \`JCB\`, \`MasterCard\`, \`UnionPay\`, \`Visa\`, or \`Unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountBrand :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter ISO code representing the country the bank account is located in.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/payouts) paid out to the bank account.
        externalAccountCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer: The ID of the customer that the bank account is associated with.
        externalAccountCustomer :: (GHC.Maybe.Maybe ExternalAccountCustomer'Variants),
        -- | cvc_check: If a CVC was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountCvcCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | default_for_currency: Whether this bank account is the default external account for its currency.
        externalAccountDefaultForCurrency :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountDynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | exp_month: Two-digit number representing the card\'s expiration month.
        externalAccountExpMonth :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | exp_year: Four-digit number representing the card\'s expiration year.
        externalAccountExpYear :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | fingerprint: Uniquely identifies this particular bank account. You can use this attribute to check whether two bank accounts are the same.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountFingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountFunding :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountId :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | last4: The last four digits of the bank account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        externalAccountMetadata :: (GHC.Maybe.Maybe ExternalAccountMetadata'),
        -- | name: Cardholder name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        externalAccountObject :: (GHC.Maybe.Maybe ExternalAccountObject'),
        -- | recipient: The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
        externalAccountRecipient :: (GHC.Maybe.Maybe ExternalAccountRecipient'Variants),
        -- | routing_number: The routing transit number for the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountRoutingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: For bank accounts, possible values are \`new\`, \`validated\`, \`verified\`, \`verification_failed\`, or \`errored\`. A bank account that hasn\'t had any activity or validation performed is \`new\`. If Stripe can determine that the bank account exists, its status will be \`validated\`. Note that there often isn’t enough information to know (e.g., for smaller credit unions), and the validation is not always run. If customer bank account verification has succeeded, the bank account status will be \`verified\`. If the verification failed for any reason, such as microdeposit failure, the status will be \`verification_failed\`. If a transfer sent to this bank account fails, we\'ll set the status to \`errored\` and will not continue to send transfers until the bank details are updated.
        --
        -- For external accounts, possible values are \`new\` and \`errored\`. Validations aren\'t run against external accounts because they\'re only used for payouts. This means the other statuses don\'t apply. If a transfer fails, the status is set to \`errored\` and transfers are stopped until account details are updated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountStatus :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | tokenization_method: If the card number is tokenized, this is the method that was used. Can be \`amex_express_checkout\`, \`android_pay\` (includes Google Pay), \`apple_pay\`, \`masterpass\`, \`visa_checkout\`, or null.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        externalAccountTokenizationMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ExternalAccount where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (externalAccountAccount obj) : (Data.Aeson..=) "account_holder_name" (externalAccountAccountHolderName obj) : (Data.Aeson..=) "account_holder_type" (externalAccountAccountHolderType obj) : (Data.Aeson..=) "address_city" (externalAccountAddressCity obj) : (Data.Aeson..=) "address_country" (externalAccountAddressCountry obj) : (Data.Aeson..=) "address_line1" (externalAccountAddressLine1 obj) : (Data.Aeson..=) "address_line1_check" (externalAccountAddressLine1Check obj) : (Data.Aeson..=) "address_line2" (externalAccountAddressLine2 obj) : (Data.Aeson..=) "address_state" (externalAccountAddressState obj) : (Data.Aeson..=) "address_zip" (externalAccountAddressZip obj) : (Data.Aeson..=) "address_zip_check" (externalAccountAddressZipCheck obj) : (Data.Aeson..=) "available_payout_methods" (externalAccountAvailablePayoutMethods obj) : (Data.Aeson..=) "bank_name" (externalAccountBankName obj) : (Data.Aeson..=) "brand" (externalAccountBrand obj) : (Data.Aeson..=) "country" (externalAccountCountry obj) : (Data.Aeson..=) "currency" (externalAccountCurrency obj) : (Data.Aeson..=) "customer" (externalAccountCustomer obj) : (Data.Aeson..=) "cvc_check" (externalAccountCvcCheck obj) : (Data.Aeson..=) "default_for_currency" (externalAccountDefaultForCurrency obj) : (Data.Aeson..=) "dynamic_last4" (externalAccountDynamicLast4 obj) : (Data.Aeson..=) "exp_month" (externalAccountExpMonth obj) : (Data.Aeson..=) "exp_year" (externalAccountExpYear obj) : (Data.Aeson..=) "fingerprint" (externalAccountFingerprint obj) : (Data.Aeson..=) "funding" (externalAccountFunding obj) : (Data.Aeson..=) "id" (externalAccountId obj) : (Data.Aeson..=) "last4" (externalAccountLast4 obj) : (Data.Aeson..=) "metadata" (externalAccountMetadata obj) : (Data.Aeson..=) "name" (externalAccountName obj) : (Data.Aeson..=) "object" (externalAccountObject obj) : (Data.Aeson..=) "recipient" (externalAccountRecipient obj) : (Data.Aeson..=) "routing_number" (externalAccountRoutingNumber obj) : (Data.Aeson..=) "status" (externalAccountStatus obj) : (Data.Aeson..=) "tokenization_method" (externalAccountTokenizationMethod obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (externalAccountAccount obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_name" (externalAccountAccountHolderName obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_type" (externalAccountAccountHolderType obj) GHC.Base.<> ((Data.Aeson..=) "address_city" (externalAccountAddressCity obj) GHC.Base.<> ((Data.Aeson..=) "address_country" (externalAccountAddressCountry obj) GHC.Base.<> ((Data.Aeson..=) "address_line1" (externalAccountAddressLine1 obj) GHC.Base.<> ((Data.Aeson..=) "address_line1_check" (externalAccountAddressLine1Check obj) GHC.Base.<> ((Data.Aeson..=) "address_line2" (externalAccountAddressLine2 obj) GHC.Base.<> ((Data.Aeson..=) "address_state" (externalAccountAddressState obj) GHC.Base.<> ((Data.Aeson..=) "address_zip" (externalAccountAddressZip obj) GHC.Base.<> ((Data.Aeson..=) "address_zip_check" (externalAccountAddressZipCheck obj) GHC.Base.<> ((Data.Aeson..=) "available_payout_methods" (externalAccountAvailablePayoutMethods obj) GHC.Base.<> ((Data.Aeson..=) "bank_name" (externalAccountBankName obj) GHC.Base.<> ((Data.Aeson..=) "brand" (externalAccountBrand obj) GHC.Base.<> ((Data.Aeson..=) "country" (externalAccountCountry obj) GHC.Base.<> ((Data.Aeson..=) "currency" (externalAccountCurrency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (externalAccountCustomer obj) GHC.Base.<> ((Data.Aeson..=) "cvc_check" (externalAccountCvcCheck obj) GHC.Base.<> ((Data.Aeson..=) "default_for_currency" (externalAccountDefaultForCurrency obj) GHC.Base.<> ((Data.Aeson..=) "dynamic_last4" (externalAccountDynamicLast4 obj) GHC.Base.<> ((Data.Aeson..=) "exp_month" (externalAccountExpMonth obj) GHC.Base.<> ((Data.Aeson..=) "exp_year" (externalAccountExpYear obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (externalAccountFingerprint obj) GHC.Base.<> ((Data.Aeson..=) "funding" (externalAccountFunding obj) GHC.Base.<> ((Data.Aeson..=) "id" (externalAccountId obj) GHC.Base.<> ((Data.Aeson..=) "last4" (externalAccountLast4 obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (externalAccountMetadata obj) GHC.Base.<> ((Data.Aeson..=) "name" (externalAccountName obj) GHC.Base.<> ((Data.Aeson..=) "object" (externalAccountObject obj) GHC.Base.<> ((Data.Aeson..=) "recipient" (externalAccountRecipient obj) GHC.Base.<> ((Data.Aeson..=) "routing_number" (externalAccountRoutingNumber obj) GHC.Base.<> ((Data.Aeson..=) "status" (externalAccountStatus obj) GHC.Base.<> (Data.Aeson..=) "tokenization_method" (externalAccountTokenizationMethod obj)))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON ExternalAccount where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ExternalAccount" (\obj -> ((((((((((((((((((((((((((((((((GHC.Base.pure ExternalAccount GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_state")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "available_payout_methods")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bank_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "brand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cvc_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_for_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dynamic_last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "funding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "recipient")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "routing_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tokenization_method"))

-- | Define the one-of schema external_accountAccount\'
--
-- The ID of the account that the bank account is associated with.
data ExternalAccountAccount'Variants
  = ExternalAccountAccount'Account Account
  | ExternalAccountAccount'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ExternalAccountAccount'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ExternalAccountAccount'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema external_accountAvailable_payout_methods\'
data ExternalAccountAvailablePayoutMethods'
  = ExternalAccountAvailablePayoutMethods'EnumOther Data.Aeson.Types.Internal.Value
  | ExternalAccountAvailablePayoutMethods'EnumTyped Data.Text.Internal.Text
  | ExternalAccountAvailablePayoutMethods'EnumStringInstant
  | ExternalAccountAvailablePayoutMethods'EnumStringStandard
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ExternalAccountAvailablePayoutMethods' where
  toJSON (ExternalAccountAvailablePayoutMethods'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ExternalAccountAvailablePayoutMethods'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ExternalAccountAvailablePayoutMethods'EnumStringInstant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant"
  toJSON (ExternalAccountAvailablePayoutMethods'EnumStringStandard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard"

instance Data.Aeson.FromJSON ExternalAccountAvailablePayoutMethods' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant")
          then ExternalAccountAvailablePayoutMethods'EnumStringInstant
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard")
              then ExternalAccountAvailablePayoutMethods'EnumStringStandard
              else ExternalAccountAvailablePayoutMethods'EnumOther val
      )

-- | Define the one-of schema external_accountCustomer\'
--
-- The ID of the customer that the bank account is associated with.
data ExternalAccountCustomer'Variants
  = ExternalAccountCustomer'Customer Customer
  | ExternalAccountCustomer'DeletedCustomer DeletedCustomer
  | ExternalAccountCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ExternalAccountCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ExternalAccountCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema external_accountMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data ExternalAccountMetadata'
  = ExternalAccountMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ExternalAccountMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON ExternalAccountMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ExternalAccountMetadata'" (\obj -> GHC.Base.pure ExternalAccountMetadata')

-- | Defines the enum schema external_accountObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data ExternalAccountObject'
  = ExternalAccountObject'EnumOther Data.Aeson.Types.Internal.Value
  | ExternalAccountObject'EnumTyped Data.Text.Internal.Text
  | ExternalAccountObject'EnumStringBankAccount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ExternalAccountObject' where
  toJSON (ExternalAccountObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ExternalAccountObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ExternalAccountObject'EnumStringBankAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account"

instance Data.Aeson.FromJSON ExternalAccountObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account")
          then ExternalAccountObject'EnumStringBankAccount
          else ExternalAccountObject'EnumOther val
      )

-- | Define the one-of schema external_accountRecipient\'
--
-- The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
data ExternalAccountRecipient'Variants
  = ExternalAccountRecipient'Recipient Recipient
  | ExternalAccountRecipient'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ExternalAccountRecipient'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ExternalAccountRecipient'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema fee_refund
--
-- \`Application Fee Refund\` objects allow you to refund an application fee that
-- has previously been created but not yet refunded. Funds will be refunded to
-- the Stripe account from which the fee was originally collected.
--
-- Related guide: [Refunding Application Fees](https:\/\/stripe.com\/docs\/connect\/destination-charges\#refunding-app-fee).
data FeeRefund
  = FeeRefund
      { -- | amount: Amount, in %s.
        feeRefundAmount :: GHC.Integer.Type.Integer,
        -- | balance_transaction: Balance transaction that describes the impact on your account balance.
        feeRefundBalanceTransaction :: (GHC.Maybe.Maybe FeeRefundBalanceTransaction'Variants),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        feeRefundCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        feeRefundCurrency :: Data.Text.Internal.Text,
        -- | fee: ID of the application fee that was refunded.
        feeRefundFee :: FeeRefundFee'Variants,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        feeRefundId :: Data.Text.Internal.Text,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        feeRefundMetadata :: FeeRefundMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        feeRefundObject :: FeeRefundObject'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON FeeRefund where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (feeRefundAmount obj) : (Data.Aeson..=) "balance_transaction" (feeRefundBalanceTransaction obj) : (Data.Aeson..=) "created" (feeRefundCreated obj) : (Data.Aeson..=) "currency" (feeRefundCurrency obj) : (Data.Aeson..=) "fee" (feeRefundFee obj) : (Data.Aeson..=) "id" (feeRefundId obj) : (Data.Aeson..=) "metadata" (feeRefundMetadata obj) : (Data.Aeson..=) "object" (feeRefundObject obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (feeRefundAmount obj) GHC.Base.<> ((Data.Aeson..=) "balance_transaction" (feeRefundBalanceTransaction obj) GHC.Base.<> ((Data.Aeson..=) "created" (feeRefundCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (feeRefundCurrency obj) GHC.Base.<> ((Data.Aeson..=) "fee" (feeRefundFee obj) GHC.Base.<> ((Data.Aeson..=) "id" (feeRefundId obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (feeRefundMetadata obj) GHC.Base.<> (Data.Aeson..=) "object" (feeRefundObject obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON FeeRefund where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "FeeRefund" (\obj -> (((((((GHC.Base.pure FeeRefund GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "balance_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "fee")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object"))

-- | Define the one-of schema fee_refundBalance_transaction\'
--
-- Balance transaction that describes the impact on your account balance.
data FeeRefundBalanceTransaction'Variants
  = FeeRefundBalanceTransaction'BalanceTransaction BalanceTransaction
  | FeeRefundBalanceTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON FeeRefundBalanceTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON FeeRefundBalanceTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema fee_refundFee\'
--
-- ID of the application fee that was refunded.
data FeeRefundFee'Variants
  = FeeRefundFee'ApplicationFee ApplicationFee
  | FeeRefundFee'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON FeeRefundFee'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON FeeRefundFee'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema fee_refundMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data FeeRefundMetadata'
  = FeeRefundMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON FeeRefundMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON FeeRefundMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "FeeRefundMetadata'" (\obj -> GHC.Base.pure FeeRefundMetadata')

-- | Defines the enum schema fee_refundObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data FeeRefundObject'
  = FeeRefundObject'EnumOther Data.Aeson.Types.Internal.Value
  | FeeRefundObject'EnumTyped Data.Text.Internal.Text
  | FeeRefundObject'EnumStringFeeRefund
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON FeeRefundObject' where
  toJSON (FeeRefundObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (FeeRefundObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (FeeRefundObject'EnumStringFeeRefund) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fee_refund"

instance Data.Aeson.FromJSON FeeRefundObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fee_refund")
          then FeeRefundObject'EnumStringFeeRefund
          else FeeRefundObject'EnumOther val
      )

-- | Defines the data type for the schema file
--
-- This is an object representing a file hosted on Stripe\'s servers. The
-- file may have been uploaded by yourself using the [create file](https:\/\/stripe.com\/docs\/api\#create_file)
-- request (for example, when uploading dispute evidence) or it may have
-- been created by Stripe (for example, the results of a [Sigma scheduled
-- query](\#scheduled_queries)).
--
-- Related guide: [File Upload Guide](https:\/\/stripe.com\/docs\/file-upload).
data File
  = File
      { -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        fileCreated :: GHC.Integer.Type.Integer,
        -- | filename: A filename for the file, suitable for saving to a filesystem.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        fileFilename :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        fileId :: Data.Text.Internal.Text,
        -- | links: A list of [file links](https:\/\/stripe.com\/docs\/api\#file_links) that point at this file.
        fileLinks :: (GHC.Maybe.Maybe FileLinks'),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        fileObject :: FileObject',
        -- | purpose: The purpose of the file. Possible values are \`additional_verification\`, \`business_icon\`, \`business_logo\`, \`customer_signature\`, \`dispute_evidence\`, \`finance_report_run\`, \`identity_document\`, \`pci_document\`, \`sigma_scheduled_query\`, or \`tax_document_user_upload\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        filePurpose :: Data.Text.Internal.Text,
        -- | size: The size in bytes of the file object.
        fileSize :: GHC.Integer.Type.Integer,
        -- | title: A user friendly title for the document.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        fileTitle :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | type: The type of the file returned (e.g., \`csv\`, \`pdf\`, \`jpg\`, or \`png\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        fileType :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | url: The URL from which the file can be downloaded using your live secret API key.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        fileUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON File where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "created" (fileCreated obj) : (Data.Aeson..=) "filename" (fileFilename obj) : (Data.Aeson..=) "id" (fileId obj) : (Data.Aeson..=) "links" (fileLinks obj) : (Data.Aeson..=) "object" (fileObject obj) : (Data.Aeson..=) "purpose" (filePurpose obj) : (Data.Aeson..=) "size" (fileSize obj) : (Data.Aeson..=) "title" (fileTitle obj) : (Data.Aeson..=) "type" (fileType obj) : (Data.Aeson..=) "url" (fileUrl obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "created" (fileCreated obj) GHC.Base.<> ((Data.Aeson..=) "filename" (fileFilename obj) GHC.Base.<> ((Data.Aeson..=) "id" (fileId obj) GHC.Base.<> ((Data.Aeson..=) "links" (fileLinks obj) GHC.Base.<> ((Data.Aeson..=) "object" (fileObject obj) GHC.Base.<> ((Data.Aeson..=) "purpose" (filePurpose obj) GHC.Base.<> ((Data.Aeson..=) "size" (fileSize obj) GHC.Base.<> ((Data.Aeson..=) "title" (fileTitle obj) GHC.Base.<> ((Data.Aeson..=) "type" (fileType obj) GHC.Base.<> (Data.Aeson..=) "url" (fileUrl obj))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON File where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "File" (\obj -> (((((((((GHC.Base.pure File GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "filename")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "links")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "purpose")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "size")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "title")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "url"))

-- | Defines the data type for the schema fileLinks\'
--
-- A list of [file links](https:\/\/stripe.com\/docs\/api\#file_links) that point at this file.
data FileLinks'
  = FileLinks'
      { -- | data: Details about each object.
        fileLinks'Data :: ([] FileLink),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        fileLinks'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        fileLinks'Object :: FileLinks'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        fileLinks'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON FileLinks' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (fileLinks'Data obj) : (Data.Aeson..=) "has_more" (fileLinks'HasMore obj) : (Data.Aeson..=) "object" (fileLinks'Object obj) : (Data.Aeson..=) "url" (fileLinks'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (fileLinks'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (fileLinks'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (fileLinks'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (fileLinks'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON FileLinks' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "FileLinks'" (\obj -> (((GHC.Base.pure FileLinks' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema fileLinks\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data FileLinks'Object'
  = FileLinks'Object'EnumOther Data.Aeson.Types.Internal.Value
  | FileLinks'Object'EnumTyped Data.Text.Internal.Text
  | FileLinks'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON FileLinks'Object' where
  toJSON (FileLinks'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (FileLinks'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (FileLinks'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON FileLinks'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then FileLinks'Object'EnumStringList
          else FileLinks'Object'EnumOther val
      )

-- | Defines the enum schema fileObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data FileObject'
  = FileObject'EnumOther Data.Aeson.Types.Internal.Value
  | FileObject'EnumTyped Data.Text.Internal.Text
  | FileObject'EnumStringFile
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON FileObject' where
  toJSON (FileObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (FileObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (FileObject'EnumStringFile) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "file"

instance Data.Aeson.FromJSON FileObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "file")
          then FileObject'EnumStringFile
          else FileObject'EnumOther val
      )

-- | Defines the data type for the schema file_link
--
-- To share the contents of a \`File\` object with non-Stripe users, you can
-- create a \`FileLink\`. \`FileLink\`s contain a URL that can be used to
-- retrieve the contents of the file without authentication.
data FileLink
  = FileLink
      { -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        fileLinkCreated :: GHC.Integer.Type.Integer,
        -- | expired: Whether this link is already expired.
        fileLinkExpired :: GHC.Types.Bool,
        -- | expires_at: Time at which the link expires.
        fileLinkExpiresAt :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | file: The file object this link points to.
        fileLinkFile :: FileLinkFile'Variants,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        fileLinkId :: 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.
        fileLinkLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        fileLinkMetadata :: FileLinkMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        fileLinkObject :: FileLinkObject',
        -- | url: The publicly accessible URL to download the file.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        fileLinkUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON FileLink where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "created" (fileLinkCreated obj) : (Data.Aeson..=) "expired" (fileLinkExpired obj) : (Data.Aeson..=) "expires_at" (fileLinkExpiresAt obj) : (Data.Aeson..=) "file" (fileLinkFile obj) : (Data.Aeson..=) "id" (fileLinkId obj) : (Data.Aeson..=) "livemode" (fileLinkLivemode obj) : (Data.Aeson..=) "metadata" (fileLinkMetadata obj) : (Data.Aeson..=) "object" (fileLinkObject obj) : (Data.Aeson..=) "url" (fileLinkUrl obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "created" (fileLinkCreated obj) GHC.Base.<> ((Data.Aeson..=) "expired" (fileLinkExpired obj) GHC.Base.<> ((Data.Aeson..=) "expires_at" (fileLinkExpiresAt obj) GHC.Base.<> ((Data.Aeson..=) "file" (fileLinkFile obj) GHC.Base.<> ((Data.Aeson..=) "id" (fileLinkId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (fileLinkLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (fileLinkMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (fileLinkObject obj) GHC.Base.<> (Data.Aeson..=) "url" (fileLinkUrl obj)))))))))

instance Data.Aeson.Types.FromJSON.FromJSON FileLink where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "FileLink" (\obj -> ((((((((GHC.Base.pure FileLink GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "expired")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "expires_at")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "file")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "url"))

-- | Define the one-of schema file_linkFile\'
--
-- The file object this link points to.
data FileLinkFile'Variants
  = FileLinkFile'File File
  | FileLinkFile'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON FileLinkFile'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON FileLinkFile'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema file_linkMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data FileLinkMetadata'
  = FileLinkMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON FileLinkMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON FileLinkMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "FileLinkMetadata'" (\obj -> GHC.Base.pure FileLinkMetadata')

-- | Defines the enum schema file_linkObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data FileLinkObject'
  = FileLinkObject'EnumOther Data.Aeson.Types.Internal.Value
  | FileLinkObject'EnumTyped Data.Text.Internal.Text
  | FileLinkObject'EnumStringFileLink
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON FileLinkObject' where
  toJSON (FileLinkObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (FileLinkObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (FileLinkObject'EnumStringFileLink) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "file_link"

instance Data.Aeson.FromJSON FileLinkObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "file_link")
          then FileLinkObject'EnumStringFileLink
          else FileLinkObject'EnumOther val
      )

-- | Defines the data type for the schema invoice
--
-- Invoices are statements of amounts owed by a customer, and are either
-- generated one-off, or generated periodically from a subscription.
--
-- They contain [invoice items](https:\/\/stripe.com\/docs\/api\#invoiceitems), and proration adjustments
-- that may be caused by subscription upgrades\/downgrades (if necessary).
--
-- If your invoice is configured to be billed through automatic charges,
-- Stripe automatically finalizes your invoice and attempts payment. Note
-- that finalizing the invoice,
-- [when automatic](https:\/\/stripe.com\/docs\/billing\/invoices\/workflow\/\#auto_advance), does
-- not happen immediately as the invoice is created. Stripe waits
-- until one hour after the last webhook was successfully sent (or the last
-- webhook timed out after failing). If you (and the platforms you may have
-- connected to) have no webhooks configured, Stripe waits one hour after
-- creation to finalize the invoice.
--
-- If your invoice is configured to be billed by sending an email, then based on your
-- [email settings](https:\/\/dashboard.stripe.com\/account\/billing\/automatic\'),
-- Stripe will email the invoice to your customer and await payment. These
-- emails can contain a link to a hosted page to pay the invoice.
--
-- Stripe applies any customer credit on the account before determining the
-- amount due for the invoice (i.e., the amount that will be actually
-- charged). If the amount due for the invoice is less than Stripe\'s [minimum allowed charge
-- per currency](\/docs\/currencies\#minimum-and-maximum-charge-amounts), the
-- invoice is automatically marked paid, and we add the amount due to the
-- customer\'s running account balance which is applied to the next invoice.
--
-- More details on the customer\'s account balance are
-- [here](https:\/\/stripe.com\/docs\/api\/customers\/object\#customer_object-account_balance).
--
-- Related guide: [Send Invoices to Customers](https:\/\/stripe.com\/docs\/billing\/invoices\/sending).
data Invoice
  = Invoice
      { -- | account_country: The country of the business associated with this invoice, most often the business creating the invoice.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceAccountCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | account_name: The public name of the business associated with this invoice, most often the business creating the invoice.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceAccountName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | amount_due: Final amount due at this time for this invoice. If the invoice\'s total is smaller than the minimum charge amount, for example, or if there is account credit that can be applied to the invoice, the \`amount_due\` may be 0. If there is a positive \`starting_balance\` for the invoice (the customer owes money), the \`amount_due\` will also take that into account. The charge that gets generated for the invoice will be for the amount specified in \`amount_due\`.
        invoiceAmountDue :: GHC.Integer.Type.Integer,
        -- | amount_paid: The amount, in %s, that was paid.
        invoiceAmountPaid :: GHC.Integer.Type.Integer,
        -- | amount_remaining: The amount remaining, in %s, that is due.
        invoiceAmountRemaining :: GHC.Integer.Type.Integer,
        -- | application_fee_amount: The fee in %s that will be applied to the invoice and transferred to the application owner\'s Stripe account when the invoice is paid.
        invoiceApplicationFeeAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | attempt_count: Number of payment attempts made for this invoice, from the perspective of the payment retry schedule. Any payment attempt counts as the first attempt, and subsequently only automatic retries increment the attempt count. In other words, manual payment attempts after the first attempt do not affect the retry schedule.
        invoiceAttemptCount :: GHC.Integer.Type.Integer,
        -- | attempted: Whether an attempt has been made to pay the invoice. An invoice is not attempted until 1 hour after the \`invoice.created\` webhook, for example, so you might not want to display that invoice as unpaid to your users.
        invoiceAttempted :: GHC.Types.Bool,
        -- | auto_advance: Controls whether Stripe will perform [automatic collection](https:\/\/stripe.com\/docs\/billing\/invoices\/workflow\/\#auto_advance) of the invoice. When \`false\`, the invoice\'s state will not automatically advance without an explicit action.
        invoiceAutoAdvance :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | billing_reason: Indicates the reason why the invoice was created. \`subscription_cycle\` indicates an invoice created by a subscription advancing into a new period. \`subscription_create\` indicates an invoice created due to creating a subscription. \`subscription_update\` indicates an invoice created due to updating a subscription. \`subscription\` is set for all old invoices to indicate either a change to a subscription or a period advancement. \`manual\` is set for all invoices unrelated to a subscription (for example: created via the invoice editor). The \`upcoming\` value is reserved for simulated invoices per the upcoming invoice endpoint. \`subscription_threshold\` indicates an invoice created due to a billing threshold being reached.
        invoiceBillingReason :: (GHC.Maybe.Maybe InvoiceBillingReason'),
        -- | charge: ID of the latest charge generated for this invoice, if any.
        invoiceCharge :: (GHC.Maybe.Maybe InvoiceCharge'Variants),
        -- | collection_method: Either \`charge_automatically\`, or \`send_invoice\`. When charging automatically, Stripe will attempt to pay this invoice using the default source attached to the customer. When sending an invoice, Stripe will email this invoice to the customer with payment instructions.
        invoiceCollectionMethod :: (GHC.Maybe.Maybe InvoiceCollectionMethod'),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        invoiceCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        invoiceCurrency :: Data.Text.Internal.Text,
        -- | custom_fields: Custom fields displayed on the invoice.
        invoiceCustomFields :: (GHC.Maybe.Maybe ([] InvoiceSettingCustomField)),
        -- | customer: The ID of the customer who will be billed.
        invoiceCustomer :: InvoiceCustomer'Variants,
        -- | customer_address: The customer\'s address. Until the invoice is finalized, this field will equal \`customer.address\`. Once the invoice is finalized, this field will no longer be updated.
        invoiceCustomerAddress :: (GHC.Maybe.Maybe InvoiceCustomerAddress'),
        -- | customer_email: The customer\'s email. Until the invoice is finalized, this field will equal \`customer.email\`. Once the invoice is finalized, this field will no longer be updated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceCustomerEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer_name: The customer\'s name. Until the invoice is finalized, this field will equal \`customer.name\`. Once the invoice is finalized, this field will no longer be updated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceCustomerName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer_phone: The customer\'s phone number. Until the invoice is finalized, this field will equal \`customer.phone\`. Once the invoice is finalized, this field will no longer be updated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceCustomerPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer_shipping: The customer\'s shipping information. Until the invoice is finalized, this field will equal \`customer.shipping\`. Once the invoice is finalized, this field will no longer be updated.
        invoiceCustomerShipping :: (GHC.Maybe.Maybe InvoiceCustomerShipping'),
        -- | customer_tax_exempt: The customer\'s tax exempt status. Until the invoice is finalized, this field will equal \`customer.tax_exempt\`. Once the invoice is finalized, this field will no longer be updated.
        invoiceCustomerTaxExempt :: (GHC.Maybe.Maybe InvoiceCustomerTaxExempt'),
        -- | customer_tax_ids: The customer\'s tax IDs. Until the invoice is finalized, this field will contain the same tax IDs as \`customer.tax_ids\`. Once the invoice is finalized, this field will no longer be updated.
        invoiceCustomerTaxIds :: (GHC.Maybe.Maybe ([] InvoicesResourceInvoiceTaxId)),
        -- | default_payment_method: ID of the default payment method for the invoice. It must belong to the customer associated with the invoice. If not set, defaults to the subscription\'s default payment method, if any, or to the default payment method in the customer\'s invoice settings.
        invoiceDefaultPaymentMethod :: (GHC.Maybe.Maybe InvoiceDefaultPaymentMethod'Variants),
        -- | default_source: ID of the default payment source for the invoice. It must belong to the customer associated with the invoice and be in a chargeable state. If not set, defaults to the subscription\'s default source, if any, or to the customer\'s default source.
        invoiceDefaultSource :: (GHC.Maybe.Maybe InvoiceDefaultSource'Variants),
        -- | default_tax_rates: The tax rates applied to this invoice, if any.
        invoiceDefaultTaxRates :: (GHC.Maybe.Maybe ([] TaxRate)),
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users. Referenced as \'memo\' in the Dashboard.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | discount: Describes the current discount applied to this invoice, if there is one.
        invoiceDiscount :: (GHC.Maybe.Maybe InvoiceDiscount'),
        -- | due_date: The date on which payment for this invoice is due. This value will be \`null\` for invoices where \`collection_method=charge_automatically\`.
        invoiceDueDate :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | ending_balance: Ending customer balance after the invoice is finalized. Invoices are finalized approximately an hour after successful webhook delivery or when payment collection is attempted for the invoice. If the invoice has not been finalized yet, this will be null.
        invoiceEndingBalance :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | footer: Footer displayed on the invoice.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceFooter :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | hosted_invoice_url: The URL for the hosted invoice page, which allows customers to view and pay an invoice. If the invoice has not been finalized yet, this will be null.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceHostedInvoiceUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceId :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | invoice_pdf: The link to download the PDF for the invoice. If the invoice has not been finalized yet, this will be null.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceInvoicePdf :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | lines: The individual line items that make up the invoice. \`lines\` is sorted as follows: invoice items in reverse chronological order, followed by the subscription, if any.
        invoiceLines :: InvoiceLines',
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        invoiceLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        invoiceMetadata :: (GHC.Maybe.Maybe InvoiceMetadata'),
        -- | next_payment_attempt: The time at which payment will next be attempted. This value will be \`null\` for invoices where \`collection_method=send_invoice\`.
        invoiceNextPaymentAttempt :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | number: A unique, identifying string that appears on emails sent to the customer for this invoice. This starts with the customer\'s unique invoice_prefix if it is specified.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        invoiceObject :: InvoiceObject',
        -- | paid: Whether payment was successfully collected for this invoice. An invoice can be paid (most commonly) with a charge or with credit from the customer\'s account balance.
        invoicePaid :: GHC.Types.Bool,
        -- | payment_intent: The PaymentIntent associated with this invoice. The PaymentIntent is generated when the invoice is finalized, and can then be used to pay the invoice. Note that voiding an invoice will cancel the PaymentIntent.
        invoicePaymentIntent :: (GHC.Maybe.Maybe InvoicePaymentIntent'Variants),
        -- | period_end: End of the usage period during which invoice items were added to this invoice.
        invoicePeriodEnd :: GHC.Integer.Type.Integer,
        -- | period_start: Start of the usage period during which invoice items were added to this invoice.
        invoicePeriodStart :: GHC.Integer.Type.Integer,
        -- | post_payment_credit_notes_amount: Total amount of all post-payment credit notes issued for this invoice.
        invoicePostPaymentCreditNotesAmount :: GHC.Integer.Type.Integer,
        -- | pre_payment_credit_notes_amount: Total amount of all pre-payment credit notes issued for this invoice.
        invoicePrePaymentCreditNotesAmount :: GHC.Integer.Type.Integer,
        -- | receipt_number: This is the transaction number that appears on email receipts sent for this invoice.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceReceiptNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | starting_balance: Starting customer balance before the invoice is finalized. If the invoice has not been finalized yet, this will be the current customer balance.
        invoiceStartingBalance :: GHC.Integer.Type.Integer,
        -- | statement_descriptor: Extra information about an invoice for the customer\'s credit card statement.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceStatementDescriptor :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: The status of the invoice, one of \`draft\`, \`open\`, \`paid\`, \`uncollectible\`, or \`void\`. [Learn more](https:\/\/stripe.com\/docs\/billing\/invoices\/workflow\#workflow-overview)
        invoiceStatus :: (GHC.Maybe.Maybe InvoiceStatus'),
        -- | status_transitions:
        invoiceStatusTransitions :: InvoicesStatusTransitions,
        -- | subscription: The subscription that this invoice was prepared for, if any.
        invoiceSubscription :: (GHC.Maybe.Maybe InvoiceSubscription'Variants),
        -- | subscription_proration_date: Only set for upcoming invoices that preview prorations. The time used to calculate prorations.
        invoiceSubscriptionProrationDate :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | subtotal: Total of all subscriptions, invoice items, and prorations on the invoice before any discount or tax is applied.
        invoiceSubtotal :: GHC.Integer.Type.Integer,
        -- | tax: The amount of tax on this invoice. This is the sum of all the tax amounts on this invoice.
        invoiceTax :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | tax_percent: This percentage of the subtotal has been added to the total amount of the invoice, including invoice line items and discounts. This field is inherited from the subscription\'s \`tax_percent\` field, but can be changed before the invoice is paid. This field defaults to null.
        invoiceTaxPercent :: (GHC.Maybe.Maybe GHC.Types.Double),
        -- | threshold_reason:
        invoiceThresholdReason :: (GHC.Maybe.Maybe InvoiceThresholdReason),
        -- | total: Total after discounts and taxes.
        invoiceTotal :: GHC.Integer.Type.Integer,
        -- | total_tax_amounts: The aggregate amounts calculated per tax rate for all line items.
        invoiceTotalTaxAmounts :: (GHC.Maybe.Maybe ([] InvoiceTaxAmount)),
        -- | webhooks_delivered_at: The time at which webhooks for this invoice were successfully delivered (if the invoice had no webhooks to deliver, this will match \`created\`). Invoice payment is delayed until webhooks are delivered, or until all webhook delivery attempts have been exhausted.
        invoiceWebhooksDeliveredAt :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Invoice where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account_country" (invoiceAccountCountry obj) : (Data.Aeson..=) "account_name" (invoiceAccountName obj) : (Data.Aeson..=) "amount_due" (invoiceAmountDue obj) : (Data.Aeson..=) "amount_paid" (invoiceAmountPaid obj) : (Data.Aeson..=) "amount_remaining" (invoiceAmountRemaining obj) : (Data.Aeson..=) "application_fee_amount" (invoiceApplicationFeeAmount obj) : (Data.Aeson..=) "attempt_count" (invoiceAttemptCount obj) : (Data.Aeson..=) "attempted" (invoiceAttempted obj) : (Data.Aeson..=) "auto_advance" (invoiceAutoAdvance obj) : (Data.Aeson..=) "billing_reason" (invoiceBillingReason obj) : (Data.Aeson..=) "charge" (invoiceCharge obj) : (Data.Aeson..=) "collection_method" (invoiceCollectionMethod obj) : (Data.Aeson..=) "created" (invoiceCreated obj) : (Data.Aeson..=) "currency" (invoiceCurrency obj) : (Data.Aeson..=) "custom_fields" (invoiceCustomFields obj) : (Data.Aeson..=) "customer" (invoiceCustomer obj) : (Data.Aeson..=) "customer_address" (invoiceCustomerAddress obj) : (Data.Aeson..=) "customer_email" (invoiceCustomerEmail obj) : (Data.Aeson..=) "customer_name" (invoiceCustomerName obj) : (Data.Aeson..=) "customer_phone" (invoiceCustomerPhone obj) : (Data.Aeson..=) "customer_shipping" (invoiceCustomerShipping obj) : (Data.Aeson..=) "customer_tax_exempt" (invoiceCustomerTaxExempt obj) : (Data.Aeson..=) "customer_tax_ids" (invoiceCustomerTaxIds obj) : (Data.Aeson..=) "default_payment_method" (invoiceDefaultPaymentMethod obj) : (Data.Aeson..=) "default_source" (invoiceDefaultSource obj) : (Data.Aeson..=) "default_tax_rates" (invoiceDefaultTaxRates obj) : (Data.Aeson..=) "description" (invoiceDescription obj) : (Data.Aeson..=) "discount" (invoiceDiscount obj) : (Data.Aeson..=) "due_date" (invoiceDueDate obj) : (Data.Aeson..=) "ending_balance" (invoiceEndingBalance obj) : (Data.Aeson..=) "footer" (invoiceFooter obj) : (Data.Aeson..=) "hosted_invoice_url" (invoiceHostedInvoiceUrl obj) : (Data.Aeson..=) "id" (invoiceId obj) : (Data.Aeson..=) "invoice_pdf" (invoiceInvoicePdf obj) : (Data.Aeson..=) "lines" (invoiceLines obj) : (Data.Aeson..=) "livemode" (invoiceLivemode obj) : (Data.Aeson..=) "metadata" (invoiceMetadata obj) : (Data.Aeson..=) "next_payment_attempt" (invoiceNextPaymentAttempt obj) : (Data.Aeson..=) "number" (invoiceNumber obj) : (Data.Aeson..=) "object" (invoiceObject obj) : (Data.Aeson..=) "paid" (invoicePaid obj) : (Data.Aeson..=) "payment_intent" (invoicePaymentIntent obj) : (Data.Aeson..=) "period_end" (invoicePeriodEnd obj) : (Data.Aeson..=) "period_start" (invoicePeriodStart obj) : (Data.Aeson..=) "post_payment_credit_notes_amount" (invoicePostPaymentCreditNotesAmount obj) : (Data.Aeson..=) "pre_payment_credit_notes_amount" (invoicePrePaymentCreditNotesAmount obj) : (Data.Aeson..=) "receipt_number" (invoiceReceiptNumber obj) : (Data.Aeson..=) "starting_balance" (invoiceStartingBalance obj) : (Data.Aeson..=) "statement_descriptor" (invoiceStatementDescriptor obj) : (Data.Aeson..=) "status" (invoiceStatus obj) : (Data.Aeson..=) "status_transitions" (invoiceStatusTransitions obj) : (Data.Aeson..=) "subscription" (invoiceSubscription obj) : (Data.Aeson..=) "subscription_proration_date" (invoiceSubscriptionProrationDate obj) : (Data.Aeson..=) "subtotal" (invoiceSubtotal obj) : (Data.Aeson..=) "tax" (invoiceTax obj) : (Data.Aeson..=) "tax_percent" (invoiceTaxPercent obj) : (Data.Aeson..=) "threshold_reason" (invoiceThresholdReason obj) : (Data.Aeson..=) "total" (invoiceTotal obj) : (Data.Aeson..=) "total_tax_amounts" (invoiceTotalTaxAmounts obj) : (Data.Aeson..=) "webhooks_delivered_at" (invoiceWebhooksDeliveredAt obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account_country" (invoiceAccountCountry obj) GHC.Base.<> ((Data.Aeson..=) "account_name" (invoiceAccountName obj) GHC.Base.<> ((Data.Aeson..=) "amount_due" (invoiceAmountDue obj) GHC.Base.<> ((Data.Aeson..=) "amount_paid" (invoiceAmountPaid obj) GHC.Base.<> ((Data.Aeson..=) "amount_remaining" (invoiceAmountRemaining obj) GHC.Base.<> ((Data.Aeson..=) "application_fee_amount" (invoiceApplicationFeeAmount obj) GHC.Base.<> ((Data.Aeson..=) "attempt_count" (invoiceAttemptCount obj) GHC.Base.<> ((Data.Aeson..=) "attempted" (invoiceAttempted obj) GHC.Base.<> ((Data.Aeson..=) "auto_advance" (invoiceAutoAdvance obj) GHC.Base.<> ((Data.Aeson..=) "billing_reason" (invoiceBillingReason obj) GHC.Base.<> ((Data.Aeson..=) "charge" (invoiceCharge obj) GHC.Base.<> ((Data.Aeson..=) "collection_method" (invoiceCollectionMethod obj) GHC.Base.<> ((Data.Aeson..=) "created" (invoiceCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (invoiceCurrency obj) GHC.Base.<> ((Data.Aeson..=) "custom_fields" (invoiceCustomFields obj) GHC.Base.<> ((Data.Aeson..=) "customer" (invoiceCustomer obj) GHC.Base.<> ((Data.Aeson..=) "customer_address" (invoiceCustomerAddress obj) GHC.Base.<> ((Data.Aeson..=) "customer_email" (invoiceCustomerEmail obj) GHC.Base.<> ((Data.Aeson..=) "customer_name" (invoiceCustomerName obj) GHC.Base.<> ((Data.Aeson..=) "customer_phone" (invoiceCustomerPhone obj) GHC.Base.<> ((Data.Aeson..=) "customer_shipping" (invoiceCustomerShipping obj) GHC.Base.<> ((Data.Aeson..=) "customer_tax_exempt" (invoiceCustomerTaxExempt obj) GHC.Base.<> ((Data.Aeson..=) "customer_tax_ids" (invoiceCustomerTaxIds obj) GHC.Base.<> ((Data.Aeson..=) "default_payment_method" (invoiceDefaultPaymentMethod obj) GHC.Base.<> ((Data.Aeson..=) "default_source" (invoiceDefaultSource obj) GHC.Base.<> ((Data.Aeson..=) "default_tax_rates" (invoiceDefaultTaxRates obj) GHC.Base.<> ((Data.Aeson..=) "description" (invoiceDescription obj) GHC.Base.<> ((Data.Aeson..=) "discount" (invoiceDiscount obj) GHC.Base.<> ((Data.Aeson..=) "due_date" (invoiceDueDate obj) GHC.Base.<> ((Data.Aeson..=) "ending_balance" (invoiceEndingBalance obj) GHC.Base.<> ((Data.Aeson..=) "footer" (invoiceFooter obj) GHC.Base.<> ((Data.Aeson..=) "hosted_invoice_url" (invoiceHostedInvoiceUrl obj) GHC.Base.<> ((Data.Aeson..=) "id" (invoiceId obj) GHC.Base.<> ((Data.Aeson..=) "invoice_pdf" (invoiceInvoicePdf obj) GHC.Base.<> ((Data.Aeson..=) "lines" (invoiceLines obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (invoiceLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (invoiceMetadata obj) GHC.Base.<> ((Data.Aeson..=) "next_payment_attempt" (invoiceNextPaymentAttempt obj) GHC.Base.<> ((Data.Aeson..=) "number" (invoiceNumber obj) GHC.Base.<> ((Data.Aeson..=) "object" (invoiceObject obj) GHC.Base.<> ((Data.Aeson..=) "paid" (invoicePaid obj) GHC.Base.<> ((Data.Aeson..=) "payment_intent" (invoicePaymentIntent obj) GHC.Base.<> ((Data.Aeson..=) "period_end" (invoicePeriodEnd obj) GHC.Base.<> ((Data.Aeson..=) "period_start" (invoicePeriodStart obj) GHC.Base.<> ((Data.Aeson..=) "post_payment_credit_notes_amount" (invoicePostPaymentCreditNotesAmount obj) GHC.Base.<> ((Data.Aeson..=) "pre_payment_credit_notes_amount" (invoicePrePaymentCreditNotesAmount obj) GHC.Base.<> ((Data.Aeson..=) "receipt_number" (invoiceReceiptNumber obj) GHC.Base.<> ((Data.Aeson..=) "starting_balance" (invoiceStartingBalance obj) GHC.Base.<> ((Data.Aeson..=) "statement_descriptor" (invoiceStatementDescriptor obj) GHC.Base.<> ((Data.Aeson..=) "status" (invoiceStatus obj) GHC.Base.<> ((Data.Aeson..=) "status_transitions" (invoiceStatusTransitions obj) GHC.Base.<> ((Data.Aeson..=) "subscription" (invoiceSubscription obj) GHC.Base.<> ((Data.Aeson..=) "subscription_proration_date" (invoiceSubscriptionProrationDate obj) GHC.Base.<> ((Data.Aeson..=) "subtotal" (invoiceSubtotal obj) GHC.Base.<> ((Data.Aeson..=) "tax" (invoiceTax obj) GHC.Base.<> ((Data.Aeson..=) "tax_percent" (invoiceTaxPercent obj) GHC.Base.<> ((Data.Aeson..=) "threshold_reason" (invoiceThresholdReason obj) GHC.Base.<> ((Data.Aeson..=) "total" (invoiceTotal obj) GHC.Base.<> ((Data.Aeson..=) "total_tax_amounts" (invoiceTotalTaxAmounts obj) GHC.Base.<> (Data.Aeson..=) "webhooks_delivered_at" (invoiceWebhooksDeliveredAt obj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Invoice where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Invoice" (\obj -> (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((GHC.Base.pure Invoice GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount_due")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount_paid")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount_remaining")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "application_fee_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "attempt_count")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "attempted")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "auto_advance")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "charge")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "collection_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "custom_fields")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer_email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer_phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer_shipping")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer_tax_exempt")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer_tax_ids")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_payment_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_source")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_tax_rates")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "discount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "due_date")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ending_balance")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "footer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "hosted_invoice_url")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "invoice_pdf")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "lines")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "next_payment_attempt")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "paid")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_intent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "period_end")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "period_start")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "post_payment_credit_notes_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "pre_payment_credit_notes_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "receipt_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "starting_balance")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "statement_descriptor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status_transitions")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscription")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscription_proration_date")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "subtotal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_percent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "threshold_reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "total")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "total_tax_amounts")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "webhooks_delivered_at"))

-- | Defines the enum schema invoiceBilling_reason\'
--
-- Indicates the reason why the invoice was created. \`subscription_cycle\` indicates an invoice created by a subscription advancing into a new period. \`subscription_create\` indicates an invoice created due to creating a subscription. \`subscription_update\` indicates an invoice created due to updating a subscription. \`subscription\` is set for all old invoices to indicate either a change to a subscription or a period advancement. \`manual\` is set for all invoices unrelated to a subscription (for example: created via the invoice editor). The \`upcoming\` value is reserved for simulated invoices per the upcoming invoice endpoint. \`subscription_threshold\` indicates an invoice created due to a billing threshold being reached.
data InvoiceBillingReason'
  = InvoiceBillingReason'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceBillingReason'EnumTyped Data.Text.Internal.Text
  | InvoiceBillingReason'EnumStringAutomaticPendingInvoiceItemInvoice
  | InvoiceBillingReason'EnumStringManual
  | InvoiceBillingReason'EnumStringSubscription
  | InvoiceBillingReason'EnumStringSubscriptionCreate
  | InvoiceBillingReason'EnumStringSubscriptionCycle
  | InvoiceBillingReason'EnumStringSubscriptionThreshold
  | InvoiceBillingReason'EnumStringSubscriptionUpdate
  | InvoiceBillingReason'EnumStringUpcoming
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceBillingReason' where
  toJSON (InvoiceBillingReason'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceBillingReason'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceBillingReason'EnumStringAutomaticPendingInvoiceItemInvoice) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automatic_pending_invoice_item_invoice"
  toJSON (InvoiceBillingReason'EnumStringManual) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual"
  toJSON (InvoiceBillingReason'EnumStringSubscription) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription"
  toJSON (InvoiceBillingReason'EnumStringSubscriptionCreate) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription_create"
  toJSON (InvoiceBillingReason'EnumStringSubscriptionCycle) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription_cycle"
  toJSON (InvoiceBillingReason'EnumStringSubscriptionThreshold) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription_threshold"
  toJSON (InvoiceBillingReason'EnumStringSubscriptionUpdate) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription_update"
  toJSON (InvoiceBillingReason'EnumStringUpcoming) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "upcoming"

instance Data.Aeson.FromJSON InvoiceBillingReason' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automatic_pending_invoice_item_invoice")
          then InvoiceBillingReason'EnumStringAutomaticPendingInvoiceItemInvoice
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual")
              then InvoiceBillingReason'EnumStringManual
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription")
                  then InvoiceBillingReason'EnumStringSubscription
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription_create")
                      then InvoiceBillingReason'EnumStringSubscriptionCreate
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription_cycle")
                          then InvoiceBillingReason'EnumStringSubscriptionCycle
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription_threshold")
                              then InvoiceBillingReason'EnumStringSubscriptionThreshold
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription_update")
                                  then InvoiceBillingReason'EnumStringSubscriptionUpdate
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "upcoming")
                                      then InvoiceBillingReason'EnumStringUpcoming
                                      else InvoiceBillingReason'EnumOther val
      )

-- | Define the one-of schema invoiceCharge\'
--
-- ID of the latest charge generated for this invoice, if any.
data InvoiceCharge'Variants
  = InvoiceCharge'Charge Charge
  | InvoiceCharge'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON InvoiceCharge'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON InvoiceCharge'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema invoiceCollection_method\'
--
-- Either \`charge_automatically\`, or \`send_invoice\`. When charging automatically, Stripe will attempt to pay this invoice using the default source attached to the customer. When sending an invoice, Stripe will email this invoice to the customer with payment instructions.
data InvoiceCollectionMethod'
  = InvoiceCollectionMethod'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceCollectionMethod'EnumTyped Data.Text.Internal.Text
  | InvoiceCollectionMethod'EnumStringChargeAutomatically
  | InvoiceCollectionMethod'EnumStringSendInvoice
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceCollectionMethod' where
  toJSON (InvoiceCollectionMethod'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceCollectionMethod'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceCollectionMethod'EnumStringChargeAutomatically) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charge_automatically"
  toJSON (InvoiceCollectionMethod'EnumStringSendInvoice) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "send_invoice"

instance Data.Aeson.FromJSON InvoiceCollectionMethod' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charge_automatically")
          then InvoiceCollectionMethod'EnumStringChargeAutomatically
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "send_invoice")
              then InvoiceCollectionMethod'EnumStringSendInvoice
              else InvoiceCollectionMethod'EnumOther val
      )

-- | Define the one-of schema invoiceCustomer\'
--
-- The ID of the customer who will be billed.
data InvoiceCustomer'Variants
  = InvoiceCustomer'Customer Customer
  | InvoiceCustomer'DeletedCustomer DeletedCustomer
  | InvoiceCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON InvoiceCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON InvoiceCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema invoiceCustomer_address\'
--
-- The customer\\\'s address. Until the invoice is finalized, this field will equal \\\`customer.address\\\`. Once the invoice is finalized, this field will no longer be updated.
data InvoiceCustomerAddress'
  = InvoiceCustomerAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceCustomerAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceCustomerAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceCustomerAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceCustomerAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceCustomerAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceCustomerAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON InvoiceCustomerAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (invoiceCustomerAddress'City obj) : (Data.Aeson..=) "country" (invoiceCustomerAddress'Country obj) : (Data.Aeson..=) "line1" (invoiceCustomerAddress'Line1 obj) : (Data.Aeson..=) "line2" (invoiceCustomerAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (invoiceCustomerAddress'PostalCode obj) : (Data.Aeson..=) "state" (invoiceCustomerAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (invoiceCustomerAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (invoiceCustomerAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (invoiceCustomerAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (invoiceCustomerAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (invoiceCustomerAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (invoiceCustomerAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON InvoiceCustomerAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "InvoiceCustomerAddress'" (\obj -> (((((GHC.Base.pure InvoiceCustomerAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema invoiceCustomer_shipping\'
--
-- The customer\\\'s shipping information. Until the invoice is finalized, this field will equal \\\`customer.shipping\\\`. Once the invoice is finalized, this field will no longer be updated.
data InvoiceCustomerShipping'
  = InvoiceCustomerShipping'
      { -- | address:
        invoiceCustomerShipping'Address :: (GHC.Maybe.Maybe Address),
        -- | carrier: The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceCustomerShipping'Carrier :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Recipient name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceCustomerShipping'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | phone: Recipient phone (including extension).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceCustomerShipping'Phone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | tracking_number: The tracking number for a physical product, obtained from the delivery service. If multiple tracking numbers were generated for this purchase, please separate them with commas.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceCustomerShipping'TrackingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON InvoiceCustomerShipping' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (invoiceCustomerShipping'Address obj) : (Data.Aeson..=) "carrier" (invoiceCustomerShipping'Carrier obj) : (Data.Aeson..=) "name" (invoiceCustomerShipping'Name obj) : (Data.Aeson..=) "phone" (invoiceCustomerShipping'Phone obj) : (Data.Aeson..=) "tracking_number" (invoiceCustomerShipping'TrackingNumber obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (invoiceCustomerShipping'Address obj) GHC.Base.<> ((Data.Aeson..=) "carrier" (invoiceCustomerShipping'Carrier obj) GHC.Base.<> ((Data.Aeson..=) "name" (invoiceCustomerShipping'Name obj) GHC.Base.<> ((Data.Aeson..=) "phone" (invoiceCustomerShipping'Phone obj) GHC.Base.<> (Data.Aeson..=) "tracking_number" (invoiceCustomerShipping'TrackingNumber obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON InvoiceCustomerShipping' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "InvoiceCustomerShipping'" (\obj -> ((((GHC.Base.pure InvoiceCustomerShipping' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "carrier")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tracking_number"))

-- | Defines the enum schema invoiceCustomer_tax_exempt\'
--
-- The customer\'s tax exempt status. Until the invoice is finalized, this field will equal \`customer.tax_exempt\`. Once the invoice is finalized, this field will no longer be updated.
data InvoiceCustomerTaxExempt'
  = InvoiceCustomerTaxExempt'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceCustomerTaxExempt'EnumTyped Data.Text.Internal.Text
  | InvoiceCustomerTaxExempt'EnumStringExempt
  | InvoiceCustomerTaxExempt'EnumStringNone
  | InvoiceCustomerTaxExempt'EnumStringReverse
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceCustomerTaxExempt' where
  toJSON (InvoiceCustomerTaxExempt'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceCustomerTaxExempt'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceCustomerTaxExempt'EnumStringExempt) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "exempt"
  toJSON (InvoiceCustomerTaxExempt'EnumStringNone) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "none"
  toJSON (InvoiceCustomerTaxExempt'EnumStringReverse) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "reverse"

instance Data.Aeson.FromJSON InvoiceCustomerTaxExempt' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "exempt")
          then InvoiceCustomerTaxExempt'EnumStringExempt
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "none")
              then InvoiceCustomerTaxExempt'EnumStringNone
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "reverse")
                  then InvoiceCustomerTaxExempt'EnumStringReverse
                  else InvoiceCustomerTaxExempt'EnumOther val
      )

-- | Define the one-of schema invoiceDefault_payment_method\'
--
-- ID of the default payment method for the invoice. It must belong to the customer associated with the invoice. If not set, defaults to the subscription\'s default payment method, if any, or to the default payment method in the customer\'s invoice settings.
data InvoiceDefaultPaymentMethod'Variants
  = InvoiceDefaultPaymentMethod'PaymentMethod PaymentMethod
  | InvoiceDefaultPaymentMethod'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON InvoiceDefaultPaymentMethod'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON InvoiceDefaultPaymentMethod'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema invoiceDefault_source\'
--
-- ID of the default payment source for the invoice. It must belong to the customer associated with the invoice and be in a chargeable state. If not set, defaults to the subscription\'s default source, if any, or to the customer\'s default source.
data InvoiceDefaultSource'Variants
  = InvoiceDefaultSource'AlipayAccount AlipayAccount
  | InvoiceDefaultSource'BankAccount BankAccount
  | InvoiceDefaultSource'BitcoinReceiver BitcoinReceiver
  | InvoiceDefaultSource'Card Card
  | InvoiceDefaultSource'Source Source
  | InvoiceDefaultSource'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON InvoiceDefaultSource'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON InvoiceDefaultSource'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema invoiceDiscount\'
--
-- Describes the current discount applied to this invoice, if there is one.
data InvoiceDiscount'
  = InvoiceDiscount'
      { -- | coupon: A coupon contains information about a percent-off or amount-off discount you
        -- might want to apply to a customer. Coupons may be applied to [invoices](https:\/\/stripe.com\/docs\/api\#invoices) or
        -- [orders](https:\/\/stripe.com\/docs\/api\#create_order-coupon). Coupons do not work with conventional one-off [charges](https:\/\/stripe.com\/docs\/api\#create_charge).
        invoiceDiscount'Coupon :: (GHC.Maybe.Maybe Coupon),
        -- | customer: The ID of the customer associated with this discount.
        invoiceDiscount'Customer :: (GHC.Maybe.Maybe InvoiceDiscount'Customer'Variants),
        -- | end: If the coupon has a duration of \`repeating\`, the date that this discount will end. If the coupon has a duration of \`once\` or \`forever\`, this attribute will be null.
        invoiceDiscount'End :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        invoiceDiscount'Object :: (GHC.Maybe.Maybe InvoiceDiscount'Object'),
        -- | start: Date that the coupon was applied.
        invoiceDiscount'Start :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | subscription: The subscription that this coupon is applied to, if it is applied to a particular subscription.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceDiscount'Subscription :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON InvoiceDiscount' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "coupon" (invoiceDiscount'Coupon obj) : (Data.Aeson..=) "customer" (invoiceDiscount'Customer obj) : (Data.Aeson..=) "end" (invoiceDiscount'End obj) : (Data.Aeson..=) "object" (invoiceDiscount'Object obj) : (Data.Aeson..=) "start" (invoiceDiscount'Start obj) : (Data.Aeson..=) "subscription" (invoiceDiscount'Subscription obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "coupon" (invoiceDiscount'Coupon obj) GHC.Base.<> ((Data.Aeson..=) "customer" (invoiceDiscount'Customer obj) GHC.Base.<> ((Data.Aeson..=) "end" (invoiceDiscount'End obj) GHC.Base.<> ((Data.Aeson..=) "object" (invoiceDiscount'Object obj) GHC.Base.<> ((Data.Aeson..=) "start" (invoiceDiscount'Start obj) GHC.Base.<> (Data.Aeson..=) "subscription" (invoiceDiscount'Subscription obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON InvoiceDiscount' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "InvoiceDiscount'" (\obj -> (((((GHC.Base.pure InvoiceDiscount' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "coupon")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "end")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "start")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscription"))

-- | Define the one-of schema invoiceDiscount\'Customer\'
--
-- The ID of the customer associated with this discount.
data InvoiceDiscount'Customer'Variants
  = InvoiceDiscount'Customer'Customer Customer
  | InvoiceDiscount'Customer'DeletedCustomer DeletedCustomer
  | InvoiceDiscount'Customer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON InvoiceDiscount'Customer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON InvoiceDiscount'Customer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema invoiceDiscount\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data InvoiceDiscount'Object'
  = InvoiceDiscount'Object'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceDiscount'Object'EnumTyped Data.Text.Internal.Text
  | InvoiceDiscount'Object'EnumStringDiscount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceDiscount'Object' where
  toJSON (InvoiceDiscount'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceDiscount'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceDiscount'Object'EnumStringDiscount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount"

instance Data.Aeson.FromJSON InvoiceDiscount'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount")
          then InvoiceDiscount'Object'EnumStringDiscount
          else InvoiceDiscount'Object'EnumOther val
      )

-- | Defines the data type for the schema invoiceLines\'
--
-- The individual line items that make up the invoice. \`lines\` is sorted as follows: invoice items in reverse chronological order, followed by the subscription, if any.
data InvoiceLines'
  = InvoiceLines'
      { -- | data: Details about each object.
        invoiceLines'Data :: ([] LineItem),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        invoiceLines'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        invoiceLines'Object :: InvoiceLines'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceLines'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON InvoiceLines' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (invoiceLines'Data obj) : (Data.Aeson..=) "has_more" (invoiceLines'HasMore obj) : (Data.Aeson..=) "object" (invoiceLines'Object obj) : (Data.Aeson..=) "url" (invoiceLines'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (invoiceLines'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (invoiceLines'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (invoiceLines'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (invoiceLines'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON InvoiceLines' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "InvoiceLines'" (\obj -> (((GHC.Base.pure InvoiceLines' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema invoiceLines\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data InvoiceLines'Object'
  = InvoiceLines'Object'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceLines'Object'EnumTyped Data.Text.Internal.Text
  | InvoiceLines'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceLines'Object' where
  toJSON (InvoiceLines'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceLines'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceLines'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON InvoiceLines'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then InvoiceLines'Object'EnumStringList
          else InvoiceLines'Object'EnumOther val
      )

-- | Defines the data type for the schema invoiceMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data InvoiceMetadata'
  = InvoiceMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON InvoiceMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON InvoiceMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "InvoiceMetadata'" (\obj -> GHC.Base.pure InvoiceMetadata')

-- | Defines the enum schema invoiceObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data InvoiceObject'
  = InvoiceObject'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceObject'EnumTyped Data.Text.Internal.Text
  | InvoiceObject'EnumStringInvoice
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceObject' where
  toJSON (InvoiceObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceObject'EnumStringInvoice) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invoice"

instance Data.Aeson.FromJSON InvoiceObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invoice")
          then InvoiceObject'EnumStringInvoice
          else InvoiceObject'EnumOther val
      )

-- | Define the one-of schema invoicePayment_intent\'
--
-- The PaymentIntent associated with this invoice. The PaymentIntent is generated when the invoice is finalized, and can then be used to pay the invoice. Note that voiding an invoice will cancel the PaymentIntent.
data InvoicePaymentIntent'Variants
  = InvoicePaymentIntent'PaymentIntent PaymentIntent
  | InvoicePaymentIntent'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON InvoicePaymentIntent'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON InvoicePaymentIntent'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema invoiceStatus\'
--
-- The status of the invoice, one of \`draft\`, \`open\`, \`paid\`, \`uncollectible\`, or \`void\`. [Learn more](https:\/\/stripe.com\/docs\/billing\/invoices\/workflow\#workflow-overview)
data InvoiceStatus'
  = InvoiceStatus'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceStatus'EnumTyped Data.Text.Internal.Text
  | InvoiceStatus'EnumStringDeleted
  | InvoiceStatus'EnumStringDraft
  | InvoiceStatus'EnumStringOpen
  | InvoiceStatus'EnumStringPaid
  | InvoiceStatus'EnumStringUncollectible
  | InvoiceStatus'EnumStringVoid
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceStatus' where
  toJSON (InvoiceStatus'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceStatus'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceStatus'EnumStringDeleted) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "deleted"
  toJSON (InvoiceStatus'EnumStringDraft) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "draft"
  toJSON (InvoiceStatus'EnumStringOpen) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "open"
  toJSON (InvoiceStatus'EnumStringPaid) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "paid"
  toJSON (InvoiceStatus'EnumStringUncollectible) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "uncollectible"
  toJSON (InvoiceStatus'EnumStringVoid) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "void"

instance Data.Aeson.FromJSON InvoiceStatus' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "deleted")
          then InvoiceStatus'EnumStringDeleted
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "draft")
              then InvoiceStatus'EnumStringDraft
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "open")
                  then InvoiceStatus'EnumStringOpen
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "paid")
                      then InvoiceStatus'EnumStringPaid
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "uncollectible")
                          then InvoiceStatus'EnumStringUncollectible
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "void")
                              then InvoiceStatus'EnumStringVoid
                              else InvoiceStatus'EnumOther val
      )

-- | Define the one-of schema invoiceSubscription\'
--
-- The subscription that this invoice was prepared for, if any.
data InvoiceSubscription'Variants
  = InvoiceSubscription'Subscription Subscription
  | InvoiceSubscription'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON InvoiceSubscription'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON InvoiceSubscription'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema invoice_setting_customer_setting
data InvoiceSettingCustomerSetting
  = InvoiceSettingCustomerSetting
      { -- | custom_fields: Default custom fields to be displayed on invoices for this customer.
        invoiceSettingCustomerSettingCustomFields :: (GHC.Maybe.Maybe ([] InvoiceSettingCustomField)),
        -- | default_payment_method: ID of a payment method that\'s attached to the customer, to be used as the customer\'s default payment method for subscriptions and invoices.
        invoiceSettingCustomerSettingDefaultPaymentMethod :: (GHC.Maybe.Maybe InvoiceSettingCustomerSettingDefaultPaymentMethod'Variants),
        -- | footer: Default footer to be displayed on invoices for this customer.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceSettingCustomerSettingFooter :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON InvoiceSettingCustomerSetting where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "custom_fields" (invoiceSettingCustomerSettingCustomFields obj) : (Data.Aeson..=) "default_payment_method" (invoiceSettingCustomerSettingDefaultPaymentMethod obj) : (Data.Aeson..=) "footer" (invoiceSettingCustomerSettingFooter obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "custom_fields" (invoiceSettingCustomerSettingCustomFields obj) GHC.Base.<> ((Data.Aeson..=) "default_payment_method" (invoiceSettingCustomerSettingDefaultPaymentMethod obj) GHC.Base.<> (Data.Aeson..=) "footer" (invoiceSettingCustomerSettingFooter obj)))

instance Data.Aeson.Types.FromJSON.FromJSON InvoiceSettingCustomerSetting where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "InvoiceSettingCustomerSetting" (\obj -> ((GHC.Base.pure InvoiceSettingCustomerSetting GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "custom_fields")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_payment_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "footer"))

-- | Define the one-of schema invoice_setting_customer_settingDefault_payment_method\'
--
-- ID of a payment method that\'s attached to the customer, to be used as the customer\'s default payment method for subscriptions and invoices.
data InvoiceSettingCustomerSettingDefaultPaymentMethod'Variants
  = InvoiceSettingCustomerSettingDefaultPaymentMethod'PaymentMethod PaymentMethod
  | InvoiceSettingCustomerSettingDefaultPaymentMethod'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON InvoiceSettingCustomerSettingDefaultPaymentMethod'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON InvoiceSettingCustomerSettingDefaultPaymentMethod'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema invoiceitem
--
-- Sometimes you want to add a charge or credit to a customer, but actually
-- charge or credit the customer\'s card only at the end of a regular billing
-- cycle. This is useful for combining several charges (to minimize
-- per-transaction fees), or for having Stripe tabulate your usage-based billing
-- totals.
--
-- Related guide: [Subscription Invoices](https:\/\/stripe.com\/docs\/billing\/invoices\/subscription\#adding-upcoming-invoice-items).
data Invoiceitem
  = Invoiceitem
      { -- | amount: Amount (in the \`currency\` specified) of the invoice item. This should always be equal to \`unit_amount * quantity\`.
        invoiceitemAmount :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        invoiceitemCurrency :: Data.Text.Internal.Text,
        -- | customer: The ID of the customer who will be billed when this invoice item is billed.
        invoiceitemCustomer :: InvoiceitemCustomer'Variants,
        -- | date: Time at which the object was created. Measured in seconds since the Unix epoch.
        invoiceitemDate :: GHC.Integer.Type.Integer,
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceitemDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | discountable: If true, discounts will apply to this invoice item. Always false for prorations.
        invoiceitemDiscountable :: GHC.Types.Bool,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceitemId :: Data.Text.Internal.Text,
        -- | invoice: The ID of the invoice this invoice item belongs to.
        invoiceitemInvoice :: (GHC.Maybe.Maybe InvoiceitemInvoice'Variants),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        invoiceitemLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        invoiceitemMetadata :: InvoiceitemMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        invoiceitemObject :: InvoiceitemObject',
        -- | period:
        invoiceitemPeriod :: InvoiceLineItemPeriod,
        -- | plan: If the invoice item is a proration, the plan of the subscription that the proration was computed for.
        invoiceitemPlan :: (GHC.Maybe.Maybe InvoiceitemPlan'),
        -- | proration: Whether the invoice item was created automatically as a proration adjustment when the customer switched plans.
        invoiceitemProration :: GHC.Types.Bool,
        -- | quantity: Quantity of units for the invoice item. If the invoice item is a proration, the quantity of the subscription that the proration was computed for.
        invoiceitemQuantity :: GHC.Integer.Type.Integer,
        -- | subscription: The subscription that this invoice item has been created for, if any.
        invoiceitemSubscription :: (GHC.Maybe.Maybe InvoiceitemSubscription'Variants),
        -- | subscription_item: The subscription item that this invoice item has been created for, if any.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceitemSubscriptionItem :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | tax_rates: The tax rates which apply to the invoice item. When set, the \`default_tax_rates\` on the invoice do not apply to this invoice item.
        invoiceitemTaxRates :: (GHC.Maybe.Maybe ([] TaxRate)),
        -- | unit_amount: Unit Amount (in the \`currency\` specified) of the invoice item.
        invoiceitemUnitAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | unit_amount_decimal: Same as \`unit_amount\`, but contains a decimal value with at most 12 decimal places.
        invoiceitemUnitAmountDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Invoiceitem where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (invoiceitemAmount obj) : (Data.Aeson..=) "currency" (invoiceitemCurrency obj) : (Data.Aeson..=) "customer" (invoiceitemCustomer obj) : (Data.Aeson..=) "date" (invoiceitemDate obj) : (Data.Aeson..=) "description" (invoiceitemDescription obj) : (Data.Aeson..=) "discountable" (invoiceitemDiscountable obj) : (Data.Aeson..=) "id" (invoiceitemId obj) : (Data.Aeson..=) "invoice" (invoiceitemInvoice obj) : (Data.Aeson..=) "livemode" (invoiceitemLivemode obj) : (Data.Aeson..=) "metadata" (invoiceitemMetadata obj) : (Data.Aeson..=) "object" (invoiceitemObject obj) : (Data.Aeson..=) "period" (invoiceitemPeriod obj) : (Data.Aeson..=) "plan" (invoiceitemPlan obj) : (Data.Aeson..=) "proration" (invoiceitemProration obj) : (Data.Aeson..=) "quantity" (invoiceitemQuantity obj) : (Data.Aeson..=) "subscription" (invoiceitemSubscription obj) : (Data.Aeson..=) "subscription_item" (invoiceitemSubscriptionItem obj) : (Data.Aeson..=) "tax_rates" (invoiceitemTaxRates obj) : (Data.Aeson..=) "unit_amount" (invoiceitemUnitAmount obj) : (Data.Aeson..=) "unit_amount_decimal" (invoiceitemUnitAmountDecimal obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (invoiceitemAmount obj) GHC.Base.<> ((Data.Aeson..=) "currency" (invoiceitemCurrency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (invoiceitemCustomer obj) GHC.Base.<> ((Data.Aeson..=) "date" (invoiceitemDate obj) GHC.Base.<> ((Data.Aeson..=) "description" (invoiceitemDescription obj) GHC.Base.<> ((Data.Aeson..=) "discountable" (invoiceitemDiscountable obj) GHC.Base.<> ((Data.Aeson..=) "id" (invoiceitemId obj) GHC.Base.<> ((Data.Aeson..=) "invoice" (invoiceitemInvoice obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (invoiceitemLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (invoiceitemMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (invoiceitemObject obj) GHC.Base.<> ((Data.Aeson..=) "period" (invoiceitemPeriod obj) GHC.Base.<> ((Data.Aeson..=) "plan" (invoiceitemPlan obj) GHC.Base.<> ((Data.Aeson..=) "proration" (invoiceitemProration obj) GHC.Base.<> ((Data.Aeson..=) "quantity" (invoiceitemQuantity obj) GHC.Base.<> ((Data.Aeson..=) "subscription" (invoiceitemSubscription obj) GHC.Base.<> ((Data.Aeson..=) "subscription_item" (invoiceitemSubscriptionItem obj) GHC.Base.<> ((Data.Aeson..=) "tax_rates" (invoiceitemTaxRates obj) GHC.Base.<> ((Data.Aeson..=) "unit_amount" (invoiceitemUnitAmount obj) GHC.Base.<> (Data.Aeson..=) "unit_amount_decimal" (invoiceitemUnitAmountDecimal obj))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Invoiceitem where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Invoiceitem" (\obj -> (((((((((((((((((((GHC.Base.pure Invoiceitem GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "date")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "discountable")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "invoice")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "period")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "plan")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "proration")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "quantity")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscription")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscription_item")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_rates")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "unit_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "unit_amount_decimal"))

-- | Define the one-of schema invoiceitemCustomer\'
--
-- The ID of the customer who will be billed when this invoice item is billed.
data InvoiceitemCustomer'Variants
  = InvoiceitemCustomer'Customer Customer
  | InvoiceitemCustomer'DeletedCustomer DeletedCustomer
  | InvoiceitemCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON InvoiceitemCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON InvoiceitemCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema invoiceitemInvoice\'
--
-- The ID of the invoice this invoice item belongs to.
data InvoiceitemInvoice'Variants
  = InvoiceitemInvoice'Invoice Invoice
  | InvoiceitemInvoice'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON InvoiceitemInvoice'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON InvoiceitemInvoice'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema invoiceitemMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data InvoiceitemMetadata'
  = InvoiceitemMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON InvoiceitemMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON InvoiceitemMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "InvoiceitemMetadata'" (\obj -> GHC.Base.pure InvoiceitemMetadata')

-- | Defines the enum schema invoiceitemObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data InvoiceitemObject'
  = InvoiceitemObject'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceitemObject'EnumTyped Data.Text.Internal.Text
  | InvoiceitemObject'EnumStringInvoiceitem
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceitemObject' where
  toJSON (InvoiceitemObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemObject'EnumStringInvoiceitem) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invoiceitem"

instance Data.Aeson.FromJSON InvoiceitemObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invoiceitem")
          then InvoiceitemObject'EnumStringInvoiceitem
          else InvoiceitemObject'EnumOther val
      )

-- | Defines the data type for the schema invoiceitemPlan\'
--
-- If the invoice item is a proration, the plan of the subscription that the proration was computed for.
data InvoiceitemPlan'
  = InvoiceitemPlan'
      { -- | active: Whether the plan is currently available for new subscriptions.
        invoiceitemPlan'Active :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | aggregate_usage: Specifies a usage aggregation strategy for plans of \`usage_type=metered\`. Allowed values are \`sum\` for summing up all usage during a period, \`last_during_period\` for using the last usage record reported within a period, \`last_ever\` for using the last usage record ever (across period bounds) or \`max\` which uses the usage record with the maximum reported usage during a period. Defaults to \`sum\`.
        invoiceitemPlan'AggregateUsage :: (GHC.Maybe.Maybe InvoiceitemPlan'AggregateUsage'),
        -- | amount: The amount in %s to be charged on the interval specified.
        invoiceitemPlan'Amount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | amount_decimal: Same as \`amount\`, but contains a decimal value with at most 12 decimal places.
        invoiceitemPlan'AmountDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | billing_scheme: Describes how to compute the price per period. Either \`per_unit\` or \`tiered\`. \`per_unit\` indicates that the fixed amount (specified in \`amount\`) will be charged per unit in \`quantity\` (for plans with \`usage_type=licensed\`), or per unit of total usage (for plans with \`usage_type=metered\`). \`tiered\` indicates that the unit pricing will be computed using a tiering strategy as defined using the \`tiers\` and \`tiers_mode\` attributes.
        invoiceitemPlan'BillingScheme :: (GHC.Maybe.Maybe InvoiceitemPlan'BillingScheme'),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        invoiceitemPlan'Created :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        invoiceitemPlan'Currency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceitemPlan'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | interval: The frequency at which a subscription is billed. One of \`day\`, \`week\`, \`month\` or \`year\`.
        invoiceitemPlan'Interval :: (GHC.Maybe.Maybe InvoiceitemPlan'Interval'),
        -- | interval_count: The number of intervals (specified in the \`interval\` attribute) between subscription billings. For example, \`interval=month\` and \`interval_count=3\` bills every 3 months.
        invoiceitemPlan'IntervalCount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        invoiceitemPlan'Livemode :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        invoiceitemPlan'Metadata :: (GHC.Maybe.Maybe InvoiceitemPlan'Metadata'),
        -- | nickname: A brief description of the plan, hidden from customers.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        invoiceitemPlan'Nickname :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        invoiceitemPlan'Object :: (GHC.Maybe.Maybe InvoiceitemPlan'Object'),
        -- | product: The product whose pricing this plan determines.
        invoiceitemPlan'Product :: (GHC.Maybe.Maybe InvoiceitemPlan'Product'Variants),
        -- | tiers: Each element represents a pricing tier. This parameter requires \`billing_scheme\` to be set to \`tiered\`. See also the documentation for \`billing_scheme\`.
        invoiceitemPlan'Tiers :: (GHC.Maybe.Maybe ([] PlanTier)),
        -- | tiers_mode: Defines if the tiering price should be \`graduated\` or \`volume\` based. In \`volume\`-based tiering, the maximum quantity within a period determines the per unit price. In \`graduated\` tiering, pricing can change as the quantity grows.
        invoiceitemPlan'TiersMode :: (GHC.Maybe.Maybe InvoiceitemPlan'TiersMode'),
        -- | transform_usage: Apply a transformation to the reported usage or set quantity before computing the amount billed. Cannot be combined with \`tiers\`.
        invoiceitemPlan'TransformUsage :: (GHC.Maybe.Maybe InvoiceitemPlan'TransformUsage'),
        -- | trial_period_days: Default number of trial days when subscribing a customer to this plan using [\`trial_from_plan=true\`](https:\/\/stripe.com\/docs\/api\#create_subscription-trial_from_plan).
        invoiceitemPlan'TrialPeriodDays :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | usage_type: Configures how the quantity per period should be determined. Can be either \`metered\` or \`licensed\`. \`licensed\` automatically bills the \`quantity\` set when adding it to a subscription. \`metered\` aggregates the total usage based on usage records. Defaults to \`licensed\`.
        invoiceitemPlan'UsageType :: (GHC.Maybe.Maybe InvoiceitemPlan'UsageType')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON InvoiceitemPlan' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "active" (invoiceitemPlan'Active obj) : (Data.Aeson..=) "aggregate_usage" (invoiceitemPlan'AggregateUsage obj) : (Data.Aeson..=) "amount" (invoiceitemPlan'Amount obj) : (Data.Aeson..=) "amount_decimal" (invoiceitemPlan'AmountDecimal obj) : (Data.Aeson..=) "billing_scheme" (invoiceitemPlan'BillingScheme obj) : (Data.Aeson..=) "created" (invoiceitemPlan'Created obj) : (Data.Aeson..=) "currency" (invoiceitemPlan'Currency obj) : (Data.Aeson..=) "id" (invoiceitemPlan'Id obj) : (Data.Aeson..=) "interval" (invoiceitemPlan'Interval obj) : (Data.Aeson..=) "interval_count" (invoiceitemPlan'IntervalCount obj) : (Data.Aeson..=) "livemode" (invoiceitemPlan'Livemode obj) : (Data.Aeson..=) "metadata" (invoiceitemPlan'Metadata obj) : (Data.Aeson..=) "nickname" (invoiceitemPlan'Nickname obj) : (Data.Aeson..=) "object" (invoiceitemPlan'Object obj) : (Data.Aeson..=) "product" (invoiceitemPlan'Product obj) : (Data.Aeson..=) "tiers" (invoiceitemPlan'Tiers obj) : (Data.Aeson..=) "tiers_mode" (invoiceitemPlan'TiersMode obj) : (Data.Aeson..=) "transform_usage" (invoiceitemPlan'TransformUsage obj) : (Data.Aeson..=) "trial_period_days" (invoiceitemPlan'TrialPeriodDays obj) : (Data.Aeson..=) "usage_type" (invoiceitemPlan'UsageType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "active" (invoiceitemPlan'Active obj) GHC.Base.<> ((Data.Aeson..=) "aggregate_usage" (invoiceitemPlan'AggregateUsage obj) GHC.Base.<> ((Data.Aeson..=) "amount" (invoiceitemPlan'Amount obj) GHC.Base.<> ((Data.Aeson..=) "amount_decimal" (invoiceitemPlan'AmountDecimal obj) GHC.Base.<> ((Data.Aeson..=) "billing_scheme" (invoiceitemPlan'BillingScheme obj) GHC.Base.<> ((Data.Aeson..=) "created" (invoiceitemPlan'Created obj) GHC.Base.<> ((Data.Aeson..=) "currency" (invoiceitemPlan'Currency obj) GHC.Base.<> ((Data.Aeson..=) "id" (invoiceitemPlan'Id obj) GHC.Base.<> ((Data.Aeson..=) "interval" (invoiceitemPlan'Interval obj) GHC.Base.<> ((Data.Aeson..=) "interval_count" (invoiceitemPlan'IntervalCount obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (invoiceitemPlan'Livemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (invoiceitemPlan'Metadata obj) GHC.Base.<> ((Data.Aeson..=) "nickname" (invoiceitemPlan'Nickname obj) GHC.Base.<> ((Data.Aeson..=) "object" (invoiceitemPlan'Object obj) GHC.Base.<> ((Data.Aeson..=) "product" (invoiceitemPlan'Product obj) GHC.Base.<> ((Data.Aeson..=) "tiers" (invoiceitemPlan'Tiers obj) GHC.Base.<> ((Data.Aeson..=) "tiers_mode" (invoiceitemPlan'TiersMode obj) GHC.Base.<> ((Data.Aeson..=) "transform_usage" (invoiceitemPlan'TransformUsage obj) GHC.Base.<> ((Data.Aeson..=) "trial_period_days" (invoiceitemPlan'TrialPeriodDays obj) GHC.Base.<> (Data.Aeson..=) "usage_type" (invoiceitemPlan'UsageType obj))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON InvoiceitemPlan' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "InvoiceitemPlan'" (\obj -> (((((((((((((((((((GHC.Base.pure InvoiceitemPlan' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "active")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "aggregate_usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount_decimal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_scheme")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "interval")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "interval_count")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "nickname")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "product")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tiers")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tiers_mode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transform_usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "trial_period_days")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "usage_type"))

-- | Defines the enum schema invoiceitemPlan\'Aggregate_usage\'
--
-- Specifies a usage aggregation strategy for plans of \`usage_type=metered\`. Allowed values are \`sum\` for summing up all usage during a period, \`last_during_period\` for using the last usage record reported within a period, \`last_ever\` for using the last usage record ever (across period bounds) or \`max\` which uses the usage record with the maximum reported usage during a period. Defaults to \`sum\`.
data InvoiceitemPlan'AggregateUsage'
  = InvoiceitemPlan'AggregateUsage'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceitemPlan'AggregateUsage'EnumTyped Data.Text.Internal.Text
  | InvoiceitemPlan'AggregateUsage'EnumStringLastDuringPeriod
  | InvoiceitemPlan'AggregateUsage'EnumStringLastEver
  | InvoiceitemPlan'AggregateUsage'EnumStringMax
  | InvoiceitemPlan'AggregateUsage'EnumStringSum
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceitemPlan'AggregateUsage' where
  toJSON (InvoiceitemPlan'AggregateUsage'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemPlan'AggregateUsage'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemPlan'AggregateUsage'EnumStringLastDuringPeriod) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_during_period"
  toJSON (InvoiceitemPlan'AggregateUsage'EnumStringLastEver) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_ever"
  toJSON (InvoiceitemPlan'AggregateUsage'EnumStringMax) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "max"
  toJSON (InvoiceitemPlan'AggregateUsage'EnumStringSum) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sum"

instance Data.Aeson.FromJSON InvoiceitemPlan'AggregateUsage' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_during_period")
          then InvoiceitemPlan'AggregateUsage'EnumStringLastDuringPeriod
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_ever")
              then InvoiceitemPlan'AggregateUsage'EnumStringLastEver
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "max")
                  then InvoiceitemPlan'AggregateUsage'EnumStringMax
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sum")
                      then InvoiceitemPlan'AggregateUsage'EnumStringSum
                      else InvoiceitemPlan'AggregateUsage'EnumOther val
      )

-- | Defines the enum schema invoiceitemPlan\'Billing_scheme\'
--
-- Describes how to compute the price per period. Either \`per_unit\` or \`tiered\`. \`per_unit\` indicates that the fixed amount (specified in \`amount\`) will be charged per unit in \`quantity\` (for plans with \`usage_type=licensed\`), or per unit of total usage (for plans with \`usage_type=metered\`). \`tiered\` indicates that the unit pricing will be computed using a tiering strategy as defined using the \`tiers\` and \`tiers_mode\` attributes.
data InvoiceitemPlan'BillingScheme'
  = InvoiceitemPlan'BillingScheme'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceitemPlan'BillingScheme'EnumTyped Data.Text.Internal.Text
  | InvoiceitemPlan'BillingScheme'EnumStringPerUnit
  | InvoiceitemPlan'BillingScheme'EnumStringTiered
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceitemPlan'BillingScheme' where
  toJSON (InvoiceitemPlan'BillingScheme'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemPlan'BillingScheme'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemPlan'BillingScheme'EnumStringPerUnit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "per_unit"
  toJSON (InvoiceitemPlan'BillingScheme'EnumStringTiered) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tiered"

instance Data.Aeson.FromJSON InvoiceitemPlan'BillingScheme' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "per_unit")
          then InvoiceitemPlan'BillingScheme'EnumStringPerUnit
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tiered")
              then InvoiceitemPlan'BillingScheme'EnumStringTiered
              else InvoiceitemPlan'BillingScheme'EnumOther val
      )

-- | Defines the enum schema invoiceitemPlan\'Interval\'
--
-- The frequency at which a subscription is billed. One of \`day\`, \`week\`, \`month\` or \`year\`.
data InvoiceitemPlan'Interval'
  = InvoiceitemPlan'Interval'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceitemPlan'Interval'EnumTyped Data.Text.Internal.Text
  | InvoiceitemPlan'Interval'EnumStringDay
  | InvoiceitemPlan'Interval'EnumStringMonth
  | InvoiceitemPlan'Interval'EnumStringWeek
  | InvoiceitemPlan'Interval'EnumStringYear
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceitemPlan'Interval' where
  toJSON (InvoiceitemPlan'Interval'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemPlan'Interval'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemPlan'Interval'EnumStringDay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "day"
  toJSON (InvoiceitemPlan'Interval'EnumStringMonth) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month"
  toJSON (InvoiceitemPlan'Interval'EnumStringWeek) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "week"
  toJSON (InvoiceitemPlan'Interval'EnumStringYear) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "year"

instance Data.Aeson.FromJSON InvoiceitemPlan'Interval' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "day")
          then InvoiceitemPlan'Interval'EnumStringDay
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month")
              then InvoiceitemPlan'Interval'EnumStringMonth
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "week")
                  then InvoiceitemPlan'Interval'EnumStringWeek
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "year")
                      then InvoiceitemPlan'Interval'EnumStringYear
                      else InvoiceitemPlan'Interval'EnumOther val
      )

-- | Defines the data type for the schema invoiceitemPlan\'Metadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data InvoiceitemPlan'Metadata'
  = InvoiceitemPlan'Metadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON InvoiceitemPlan'Metadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON InvoiceitemPlan'Metadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "InvoiceitemPlan'Metadata'" (\obj -> GHC.Base.pure InvoiceitemPlan'Metadata')

-- | Defines the enum schema invoiceitemPlan\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data InvoiceitemPlan'Object'
  = InvoiceitemPlan'Object'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceitemPlan'Object'EnumTyped Data.Text.Internal.Text
  | InvoiceitemPlan'Object'EnumStringPlan
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceitemPlan'Object' where
  toJSON (InvoiceitemPlan'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemPlan'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemPlan'Object'EnumStringPlan) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plan"

instance Data.Aeson.FromJSON InvoiceitemPlan'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plan")
          then InvoiceitemPlan'Object'EnumStringPlan
          else InvoiceitemPlan'Object'EnumOther val
      )

-- | Define the one-of schema invoiceitemPlan\'Product\'
--
-- The product whose pricing this plan determines.
data InvoiceitemPlan'Product'Variants
  = InvoiceitemPlan'Product'DeletedProduct DeletedProduct
  | InvoiceitemPlan'Product'Product Product
  | InvoiceitemPlan'Product'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON InvoiceitemPlan'Product'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON InvoiceitemPlan'Product'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema invoiceitemPlan\'Tiers_mode\'
--
-- Defines if the tiering price should be \`graduated\` or \`volume\` based. In \`volume\`-based tiering, the maximum quantity within a period determines the per unit price. In \`graduated\` tiering, pricing can change as the quantity grows.
data InvoiceitemPlan'TiersMode'
  = InvoiceitemPlan'TiersMode'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceitemPlan'TiersMode'EnumTyped Data.Text.Internal.Text
  | InvoiceitemPlan'TiersMode'EnumStringGraduated
  | InvoiceitemPlan'TiersMode'EnumStringVolume
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceitemPlan'TiersMode' where
  toJSON (InvoiceitemPlan'TiersMode'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemPlan'TiersMode'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemPlan'TiersMode'EnumStringGraduated) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "graduated"
  toJSON (InvoiceitemPlan'TiersMode'EnumStringVolume) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "volume"

instance Data.Aeson.FromJSON InvoiceitemPlan'TiersMode' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "graduated")
          then InvoiceitemPlan'TiersMode'EnumStringGraduated
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "volume")
              then InvoiceitemPlan'TiersMode'EnumStringVolume
              else InvoiceitemPlan'TiersMode'EnumOther val
      )

-- | Defines the data type for the schema invoiceitemPlan\'Transform_usage\'
--
-- Apply a transformation to the reported usage or set quantity before computing the amount billed. Cannot be combined with \\\`tiers\\\`.
data InvoiceitemPlan'TransformUsage'
  = InvoiceitemPlan'TransformUsage'
      { -- | divide_by: Divide usage by this number.
        invoiceitemPlan'TransformUsage'DivideBy :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | round: After division, either round the result \`up\` or \`down\`.
        invoiceitemPlan'TransformUsage'Round :: (GHC.Maybe.Maybe InvoiceitemPlan'TransformUsage'Round')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON InvoiceitemPlan'TransformUsage' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "divide_by" (invoiceitemPlan'TransformUsage'DivideBy obj) : (Data.Aeson..=) "round" (invoiceitemPlan'TransformUsage'Round obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "divide_by" (invoiceitemPlan'TransformUsage'DivideBy obj) GHC.Base.<> (Data.Aeson..=) "round" (invoiceitemPlan'TransformUsage'Round obj))

instance Data.Aeson.Types.FromJSON.FromJSON InvoiceitemPlan'TransformUsage' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "InvoiceitemPlan'TransformUsage'" (\obj -> (GHC.Base.pure InvoiceitemPlan'TransformUsage' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "divide_by")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "round"))

-- | Defines the enum schema invoiceitemPlan\'Transform_usage\'Round\'
--
-- After division, either round the result \`up\` or \`down\`.
data InvoiceitemPlan'TransformUsage'Round'
  = InvoiceitemPlan'TransformUsage'Round'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceitemPlan'TransformUsage'Round'EnumTyped Data.Text.Internal.Text
  | InvoiceitemPlan'TransformUsage'Round'EnumStringDown
  | InvoiceitemPlan'TransformUsage'Round'EnumStringUp
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceitemPlan'TransformUsage'Round' where
  toJSON (InvoiceitemPlan'TransformUsage'Round'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemPlan'TransformUsage'Round'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemPlan'TransformUsage'Round'EnumStringDown) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "down"
  toJSON (InvoiceitemPlan'TransformUsage'Round'EnumStringUp) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "up"

instance Data.Aeson.FromJSON InvoiceitemPlan'TransformUsage'Round' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "down")
          then InvoiceitemPlan'TransformUsage'Round'EnumStringDown
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "up")
              then InvoiceitemPlan'TransformUsage'Round'EnumStringUp
              else InvoiceitemPlan'TransformUsage'Round'EnumOther val
      )

-- | Defines the enum schema invoiceitemPlan\'Usage_type\'
--
-- Configures how the quantity per period should be determined. Can be either \`metered\` or \`licensed\`. \`licensed\` automatically bills the \`quantity\` set when adding it to a subscription. \`metered\` aggregates the total usage based on usage records. Defaults to \`licensed\`.
data InvoiceitemPlan'UsageType'
  = InvoiceitemPlan'UsageType'EnumOther Data.Aeson.Types.Internal.Value
  | InvoiceitemPlan'UsageType'EnumTyped Data.Text.Internal.Text
  | InvoiceitemPlan'UsageType'EnumStringLicensed
  | InvoiceitemPlan'UsageType'EnumStringMetered
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON InvoiceitemPlan'UsageType' where
  toJSON (InvoiceitemPlan'UsageType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemPlan'UsageType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (InvoiceitemPlan'UsageType'EnumStringLicensed) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "licensed"
  toJSON (InvoiceitemPlan'UsageType'EnumStringMetered) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metered"

instance Data.Aeson.FromJSON InvoiceitemPlan'UsageType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "licensed")
          then InvoiceitemPlan'UsageType'EnumStringLicensed
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metered")
              then InvoiceitemPlan'UsageType'EnumStringMetered
              else InvoiceitemPlan'UsageType'EnumOther val
      )

-- | Define the one-of schema invoiceitemSubscription\'
--
-- The subscription that this invoice item has been created for, if any.
data InvoiceitemSubscription'Variants
  = InvoiceitemSubscription'Subscription Subscription
  | InvoiceitemSubscription'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON InvoiceitemSubscription'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON InvoiceitemSubscription'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuer_fraud_record
--
-- This resource has been renamed to [Early Fraud
-- Warning](\#early_fraud_warning_object) and will be removed in a future API
-- version.
data IssuerFraudRecord
  = IssuerFraudRecord
      { -- | actionable: An IFR is actionable if it has not received a dispute and has not been fully refunded. You may wish to proactively refund a charge that receives an IFR, in order to avoid receiving a dispute later.
        issuerFraudRecordActionable :: GHC.Types.Bool,
        -- | charge: ID of the charge this issuer fraud record is for, optionally expanded.
        issuerFraudRecordCharge :: IssuerFraudRecordCharge'Variants,
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        issuerFraudRecordCreated :: GHC.Integer.Type.Integer,
        -- | fraud_type: The type of fraud labelled by the issuer. One of \`card_never_received\`, \`fraudulent_card_application\`, \`made_with_counterfeit_card\`, \`made_with_lost_card\`, \`made_with_stolen_card\`, \`misc\`, \`unauthorized_use_of_card\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuerFraudRecordFraudType :: Data.Text.Internal.Text,
        -- | has_liability_shift: If true, the associated charge is subject to [liability shift](https:\/\/stripe.com\/docs\/sources\/three-d-secure\#disputed-payments).
        issuerFraudRecordHasLiabilityShift :: GHC.Types.Bool,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuerFraudRecordId :: 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.
        issuerFraudRecordLivemode :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        issuerFraudRecordObject :: IssuerFraudRecordObject',
        -- | post_date: The timestamp at which the card issuer posted the issuer fraud record.
        issuerFraudRecordPostDate :: GHC.Integer.Type.Integer
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuerFraudRecord where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "actionable" (issuerFraudRecordActionable obj) : (Data.Aeson..=) "charge" (issuerFraudRecordCharge obj) : (Data.Aeson..=) "created" (issuerFraudRecordCreated obj) : (Data.Aeson..=) "fraud_type" (issuerFraudRecordFraudType obj) : (Data.Aeson..=) "has_liability_shift" (issuerFraudRecordHasLiabilityShift obj) : (Data.Aeson..=) "id" (issuerFraudRecordId obj) : (Data.Aeson..=) "livemode" (issuerFraudRecordLivemode obj) : (Data.Aeson..=) "object" (issuerFraudRecordObject obj) : (Data.Aeson..=) "post_date" (issuerFraudRecordPostDate obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "actionable" (issuerFraudRecordActionable obj) GHC.Base.<> ((Data.Aeson..=) "charge" (issuerFraudRecordCharge obj) GHC.Base.<> ((Data.Aeson..=) "created" (issuerFraudRecordCreated obj) GHC.Base.<> ((Data.Aeson..=) "fraud_type" (issuerFraudRecordFraudType obj) GHC.Base.<> ((Data.Aeson..=) "has_liability_shift" (issuerFraudRecordHasLiabilityShift obj) GHC.Base.<> ((Data.Aeson..=) "id" (issuerFraudRecordId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (issuerFraudRecordLivemode obj) GHC.Base.<> ((Data.Aeson..=) "object" (issuerFraudRecordObject obj) GHC.Base.<> (Data.Aeson..=) "post_date" (issuerFraudRecordPostDate obj)))))))))

instance Data.Aeson.Types.FromJSON.FromJSON IssuerFraudRecord where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuerFraudRecord" (\obj -> ((((((((GHC.Base.pure IssuerFraudRecord GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "actionable")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "charge")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "fraud_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_liability_shift")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "post_date"))

-- | Define the one-of schema issuer_fraud_recordCharge\'
--
-- ID of the charge this issuer fraud record is for, optionally expanded.
data IssuerFraudRecordCharge'Variants
  = IssuerFraudRecordCharge'Charge Charge
  | IssuerFraudRecordCharge'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuerFraudRecordCharge'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuerFraudRecordCharge'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema issuer_fraud_recordObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data IssuerFraudRecordObject'
  = IssuerFraudRecordObject'EnumOther Data.Aeson.Types.Internal.Value
  | IssuerFraudRecordObject'EnumTyped Data.Text.Internal.Text
  | IssuerFraudRecordObject'EnumStringIssuerFraudRecord
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON IssuerFraudRecordObject' where
  toJSON (IssuerFraudRecordObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (IssuerFraudRecordObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (IssuerFraudRecordObject'EnumStringIssuerFraudRecord) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuer_fraud_record"

instance Data.Aeson.FromJSON IssuerFraudRecordObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuer_fraud_record")
          then IssuerFraudRecordObject'EnumStringIssuerFraudRecord
          else IssuerFraudRecordObject'EnumOther val
      )

-- | Defines the data type for the schema issuing.authorization
--
-- When an [issued card](https:\/\/stripe.com\/docs\/issuing) is used to make a purchase, an Issuing \`Authorization\`
-- object is created. [Authorizations](https:\/\/stripe.com\/docs\/issuing\/authorizations) must be approved for the
-- purchase to be completed successfully.
--
-- Related guide: [Issued Card Authorizations](https:\/\/stripe.com\/docs\/issuing\/authorizations).
data Issuing'authorization
  = Issuing'authorization
      { -- | approved: Whether the authorization has been approved.
        issuing'authorizationApproved :: GHC.Types.Bool,
        -- | authorization_method: How the card details were provided.
        issuing'authorizationAuthorizationMethod :: Issuing'authorizationAuthorizationMethod',
        -- | authorized_amount: The amount that has been authorized. This will be \`0\` when the object is created, and increase after it has been approved.
        issuing'authorizationAuthorizedAmount :: GHC.Integer.Type.Integer,
        -- | authorized_currency: The currency that was presented to the cardholder for the authorization. Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        issuing'authorizationAuthorizedCurrency :: Data.Text.Internal.Text,
        -- | balance_transactions: List of balance transactions associated with this authorization.
        issuing'authorizationBalanceTransactions :: ([] BalanceTransaction),
        -- | card: You can [create physical or virtual cards](https:\/\/stripe.com\/docs\/issuing\/cards) that are issued to cardholders.
        issuing'authorizationCard :: Issuing'card,
        -- | cardholder: The cardholder to whom this authorization belongs.
        issuing'authorizationCardholder :: (GHC.Maybe.Maybe Issuing'authorizationCardholder'Variants),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        issuing'authorizationCreated :: GHC.Integer.Type.Integer,
        -- | held_amount: The amount the authorization is expected to be in \`held_currency\`. When Stripe holds funds from you, this is the amount reserved for the authorization. This will be \`0\` when the object is created, and increase after it has been approved. For multi-currency transactions, \`held_amount\` can be used to determine the expected exchange rate.
        issuing'authorizationHeldAmount :: GHC.Integer.Type.Integer,
        -- | held_currency: The currency of the [held amount](https:\/\/stripe.com\/docs\/api\#issuing_authorization_object-held_amount). This will always be the card currency.
        issuing'authorizationHeldCurrency :: Data.Text.Internal.Text,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'authorizationId :: Data.Text.Internal.Text,
        -- | is_held_amount_controllable: If set \`true\`, you may provide [held_amount](https:\/\/stripe.com\/docs\/api\/issuing\/authorizations\/approve\#approve_issuing_authorization-held_amount) to control how much to hold for the authorization.
        issuing'authorizationIsHeldAmountControllable :: GHC.Types.Bool,
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        issuing'authorizationLivemode :: GHC.Types.Bool,
        -- | merchant_data:
        issuing'authorizationMerchantData :: IssuingAuthorizationMerchantData,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        issuing'authorizationMetadata :: Issuing'authorizationMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        issuing'authorizationObject :: Issuing'authorizationObject',
        -- | pending_authorized_amount: The amount the user is requesting to be authorized. This field will only be non-zero during an \`issuing.authorization.request\` webhook.
        issuing'authorizationPendingAuthorizedAmount :: GHC.Integer.Type.Integer,
        -- | pending_held_amount: The additional amount Stripe will hold if the authorization is approved. This field will only be non-zero during an \`issuing.authorization.request\` webhook.
        issuing'authorizationPendingHeldAmount :: GHC.Integer.Type.Integer,
        -- | request_history: History of every time the authorization was approved\/denied (whether approved\/denied by you directly, or by Stripe based on your authorization_controls). If the merchant changes the authorization by performing an [incremental authorization or partial capture](https:\/\/stripe.com\/docs\/issuing\/authorizations\/special_scenarios\#incremental-authorizations), you can look at request_history to see the previous states of the authorization.
        issuing'authorizationRequestHistory :: ([] IssuingAuthorizationRequest),
        -- | status: The current status of the authorization in its lifecycle.
        issuing'authorizationStatus :: Issuing'authorizationStatus',
        -- | transactions: List of [transactions](https:\/\/stripe.com\/docs\/api\/issuing\/transactions) associated with this authorization.
        issuing'authorizationTransactions :: ([] Issuing'transaction),
        -- | verification_data:
        issuing'authorizationVerificationData :: IssuingAuthorizationVerificationData,
        -- | wallet_provider: What, if any, digital wallet was used for this authorization. One of \`apple_pay\`, \`google_pay\`, or \`samsung_pay\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'authorizationWalletProvider :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'authorization where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "approved" (issuing'authorizationApproved obj) : (Data.Aeson..=) "authorization_method" (issuing'authorizationAuthorizationMethod obj) : (Data.Aeson..=) "authorized_amount" (issuing'authorizationAuthorizedAmount obj) : (Data.Aeson..=) "authorized_currency" (issuing'authorizationAuthorizedCurrency obj) : (Data.Aeson..=) "balance_transactions" (issuing'authorizationBalanceTransactions obj) : (Data.Aeson..=) "card" (issuing'authorizationCard obj) : (Data.Aeson..=) "cardholder" (issuing'authorizationCardholder obj) : (Data.Aeson..=) "created" (issuing'authorizationCreated obj) : (Data.Aeson..=) "held_amount" (issuing'authorizationHeldAmount obj) : (Data.Aeson..=) "held_currency" (issuing'authorizationHeldCurrency obj) : (Data.Aeson..=) "id" (issuing'authorizationId obj) : (Data.Aeson..=) "is_held_amount_controllable" (issuing'authorizationIsHeldAmountControllable obj) : (Data.Aeson..=) "livemode" (issuing'authorizationLivemode obj) : (Data.Aeson..=) "merchant_data" (issuing'authorizationMerchantData obj) : (Data.Aeson..=) "metadata" (issuing'authorizationMetadata obj) : (Data.Aeson..=) "object" (issuing'authorizationObject obj) : (Data.Aeson..=) "pending_authorized_amount" (issuing'authorizationPendingAuthorizedAmount obj) : (Data.Aeson..=) "pending_held_amount" (issuing'authorizationPendingHeldAmount obj) : (Data.Aeson..=) "request_history" (issuing'authorizationRequestHistory obj) : (Data.Aeson..=) "status" (issuing'authorizationStatus obj) : (Data.Aeson..=) "transactions" (issuing'authorizationTransactions obj) : (Data.Aeson..=) "verification_data" (issuing'authorizationVerificationData obj) : (Data.Aeson..=) "wallet_provider" (issuing'authorizationWalletProvider obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "approved" (issuing'authorizationApproved obj) GHC.Base.<> ((Data.Aeson..=) "authorization_method" (issuing'authorizationAuthorizationMethod obj) GHC.Base.<> ((Data.Aeson..=) "authorized_amount" (issuing'authorizationAuthorizedAmount obj) GHC.Base.<> ((Data.Aeson..=) "authorized_currency" (issuing'authorizationAuthorizedCurrency obj) GHC.Base.<> ((Data.Aeson..=) "balance_transactions" (issuing'authorizationBalanceTransactions obj) GHC.Base.<> ((Data.Aeson..=) "card" (issuing'authorizationCard obj) GHC.Base.<> ((Data.Aeson..=) "cardholder" (issuing'authorizationCardholder obj) GHC.Base.<> ((Data.Aeson..=) "created" (issuing'authorizationCreated obj) GHC.Base.<> ((Data.Aeson..=) "held_amount" (issuing'authorizationHeldAmount obj) GHC.Base.<> ((Data.Aeson..=) "held_currency" (issuing'authorizationHeldCurrency obj) GHC.Base.<> ((Data.Aeson..=) "id" (issuing'authorizationId obj) GHC.Base.<> ((Data.Aeson..=) "is_held_amount_controllable" (issuing'authorizationIsHeldAmountControllable obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (issuing'authorizationLivemode obj) GHC.Base.<> ((Data.Aeson..=) "merchant_data" (issuing'authorizationMerchantData obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (issuing'authorizationMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (issuing'authorizationObject obj) GHC.Base.<> ((Data.Aeson..=) "pending_authorized_amount" (issuing'authorizationPendingAuthorizedAmount obj) GHC.Base.<> ((Data.Aeson..=) "pending_held_amount" (issuing'authorizationPendingHeldAmount obj) GHC.Base.<> ((Data.Aeson..=) "request_history" (issuing'authorizationRequestHistory obj) GHC.Base.<> ((Data.Aeson..=) "status" (issuing'authorizationStatus obj) GHC.Base.<> ((Data.Aeson..=) "transactions" (issuing'authorizationTransactions obj) GHC.Base.<> ((Data.Aeson..=) "verification_data" (issuing'authorizationVerificationData obj) GHC.Base.<> (Data.Aeson..=) "wallet_provider" (issuing'authorizationWalletProvider obj)))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorization where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'authorization" (\obj -> ((((((((((((((((((((((GHC.Base.pure Issuing'authorization GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "approved")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "authorization_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "authorized_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "authorized_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "balance_transactions")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cardholder")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "held_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "held_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "is_held_amount_controllable")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "merchant_data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "pending_authorized_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "pending_held_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "request_history")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "transactions")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "verification_data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "wallet_provider"))

-- | Defines the enum schema issuing.authorizationAuthorization_method\'
--
-- How the card details were provided.
data Issuing'authorizationAuthorizationMethod'
  = Issuing'authorizationAuthorizationMethod'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'authorizationAuthorizationMethod'EnumTyped Data.Text.Internal.Text
  | Issuing'authorizationAuthorizationMethod'EnumStringChip
  | Issuing'authorizationAuthorizationMethod'EnumStringContactless
  | Issuing'authorizationAuthorizationMethod'EnumStringKeyedIn
  | Issuing'authorizationAuthorizationMethod'EnumStringOnline
  | Issuing'authorizationAuthorizationMethod'EnumStringSwipe
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'authorizationAuthorizationMethod' where
  toJSON (Issuing'authorizationAuthorizationMethod'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'authorizationAuthorizationMethod'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'authorizationAuthorizationMethod'EnumStringChip) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chip"
  toJSON (Issuing'authorizationAuthorizationMethod'EnumStringContactless) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "contactless"
  toJSON (Issuing'authorizationAuthorizationMethod'EnumStringKeyedIn) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "keyed_in"
  toJSON (Issuing'authorizationAuthorizationMethod'EnumStringOnline) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "online"
  toJSON (Issuing'authorizationAuthorizationMethod'EnumStringSwipe) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "swipe"

instance Data.Aeson.FromJSON Issuing'authorizationAuthorizationMethod' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chip")
          then Issuing'authorizationAuthorizationMethod'EnumStringChip
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "contactless")
              then Issuing'authorizationAuthorizationMethod'EnumStringContactless
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "keyed_in")
                  then Issuing'authorizationAuthorizationMethod'EnumStringKeyedIn
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "online")
                      then Issuing'authorizationAuthorizationMethod'EnumStringOnline
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "swipe")
                          then Issuing'authorizationAuthorizationMethod'EnumStringSwipe
                          else Issuing'authorizationAuthorizationMethod'EnumOther val
      )

-- | Define the one-of schema issuing.authorizationCardholder\'
--
-- The cardholder to whom this authorization belongs.
data Issuing'authorizationCardholder'Variants
  = Issuing'authorizationCardholder'Issuing'cardholder Issuing'cardholder
  | Issuing'authorizationCardholder'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Issuing'authorizationCardholder'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Issuing'authorizationCardholder'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing.authorizationMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data Issuing'authorizationMetadata'
  = Issuing'authorizationMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'authorizationMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'authorizationMetadata'" (\obj -> GHC.Base.pure Issuing'authorizationMetadata')

-- | Defines the enum schema issuing.authorizationObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data Issuing'authorizationObject'
  = Issuing'authorizationObject'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'authorizationObject'EnumTyped Data.Text.Internal.Text
  | Issuing'authorizationObject'EnumStringIssuing'authorization
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'authorizationObject' where
  toJSON (Issuing'authorizationObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'authorizationObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'authorizationObject'EnumStringIssuing'authorization) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.authorization"

instance Data.Aeson.FromJSON Issuing'authorizationObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.authorization")
          then Issuing'authorizationObject'EnumStringIssuing'authorization
          else Issuing'authorizationObject'EnumOther val
      )

-- | Defines the enum schema issuing.authorizationStatus\'
--
-- The current status of the authorization in its lifecycle.
data Issuing'authorizationStatus'
  = Issuing'authorizationStatus'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'authorizationStatus'EnumTyped Data.Text.Internal.Text
  | Issuing'authorizationStatus'EnumStringClosed
  | Issuing'authorizationStatus'EnumStringPending
  | Issuing'authorizationStatus'EnumStringReversed
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'authorizationStatus' where
  toJSON (Issuing'authorizationStatus'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'authorizationStatus'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'authorizationStatus'EnumStringClosed) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "closed"
  toJSON (Issuing'authorizationStatus'EnumStringPending) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pending"
  toJSON (Issuing'authorizationStatus'EnumStringReversed) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "reversed"

instance Data.Aeson.FromJSON Issuing'authorizationStatus' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "closed")
          then Issuing'authorizationStatus'EnumStringClosed
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pending")
              then Issuing'authorizationStatus'EnumStringPending
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "reversed")
                  then Issuing'authorizationStatus'EnumStringReversed
                  else Issuing'authorizationStatus'EnumOther val
      )

-- | Defines the data type for the schema issuing.card
--
-- You can [create physical or virtual cards](https:\/\/stripe.com\/docs\/issuing\/cards) that are issued to cardholders.
data Issuing'card
  = Issuing'card
      { -- | authorization_controls:
        issuing'cardAuthorizationControls :: IssuingCardAuthorizationControls,
        -- | brand: The brand of the card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardBrand :: Data.Text.Internal.Text,
        -- | cardholder: The [Cardholder](https:\/\/stripe.com\/docs\/api\#issuing_cardholder_object) object to which the card belongs.
        issuing'cardCardholder :: (GHC.Maybe.Maybe Issuing'cardCardholder'),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        issuing'cardCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        issuing'cardCurrency :: Data.Text.Internal.Text,
        -- | exp_month: The expiration month of the card.
        issuing'cardExpMonth :: GHC.Integer.Type.Integer,
        -- | exp_year: The expiration year of the card.
        issuing'cardExpYear :: GHC.Integer.Type.Integer,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardId :: Data.Text.Internal.Text,
        -- | last4: The last 4 digits of the card number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardLast4 :: 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.
        issuing'cardLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        issuing'cardMetadata :: Issuing'cardMetadata',
        -- | name: The name of the cardholder, printed on the card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardName :: Data.Text.Internal.Text,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        issuing'cardObject :: Issuing'cardObject',
        -- | pin: Metadata about the PIN on the card.
        issuing'cardPin :: (GHC.Maybe.Maybe Issuing'cardPin'),
        -- | replacement_for: The card this card replaces, if any.
        issuing'cardReplacementFor :: (GHC.Maybe.Maybe Issuing'cardReplacementFor'Variants),
        -- | replacement_reason: The reason why the previous card needed to be replaced.
        issuing'cardReplacementReason :: (GHC.Maybe.Maybe Issuing'cardReplacementReason'),
        -- | shipping: Where and how the card will be shipped.
        issuing'cardShipping :: (GHC.Maybe.Maybe Issuing'cardShipping'),
        -- | status: Whether authorizations can be approved on this card.
        issuing'cardStatus :: Issuing'cardStatus',
        -- | type: The type of the card.
        issuing'cardType :: Issuing'cardType'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'card where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "authorization_controls" (issuing'cardAuthorizationControls obj) : (Data.Aeson..=) "brand" (issuing'cardBrand obj) : (Data.Aeson..=) "cardholder" (issuing'cardCardholder obj) : (Data.Aeson..=) "created" (issuing'cardCreated obj) : (Data.Aeson..=) "currency" (issuing'cardCurrency obj) : (Data.Aeson..=) "exp_month" (issuing'cardExpMonth obj) : (Data.Aeson..=) "exp_year" (issuing'cardExpYear obj) : (Data.Aeson..=) "id" (issuing'cardId obj) : (Data.Aeson..=) "last4" (issuing'cardLast4 obj) : (Data.Aeson..=) "livemode" (issuing'cardLivemode obj) : (Data.Aeson..=) "metadata" (issuing'cardMetadata obj) : (Data.Aeson..=) "name" (issuing'cardName obj) : (Data.Aeson..=) "object" (issuing'cardObject obj) : (Data.Aeson..=) "pin" (issuing'cardPin obj) : (Data.Aeson..=) "replacement_for" (issuing'cardReplacementFor obj) : (Data.Aeson..=) "replacement_reason" (issuing'cardReplacementReason obj) : (Data.Aeson..=) "shipping" (issuing'cardShipping obj) : (Data.Aeson..=) "status" (issuing'cardStatus obj) : (Data.Aeson..=) "type" (issuing'cardType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "authorization_controls" (issuing'cardAuthorizationControls obj) GHC.Base.<> ((Data.Aeson..=) "brand" (issuing'cardBrand obj) GHC.Base.<> ((Data.Aeson..=) "cardholder" (issuing'cardCardholder obj) GHC.Base.<> ((Data.Aeson..=) "created" (issuing'cardCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (issuing'cardCurrency obj) GHC.Base.<> ((Data.Aeson..=) "exp_month" (issuing'cardExpMonth obj) GHC.Base.<> ((Data.Aeson..=) "exp_year" (issuing'cardExpYear obj) GHC.Base.<> ((Data.Aeson..=) "id" (issuing'cardId obj) GHC.Base.<> ((Data.Aeson..=) "last4" (issuing'cardLast4 obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (issuing'cardLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (issuing'cardMetadata obj) GHC.Base.<> ((Data.Aeson..=) "name" (issuing'cardName obj) GHC.Base.<> ((Data.Aeson..=) "object" (issuing'cardObject obj) GHC.Base.<> ((Data.Aeson..=) "pin" (issuing'cardPin obj) GHC.Base.<> ((Data.Aeson..=) "replacement_for" (issuing'cardReplacementFor obj) GHC.Base.<> ((Data.Aeson..=) "replacement_reason" (issuing'cardReplacementReason obj) GHC.Base.<> ((Data.Aeson..=) "shipping" (issuing'cardShipping obj) GHC.Base.<> ((Data.Aeson..=) "status" (issuing'cardStatus obj) GHC.Base.<> (Data.Aeson..=) "type" (issuing'cardType obj)))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'card where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'card" (\obj -> ((((((((((((((((((GHC.Base.pure Issuing'card GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "authorization_controls")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "brand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cardholder")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "pin")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "replacement_for")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "replacement_reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type"))

-- | Defines the data type for the schema issuing.cardCardholder\'
--
-- The [Cardholder](https:\\\/\\\/stripe.com\\\/docs\\\/api\\\#issuing_cardholder_object) object to which the card belongs.
data Issuing'cardCardholder'
  = Issuing'cardCardholder'
      { -- | authorization_controls: Spending rules that give you some control over how this cardholder\'s cards can be used. Refer to our [authorizations](https:\/\/stripe.com\/docs\/issuing\/authorizations) documentation for more details.
        issuing'cardCardholder'AuthorizationControls :: (GHC.Maybe.Maybe Issuing'cardCardholder'AuthorizationControls'),
        -- | billing:
        issuing'cardCardholder'Billing :: (GHC.Maybe.Maybe IssuingCardholderAddress),
        -- | company: Additional information about a \`business_entity\` cardholder.
        issuing'cardCardholder'Company :: (GHC.Maybe.Maybe Issuing'cardCardholder'Company'),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        issuing'cardCardholder'Created :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | email: The cardholder\'s email address.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardCardholder'Email :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardCardholder'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | individual: Additional information about an \`individual\` cardholder.
        issuing'cardCardholder'Individual :: (GHC.Maybe.Maybe Issuing'cardCardholder'Individual'),
        -- | is_default: Whether or not this cardholder is the default cardholder.
        issuing'cardCardholder'IsDefault :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        issuing'cardCardholder'Livemode :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        issuing'cardCardholder'Metadata :: (GHC.Maybe.Maybe Issuing'cardCardholder'Metadata'),
        -- | name: The cardholder\'s name. This will be printed on cards issued to them.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardCardholder'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        issuing'cardCardholder'Object :: (GHC.Maybe.Maybe Issuing'cardCardholder'Object'),
        -- | phone_number: The cardholder\'s phone number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardCardholder'PhoneNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | requirements:
        issuing'cardCardholder'Requirements :: (GHC.Maybe.Maybe IssuingCardholderRequirements),
        -- | status: Specifies whether to permit authorizations on this cardholder\'s cards.
        issuing'cardCardholder'Status :: (GHC.Maybe.Maybe Issuing'cardCardholder'Status'),
        -- | type: One of \`individual\` or \`business_entity\`.
        issuing'cardCardholder'Type :: (GHC.Maybe.Maybe Issuing'cardCardholder'Type')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardCardholder' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "authorization_controls" (issuing'cardCardholder'AuthorizationControls obj) : (Data.Aeson..=) "billing" (issuing'cardCardholder'Billing obj) : (Data.Aeson..=) "company" (issuing'cardCardholder'Company obj) : (Data.Aeson..=) "created" (issuing'cardCardholder'Created obj) : (Data.Aeson..=) "email" (issuing'cardCardholder'Email obj) : (Data.Aeson..=) "id" (issuing'cardCardholder'Id obj) : (Data.Aeson..=) "individual" (issuing'cardCardholder'Individual obj) : (Data.Aeson..=) "is_default" (issuing'cardCardholder'IsDefault obj) : (Data.Aeson..=) "livemode" (issuing'cardCardholder'Livemode obj) : (Data.Aeson..=) "metadata" (issuing'cardCardholder'Metadata obj) : (Data.Aeson..=) "name" (issuing'cardCardholder'Name obj) : (Data.Aeson..=) "object" (issuing'cardCardholder'Object obj) : (Data.Aeson..=) "phone_number" (issuing'cardCardholder'PhoneNumber obj) : (Data.Aeson..=) "requirements" (issuing'cardCardholder'Requirements obj) : (Data.Aeson..=) "status" (issuing'cardCardholder'Status obj) : (Data.Aeson..=) "type" (issuing'cardCardholder'Type obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "authorization_controls" (issuing'cardCardholder'AuthorizationControls obj) GHC.Base.<> ((Data.Aeson..=) "billing" (issuing'cardCardholder'Billing obj) GHC.Base.<> ((Data.Aeson..=) "company" (issuing'cardCardholder'Company obj) GHC.Base.<> ((Data.Aeson..=) "created" (issuing'cardCardholder'Created obj) GHC.Base.<> ((Data.Aeson..=) "email" (issuing'cardCardholder'Email obj) GHC.Base.<> ((Data.Aeson..=) "id" (issuing'cardCardholder'Id obj) GHC.Base.<> ((Data.Aeson..=) "individual" (issuing'cardCardholder'Individual obj) GHC.Base.<> ((Data.Aeson..=) "is_default" (issuing'cardCardholder'IsDefault obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (issuing'cardCardholder'Livemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (issuing'cardCardholder'Metadata obj) GHC.Base.<> ((Data.Aeson..=) "name" (issuing'cardCardholder'Name obj) GHC.Base.<> ((Data.Aeson..=) "object" (issuing'cardCardholder'Object obj) GHC.Base.<> ((Data.Aeson..=) "phone_number" (issuing'cardCardholder'PhoneNumber obj) GHC.Base.<> ((Data.Aeson..=) "requirements" (issuing'cardCardholder'Requirements obj) GHC.Base.<> ((Data.Aeson..=) "status" (issuing'cardCardholder'Status obj) GHC.Base.<> (Data.Aeson..=) "type" (issuing'cardCardholder'Type obj))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardCardholder' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardCardholder'" (\obj -> (((((((((((((((GHC.Base.pure Issuing'cardCardholder' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "authorization_controls")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "company")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "individual")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "is_default")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "requirements")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type"))

-- | Defines the data type for the schema issuing.cardCardholder\'Authorization_controls\'
--
-- Spending rules that give you some control over how this cardholder\\\'s cards can be used. Refer to our [authorizations](https:\\\/\\\/stripe.com\\\/docs\\\/issuing\\\/authorizations) documentation for more details.
data Issuing'cardCardholder'AuthorizationControls'
  = Issuing'cardCardholder'AuthorizationControls'
      { -- | allowed_categories: Array of strings containing [categories](https:\/\/stripe.com\/docs\/api\#issuing_authorization_object-merchant_data-category) of authorizations permitted on this cardholder\'s cards.
        issuing'cardCardholder'AuthorizationControls'AllowedCategories :: (GHC.Maybe.Maybe ([] Issuing'cardCardholder'AuthorizationControls'AllowedCategories')),
        -- | blocked_categories: Array of strings containing [categories](https:\/\/stripe.com\/docs\/api\#issuing_authorization_object-merchant_data-category) of authorizations to always decline on this cardholder\'s cards.
        issuing'cardCardholder'AuthorizationControls'BlockedCategories :: (GHC.Maybe.Maybe ([] Issuing'cardCardholder'AuthorizationControls'BlockedCategories')),
        -- | spending_limits: Limit the spending with rules based on time intervals and categories.
        issuing'cardCardholder'AuthorizationControls'SpendingLimits :: (GHC.Maybe.Maybe ([] IssuingCardholderSpendingLimit)),
        -- | spending_limits_currency: Currency for the amounts within spending_limits.
        issuing'cardCardholder'AuthorizationControls'SpendingLimitsCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardCardholder'AuthorizationControls' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "allowed_categories" (issuing'cardCardholder'AuthorizationControls'AllowedCategories obj) : (Data.Aeson..=) "blocked_categories" (issuing'cardCardholder'AuthorizationControls'BlockedCategories obj) : (Data.Aeson..=) "spending_limits" (issuing'cardCardholder'AuthorizationControls'SpendingLimits obj) : (Data.Aeson..=) "spending_limits_currency" (issuing'cardCardholder'AuthorizationControls'SpendingLimitsCurrency obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "allowed_categories" (issuing'cardCardholder'AuthorizationControls'AllowedCategories obj) GHC.Base.<> ((Data.Aeson..=) "blocked_categories" (issuing'cardCardholder'AuthorizationControls'BlockedCategories obj) GHC.Base.<> ((Data.Aeson..=) "spending_limits" (issuing'cardCardholder'AuthorizationControls'SpendingLimits obj) GHC.Base.<> (Data.Aeson..=) "spending_limits_currency" (issuing'cardCardholder'AuthorizationControls'SpendingLimitsCurrency obj))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardCardholder'AuthorizationControls' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardCardholder'AuthorizationControls'" (\obj -> (((GHC.Base.pure Issuing'cardCardholder'AuthorizationControls' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "allowed_categories")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "blocked_categories")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "spending_limits")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "spending_limits_currency"))

-- | Defines the enum schema issuing.cardCardholder\'Authorization_controls\'Allowed_categories\'
data Issuing'cardCardholder'AuthorizationControls'AllowedCategories'
  = Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumTyped Data.Text.Internal.Text
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAcRefrigerationRepair
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAccountingBookkeepingServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAdvertisingServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAgriculturalCooperative
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAirlinesAirCarriers
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAirportsFlyingFields
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAmbulanceServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAmusementParksCarnivals
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAntiqueReproductions
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAntiqueShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAquariums
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringArchitecturalSurveyingServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringArtDealersAndGalleries
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringArtistsSupplyAndCraftShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutoAndHomeSupplyStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutoBodyRepairShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutoPaintShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutoServiceShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomatedCashDisburse
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomatedFuelDispensers
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomobileAssociations
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomotivePartsAndAccessoriesStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomotiveTireStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBailAndBondPayments
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBakeries
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBandsOrchestras
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBarberAndBeautyShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBettingCasinoGambling
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBicycleShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBilliardPoolEstablishments
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBoatDealers
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBoatRentalsAndLeases
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBookStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBooksPeriodicalsAndNewspapers
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBowlingAlleys
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBusLines
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBusinessSecretarialSchools
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBuyingShoppingServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCableSatelliteAndOtherPayTelevisionAndRadio
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCameraAndPhotographicSupplyStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCandyNutAndConfectioneryStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarAndTruckDealersNewUsed
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarAndTruckDealersUsedOnly
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarRentalAgencies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarWashes
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarpentryServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarpetUpholsteryCleaning
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCaterers
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCharitableAndSocialServiceOrganizationsFundraising
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChemicalsAndAlliedProducts
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChildCareServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChildrensAndInfantsWearStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChiropodistsPodiatrists
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChiropractors
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCigarStoresAndStands
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCivicSocialFraternalAssociations
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCleaningAndMaintenance
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringClothingRental
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCollegesUniversities
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCommercialEquipment
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCommercialFootwear
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCommercialPhotographyArtAndGraphics
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCommuterTransportAndFerries
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputerNetworkServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputerProgramming
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputerRepair
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputerSoftwareStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputersPeripheralsAndSoftware
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringConcreteWorkServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringConstructionMaterials
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringConsultingPublicRelations
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCorrespondenceSchools
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCosmeticStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCounselingServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCountryClubs
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCourierServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCourtCosts
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCreditReportingAgencies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCruiseLines
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDairyProductsStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDanceHallStudiosSchools
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDatingEscortServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDentistsOrthodontists
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDepartmentStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDetectiveAgencies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDigitalGoodsApplications
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDigitalGoodsGames
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDigitalGoodsLargeVolume
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDigitalGoodsMedia
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingCatalogMerchant
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingCombinationCatalogAndRetailMerchant
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingInboundTelemarketing
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingInsuranceServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingOther
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingOutboundTelemarketing
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingSubscription
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingTravel
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDiscountStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDoctors
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDoorToDoorSales
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDraperyWindowCoveringAndUpholsteryStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDrinkingPlaces
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDrugStoresAndPharmacies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDrugsDrugProprietariesAndDruggistSundries
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDryCleaners
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDurableGoods
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDutyFreeStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringEatingPlacesRestaurants
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringEducationalServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectricRazorStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectricalPartsAndEquipment
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectricalServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectronicsRepairShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectronicsStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElementarySecondarySchools
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringEmploymentTempAgencies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringEquipmentRental
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringExterminatingServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFamilyClothingStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFastFoodRestaurants
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFinancialInstitutions
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFinesGovernmentAdministrativeEntities
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFireplaceFireplaceScreensAndAccessoriesStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFloorCoveringStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFlorists
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFloristsSuppliesNurseryStockAndFlowers
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFreezerAndLockerMeatProvisioners
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFuelDealersNonAutomotive
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFuneralServicesCrematories
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFurnitureRepairRefinishing
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFurriersAndFurShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGeneralServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGiftCardNoveltyAndSouvenirShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGlassPaintAndWallpaperStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGlasswareCrystalStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGolfCoursesPublic
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGovernmentServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGroceryStoresSupermarkets
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHardwareEquipmentAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHardwareStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHealthAndBeautySpas
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHearingAidsSalesAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHeatingPlumbingAC
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHobbyToyAndGameShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHomeSupplyWarehouseStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHospitals
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHotelsMotelsAndResorts
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHouseholdApplianceStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringIndustrialSupplies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringInformationRetrievalServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringInsuranceDefault
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringInsuranceUnderwritingPremiums
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringIntraCompanyPurchases
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringJewelryStoresWatchesClocksAndSilverwareStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLandscapingServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLaundries
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLaundryCleaningServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLegalServicesAttorneys
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLuggageAndLeatherGoodsStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLumberBuildingMaterialsStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringManualCashDisburse
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMarinasServiceAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMasonryStoneworkAndPlaster
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMassageParlors
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMedicalAndDentalLabs
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMedicalDentalOphthalmicAndHospitalEquipmentAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMedicalServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMembershipOrganizations
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMensAndBoysClothingAndAccessoriesStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMensWomensClothingStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMetalServiceCenters
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneous
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousApparelAndAccessoryShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousAutoDealers
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousBusinessServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousFoodStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousGeneralMerchandise
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousGeneralServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousHomeFurnishingSpecialtyStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousPublishingAndPrinting
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousRecreationServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousRepairShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousSpecialtyRetail
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMobileHomeDealers
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotionPictureTheaters
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorFreightCarriersAndTrucking
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorHomesDealers
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorVehicleSuppliesAndNewParts
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorcycleShopsAndDealers
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorcycleShopsDealers
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMusicStoresMusicalInstrumentsPianosAndSheetMusic
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNewsDealersAndNewsstands
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNonFiMoneyOrders
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNonFiStoredValueCardPurchaseLoad
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNondurableGoods
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNurseriesLawnAndGardenSupplyStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNursingPersonalCare
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOfficeAndCommercialFurniture
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOpticiansEyeglasses
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOptometristsOphthalmologist
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOrthopedicGoodsProstheticDevices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOsteopaths
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPackageStoresBeerWineAndLiquor
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPaintsVarnishesAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringParkingLotsGarages
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPassengerRailways
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPawnShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPetShopsPetFoodAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPetroleumAndPetroleumProducts
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPhotoDeveloping
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPhotographicPhotocopyMicrofilmEquipmentAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPhotographicStudios
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPictureVideoProduction
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPieceGoodsNotionsAndOtherDryGoods
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPlumbingHeatingEquipmentAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPoliticalOrganizations
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPostalServicesGovernmentOnly
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPreciousStonesAndMetalsWatchesAndJewelry
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringProfessionalServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPublicWarehousingAndStorage
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringQuickCopyReproAndBlueprint
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRailroads
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRealEstateAgentsAndManagersRentals
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRecordStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRecreationalVehicleRentals
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringReligiousGoodsStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringReligiousOrganizations
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRoofingSidingSheetMetal
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSecretarialSupportServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSecurityBrokersDealers
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringServiceStations
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSewingNeedleworkFabricAndPieceGoodsStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringShoeRepairHatCleaning
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringShoeStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSmallApplianceRepair
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSnowmobileDealers
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSpecialTradeServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSpecialtyCleaning
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSportingGoodsStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSportingRecreationCamps
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSportsAndRidingApparelStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSportsClubsFields
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringStampAndCoinStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringStationaryOfficeSuppliesPrintingAndWritingPaper
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringStationeryStoresOfficeAndSchoolSupplyStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSwimmingPoolsSales
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTUiTravelGermany
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTailorsAlterations
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTaxPaymentsGovernmentAgencies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTaxPreparationServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTaxicabsLimousines
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTelecommunicationEquipmentAndTelephoneSales
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTelecommunicationServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTelegraphServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTentAndAwningShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTestingLaboratories
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTheatricalTicketAgencies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTimeshares
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTireRetreadingAndRepair
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTollsBridgeFees
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTouristAttractionsAndExhibits
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTowingServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTrailerParksCampgrounds
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTransportationServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTravelAgenciesTourOperators
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTruckStopIteration
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTruckUtilityTrailerRentals
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTypesettingPlateMakingAndRelatedServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTypewriterStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringUSFederalGovernmentAgenciesOrDepartments
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringUniformsCommercialClothing
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringUsedMerchandiseAndSecondhandStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringUtilities
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVarietyStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVeterinaryServices
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVideoAmusementGameSupplies
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVideoGameArcades
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVideoTapeRentalStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVocationalTradeSchools
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWatchJewelryRepair
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWeldingRepair
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWholesaleClubs
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWigAndToupeeStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWiresMoneyOrders
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWomensAccessoryAndSpecialtyShops
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWomensReadyToWearStores
  | Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWreckingAndSalvageYards
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardCardholder'AuthorizationControls'AllowedCategories' where
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAcRefrigerationRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ac_refrigeration_repair"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAccountingBookkeepingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "accounting_bookkeeping_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAdvertisingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "advertising_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAgriculturalCooperative) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "agricultural_cooperative"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAirlinesAirCarriers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airlines_air_carriers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAirportsFlyingFields) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airports_flying_fields"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAmbulanceServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ambulance_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAmusementParksCarnivals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amusement_parks_carnivals"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAntiqueReproductions) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_reproductions"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAntiqueShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAquariums) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "aquariums"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringArchitecturalSurveyingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "architectural_surveying_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringArtDealersAndGalleries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "art_dealers_and_galleries"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringArtistsSupplyAndCraftShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "artists_supply_and_craft_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutoAndHomeSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_and_home_supply_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutoBodyRepairShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_body_repair_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutoPaintShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_paint_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutoServiceShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_service_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomatedCashDisburse) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_cash_disburse"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomatedFuelDispensers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_fuel_dispensers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomobileAssociations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automobile_associations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomotivePartsAndAccessoriesStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_parts_and_accessories_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomotiveTireStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_tire_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBailAndBondPayments) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bail_and_bond_payments"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBakeries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bakeries"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBandsOrchestras) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bands_orchestras"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBarberAndBeautyShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "barber_and_beauty_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBettingCasinoGambling) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "betting_casino_gambling"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBicycleShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bicycle_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBilliardPoolEstablishments) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "billiard_pool_establishments"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBoatDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBoatRentalsAndLeases) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_rentals_and_leases"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBookStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "book_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBooksPeriodicalsAndNewspapers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "books_periodicals_and_newspapers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBowlingAlleys) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bowling_alleys"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBusLines) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bus_lines"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBusinessSecretarialSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "business_secretarial_schools"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBuyingShoppingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "buying_shopping_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCableSatelliteAndOtherPayTelevisionAndRadio) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cable_satellite_and_other_pay_television_and_radio"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCameraAndPhotographicSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "camera_and_photographic_supply_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCandyNutAndConfectioneryStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "candy_nut_and_confectionery_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarAndTruckDealersNewUsed) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_new_used"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarAndTruckDealersUsedOnly) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_used_only"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarRentalAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_rental_agencies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarWashes) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_washes"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarpentryServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpentry_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarpetUpholsteryCleaning) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpet_upholstery_cleaning"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCaterers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "caterers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCharitableAndSocialServiceOrganizationsFundraising) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charitable_and_social_service_organizations_fundraising"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChemicalsAndAlliedProducts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chemicals_and_allied_products"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChildCareServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "child_care_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChildrensAndInfantsWearStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "childrens_and_infants_wear_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChiropodistsPodiatrists) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropodists_podiatrists"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChiropractors) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropractors"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCigarStoresAndStands) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cigar_stores_and_stands"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCivicSocialFraternalAssociations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "civic_social_fraternal_associations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCleaningAndMaintenance) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cleaning_and_maintenance"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringClothingRental) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "clothing_rental"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCollegesUniversities) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "colleges_universities"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCommercialEquipment) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_equipment"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCommercialFootwear) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_footwear"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCommercialPhotographyArtAndGraphics) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_photography_art_and_graphics"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCommuterTransportAndFerries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commuter_transport_and_ferries"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputerNetworkServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_network_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputerProgramming) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_programming"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputerRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_repair"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputerSoftwareStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_software_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputersPeripheralsAndSoftware) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computers_peripherals_and_software"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringConcreteWorkServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "concrete_work_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringConstructionMaterials) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "construction_materials"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringConsultingPublicRelations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "consulting_public_relations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCorrespondenceSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "correspondence_schools"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCosmeticStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cosmetic_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCounselingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "counseling_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCountryClubs) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "country_clubs"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCourierServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "courier_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCourtCosts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "court_costs"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCreditReportingAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "credit_reporting_agencies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCruiseLines) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cruise_lines"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDairyProductsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dairy_products_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDanceHallStudiosSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dance_hall_studios_schools"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDatingEscortServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dating_escort_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDentistsOrthodontists) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dentists_orthodontists"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDepartmentStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "department_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDetectiveAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "detective_agencies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDigitalGoodsApplications) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_applications"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDigitalGoodsGames) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_games"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDigitalGoodsLargeVolume) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_large_volume"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDigitalGoodsMedia) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_media"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingCatalogMerchant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_catalog_merchant"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingCombinationCatalogAndRetailMerchant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_combination_catalog_and_retail_merchant"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingInboundTelemarketing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_inbound_telemarketing"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingInsuranceServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_insurance_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingOther) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_other"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingOutboundTelemarketing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_outbound_telemarketing"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingSubscription) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_subscription"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingTravel) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_travel"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDiscountStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDoctors) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "doctors"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDoorToDoorSales) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "door_to_door_sales"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDraperyWindowCoveringAndUpholsteryStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drapery_window_covering_and_upholstery_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDrinkingPlaces) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drinking_places"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDrugStoresAndPharmacies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drug_stores_and_pharmacies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDrugsDrugProprietariesAndDruggistSundries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drugs_drug_proprietaries_and_druggist_sundries"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDryCleaners) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dry_cleaners"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDurableGoods) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "durable_goods"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDutyFreeStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "duty_free_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringEatingPlacesRestaurants) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eating_places_restaurants"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringEducationalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "educational_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectricRazorStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electric_razor_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectricalPartsAndEquipment) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_parts_and_equipment"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectricalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectronicsRepairShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_repair_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectronicsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElementarySecondarySchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "elementary_secondary_schools"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringEmploymentTempAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "employment_temp_agencies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringEquipmentRental) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "equipment_rental"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringExterminatingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "exterminating_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFamilyClothingStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "family_clothing_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFastFoodRestaurants) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fast_food_restaurants"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFinancialInstitutions) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "financial_institutions"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFinesGovernmentAdministrativeEntities) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fines_government_administrative_entities"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFireplaceFireplaceScreensAndAccessoriesStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fireplace_fireplace_screens_and_accessories_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFloorCoveringStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "floor_covering_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFlorists) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFloristsSuppliesNurseryStockAndFlowers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists_supplies_nursery_stock_and_flowers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFreezerAndLockerMeatProvisioners) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "freezer_and_locker_meat_provisioners"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFuelDealersNonAutomotive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fuel_dealers_non_automotive"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFuneralServicesCrematories) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "funeral_services_crematories"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_home_furnishings_and_equipment_stores_except_appliances"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFurnitureRepairRefinishing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_repair_refinishing"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFurriersAndFurShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furriers_and_fur_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGeneralServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "general_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGiftCardNoveltyAndSouvenirShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "gift_card_novelty_and_souvenir_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGlassPaintAndWallpaperStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glass_paint_and_wallpaper_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGlasswareCrystalStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glassware_crystal_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGolfCoursesPublic) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "golf_courses_public"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGovernmentServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "government_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGroceryStoresSupermarkets) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "grocery_stores_supermarkets"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHardwareEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_equipment_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHardwareStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHealthAndBeautySpas) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "health_and_beauty_spas"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHearingAidsSalesAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hearing_aids_sales_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHeatingPlumbingAC) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "heating_plumbing_a_c"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHobbyToyAndGameShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hobby_toy_and_game_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHomeSupplyWarehouseStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "home_supply_warehouse_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHospitals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hospitals"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHotelsMotelsAndResorts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hotels_motels_and_resorts"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHouseholdApplianceStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "household_appliance_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringIndustrialSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "industrial_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringInformationRetrievalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "information_retrieval_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringInsuranceDefault) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_default"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringInsuranceUnderwritingPremiums) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_underwriting_premiums"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringIntraCompanyPurchases) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "intra_company_purchases"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringJewelryStoresWatchesClocksAndSilverwareStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "jewelry_stores_watches_clocks_and_silverware_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLandscapingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "landscaping_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLaundries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundries"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLaundryCleaningServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundry_cleaning_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLegalServicesAttorneys) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "legal_services_attorneys"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLuggageAndLeatherGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "luggage_and_leather_goods_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLumberBuildingMaterialsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "lumber_building_materials_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringManualCashDisburse) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual_cash_disburse"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMarinasServiceAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "marinas_service_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMasonryStoneworkAndPlaster) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masonry_stonework_and_plaster"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMassageParlors) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "massage_parlors"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMedicalAndDentalLabs) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_and_dental_labs"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMedicalDentalOphthalmicAndHospitalEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_dental_ophthalmic_and_hospital_equipment_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMedicalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMembershipOrganizations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "membership_organizations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMensAndBoysClothingAndAccessoriesStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_and_boys_clothing_and_accessories_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMensWomensClothingStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_womens_clothing_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMetalServiceCenters) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metal_service_centers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneous) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousApparelAndAccessoryShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_apparel_and_accessory_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousAutoDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_auto_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousBusinessServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_business_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousFoodStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_food_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousGeneralMerchandise) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_merchandise"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousGeneralServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousHomeFurnishingSpecialtyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_home_furnishing_specialty_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousPublishingAndPrinting) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_publishing_and_printing"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousRecreationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_recreation_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousRepairShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_repair_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousSpecialtyRetail) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_specialty_retail"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMobileHomeDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mobile_home_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotionPictureTheaters) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motion_picture_theaters"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorFreightCarriersAndTrucking) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_freight_carriers_and_trucking"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorHomesDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_homes_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorVehicleSuppliesAndNewParts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_vehicle_supplies_and_new_parts"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorcycleShopsAndDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_and_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorcycleShopsDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMusicStoresMusicalInstrumentsPianosAndSheetMusic) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "music_stores_musical_instruments_pianos_and_sheet_music"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNewsDealersAndNewsstands) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "news_dealers_and_newsstands"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNonFiMoneyOrders) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_money_orders"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNonFiStoredValueCardPurchaseLoad) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_stored_value_card_purchase_load"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNondurableGoods) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nondurable_goods"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNurseriesLawnAndGardenSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nurseries_lawn_and_garden_supply_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNursingPersonalCare) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nursing_personal_care"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOfficeAndCommercialFurniture) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "office_and_commercial_furniture"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOpticiansEyeglasses) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "opticians_eyeglasses"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOptometristsOphthalmologist) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "optometrists_ophthalmologist"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOrthopedicGoodsProstheticDevices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "orthopedic_goods_prosthetic_devices"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOsteopaths) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "osteopaths"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPackageStoresBeerWineAndLiquor) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "package_stores_beer_wine_and_liquor"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPaintsVarnishesAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "paints_varnishes_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringParkingLotsGarages) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "parking_lots_garages"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPassengerRailways) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "passenger_railways"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPawnShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pawn_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPetShopsPetFoodAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pet_shops_pet_food_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPetroleumAndPetroleumProducts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "petroleum_and_petroleum_products"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPhotoDeveloping) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photo_developing"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPhotographicPhotocopyMicrofilmEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_photocopy_microfilm_equipment_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPhotographicStudios) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_studios"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPictureVideoProduction) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "picture_video_production"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPieceGoodsNotionsAndOtherDryGoods) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "piece_goods_notions_and_other_dry_goods"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPlumbingHeatingEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plumbing_heating_equipment_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPoliticalOrganizations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "political_organizations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPostalServicesGovernmentOnly) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "postal_services_government_only"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPreciousStonesAndMetalsWatchesAndJewelry) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "precious_stones_and_metals_watches_and_jewelry"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringProfessionalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "professional_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPublicWarehousingAndStorage) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "public_warehousing_and_storage"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringQuickCopyReproAndBlueprint) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "quick_copy_repro_and_blueprint"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRailroads) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "railroads"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRealEstateAgentsAndManagersRentals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "real_estate_agents_and_managers_rentals"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRecordStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "record_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRecreationalVehicleRentals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "recreational_vehicle_rentals"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringReligiousGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_goods_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringReligiousOrganizations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_organizations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRoofingSidingSheetMetal) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "roofing_siding_sheet_metal"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSecretarialSupportServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "secretarial_support_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSecurityBrokersDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "security_brokers_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringServiceStations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "service_stations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSewingNeedleworkFabricAndPieceGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sewing_needlework_fabric_and_piece_goods_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringShoeRepairHatCleaning) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_repair_hat_cleaning"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringShoeStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSmallApplianceRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "small_appliance_repair"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSnowmobileDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "snowmobile_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSpecialTradeServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "special_trade_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSpecialtyCleaning) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "specialty_cleaning"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSportingGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_goods_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSportingRecreationCamps) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_recreation_camps"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSportsAndRidingApparelStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_and_riding_apparel_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSportsClubsFields) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_clubs_fields"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringStampAndCoinStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stamp_and_coin_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringStationaryOfficeSuppliesPrintingAndWritingPaper) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationary_office_supplies_printing_and_writing_paper"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringStationeryStoresOfficeAndSchoolSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationery_stores_office_and_school_supply_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSwimmingPoolsSales) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "swimming_pools_sales"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTUiTravelGermany) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "t_ui_travel_germany"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTailorsAlterations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tailors_alterations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTaxPaymentsGovernmentAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_payments_government_agencies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTaxPreparationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_preparation_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTaxicabsLimousines) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "taxicabs_limousines"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTelecommunicationEquipmentAndTelephoneSales) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_equipment_and_telephone_sales"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTelecommunicationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTelegraphServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telegraph_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTentAndAwningShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tent_and_awning_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTestingLaboratories) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "testing_laboratories"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTheatricalTicketAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "theatrical_ticket_agencies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTimeshares) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "timeshares"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTireRetreadingAndRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tire_retreading_and_repair"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTollsBridgeFees) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tolls_bridge_fees"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTouristAttractionsAndExhibits) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tourist_attractions_and_exhibits"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTowingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "towing_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTrailerParksCampgrounds) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "trailer_parks_campgrounds"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTransportationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transportation_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTravelAgenciesTourOperators) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "travel_agencies_tour_operators"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTruckStopIteration) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_stop_iteration"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTruckUtilityTrailerRentals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_utility_trailer_rentals"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTypesettingPlateMakingAndRelatedServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typesetting_plate_making_and_related_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTypewriterStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typewriter_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringUSFederalGovernmentAgenciesOrDepartments) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "u_s_federal_government_agencies_or_departments"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringUniformsCommercialClothing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "uniforms_commercial_clothing"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringUsedMerchandiseAndSecondhandStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "used_merchandise_and_secondhand_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringUtilities) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "utilities"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVarietyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "variety_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVeterinaryServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "veterinary_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVideoAmusementGameSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_amusement_game_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVideoGameArcades) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_game_arcades"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVideoTapeRentalStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_tape_rental_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVocationalTradeSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "vocational_trade_schools"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWatchJewelryRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "watch_jewelry_repair"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWeldingRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "welding_repair"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWholesaleClubs) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wholesale_clubs"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWigAndToupeeStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wig_and_toupee_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWiresMoneyOrders) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wires_money_orders"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWomensAccessoryAndSpecialtyShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_accessory_and_specialty_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWomensReadyToWearStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_ready_to_wear_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWreckingAndSalvageYards) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wrecking_and_salvage_yards"

instance Data.Aeson.FromJSON Issuing'cardCardholder'AuthorizationControls'AllowedCategories' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ac_refrigeration_repair")
          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAcRefrigerationRepair
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "accounting_bookkeeping_services")
              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAccountingBookkeepingServices
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "advertising_services")
                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAdvertisingServices
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "agricultural_cooperative")
                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAgriculturalCooperative
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airlines_air_carriers")
                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAirlinesAirCarriers
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airports_flying_fields")
                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAirportsFlyingFields
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ambulance_services")
                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAmbulanceServices
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amusement_parks_carnivals")
                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAmusementParksCarnivals
                                      else
                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_reproductions")
                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAntiqueReproductions
                                          else
                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_shops")
                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAntiqueShops
                                              else
                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "aquariums")
                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAquariums
                                                  else
                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "architectural_surveying_services")
                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringArchitecturalSurveyingServices
                                                      else
                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "art_dealers_and_galleries")
                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringArtDealersAndGalleries
                                                          else
                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "artists_supply_and_craft_shops")
                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringArtistsSupplyAndCraftShops
                                                              else
                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_and_home_supply_stores")
                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutoAndHomeSupplyStores
                                                                  else
                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_body_repair_shops")
                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutoBodyRepairShops
                                                                      else
                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_paint_shops")
                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutoPaintShops
                                                                          else
                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_service_shops")
                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutoServiceShops
                                                                              else
                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_cash_disburse")
                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomatedCashDisburse
                                                                                  else
                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_fuel_dispensers")
                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomatedFuelDispensers
                                                                                      else
                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automobile_associations")
                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomobileAssociations
                                                                                          else
                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_parts_and_accessories_stores")
                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomotivePartsAndAccessoriesStores
                                                                                              else
                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_tire_stores")
                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringAutomotiveTireStores
                                                                                                  else
                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bail_and_bond_payments")
                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBailAndBondPayments
                                                                                                      else
                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bakeries")
                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBakeries
                                                                                                          else
                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bands_orchestras")
                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBandsOrchestras
                                                                                                              else
                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "barber_and_beauty_shops")
                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBarberAndBeautyShops
                                                                                                                  else
                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "betting_casino_gambling")
                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBettingCasinoGambling
                                                                                                                      else
                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bicycle_shops")
                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBicycleShops
                                                                                                                          else
                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "billiard_pool_establishments")
                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBilliardPoolEstablishments
                                                                                                                              else
                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_dealers")
                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBoatDealers
                                                                                                                                  else
                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_rentals_and_leases")
                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBoatRentalsAndLeases
                                                                                                                                      else
                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "book_stores")
                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBookStores
                                                                                                                                          else
                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "books_periodicals_and_newspapers")
                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBooksPeriodicalsAndNewspapers
                                                                                                                                              else
                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bowling_alleys")
                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBowlingAlleys
                                                                                                                                                  else
                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bus_lines")
                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBusLines
                                                                                                                                                      else
                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "business_secretarial_schools")
                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBusinessSecretarialSchools
                                                                                                                                                          else
                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "buying_shopping_services")
                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringBuyingShoppingServices
                                                                                                                                                              else
                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cable_satellite_and_other_pay_television_and_radio")
                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCableSatelliteAndOtherPayTelevisionAndRadio
                                                                                                                                                                  else
                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "camera_and_photographic_supply_stores")
                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCameraAndPhotographicSupplyStores
                                                                                                                                                                      else
                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "candy_nut_and_confectionery_stores")
                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCandyNutAndConfectioneryStores
                                                                                                                                                                          else
                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_new_used")
                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarAndTruckDealersNewUsed
                                                                                                                                                                              else
                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_used_only")
                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarAndTruckDealersUsedOnly
                                                                                                                                                                                  else
                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_rental_agencies")
                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarRentalAgencies
                                                                                                                                                                                      else
                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_washes")
                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarWashes
                                                                                                                                                                                          else
                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpentry_services")
                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarpentryServices
                                                                                                                                                                                              else
                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpet_upholstery_cleaning")
                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCarpetUpholsteryCleaning
                                                                                                                                                                                                  else
                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "caterers")
                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCaterers
                                                                                                                                                                                                      else
                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charitable_and_social_service_organizations_fundraising")
                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCharitableAndSocialServiceOrganizationsFundraising
                                                                                                                                                                                                          else
                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chemicals_and_allied_products")
                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChemicalsAndAlliedProducts
                                                                                                                                                                                                              else
                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "child_care_services")
                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChildCareServices
                                                                                                                                                                                                                  else
                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "childrens_and_infants_wear_stores")
                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChildrensAndInfantsWearStores
                                                                                                                                                                                                                      else
                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropodists_podiatrists")
                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChiropodistsPodiatrists
                                                                                                                                                                                                                          else
                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropractors")
                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringChiropractors
                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cigar_stores_and_stands")
                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCigarStoresAndStands
                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "civic_social_fraternal_associations")
                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCivicSocialFraternalAssociations
                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cleaning_and_maintenance")
                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCleaningAndMaintenance
                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "clothing_rental")
                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringClothingRental
                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "colleges_universities")
                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCollegesUniversities
                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_equipment")
                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCommercialEquipment
                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_footwear")
                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCommercialFootwear
                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_photography_art_and_graphics")
                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCommercialPhotographyArtAndGraphics
                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commuter_transport_and_ferries")
                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCommuterTransportAndFerries
                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_network_services")
                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputerNetworkServices
                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_programming")
                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputerProgramming
                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_repair")
                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputerRepair
                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_software_stores")
                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputerSoftwareStores
                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computers_peripherals_and_software")
                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringComputersPeripheralsAndSoftware
                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "concrete_work_services")
                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringConcreteWorkServices
                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "construction_materials")
                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringConstructionMaterials
                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "consulting_public_relations")
                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringConsultingPublicRelations
                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "correspondence_schools")
                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCorrespondenceSchools
                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cosmetic_stores")
                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCosmeticStores
                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "counseling_services")
                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCounselingServices
                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "country_clubs")
                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCountryClubs
                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "courier_services")
                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCourierServices
                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "court_costs")
                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCourtCosts
                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "credit_reporting_agencies")
                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCreditReportingAgencies
                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cruise_lines")
                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringCruiseLines
                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dairy_products_stores")
                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDairyProductsStores
                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dance_hall_studios_schools")
                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDanceHallStudiosSchools
                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dating_escort_services")
                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDatingEscortServices
                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dentists_orthodontists")
                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDentistsOrthodontists
                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "department_stores")
                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDepartmentStores
                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "detective_agencies")
                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDetectiveAgencies
                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_applications")
                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDigitalGoodsApplications
                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_games")
                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDigitalGoodsGames
                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_large_volume")
                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDigitalGoodsLargeVolume
                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_media")
                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDigitalGoodsMedia
                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_catalog_merchant")
                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingCatalogMerchant
                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_combination_catalog_and_retail_merchant")
                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingCombinationCatalogAndRetailMerchant
                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_inbound_telemarketing")
                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingInboundTelemarketing
                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_insurance_services")
                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingInsuranceServices
                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_other")
                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingOther
                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_outbound_telemarketing")
                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingOutboundTelemarketing
                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_subscription")
                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingSubscription
                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_travel")
                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDirectMarketingTravel
                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount_stores")
                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDiscountStores
                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "doctors")
                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDoctors
                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "door_to_door_sales")
                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDoorToDoorSales
                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drapery_window_covering_and_upholstery_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDraperyWindowCoveringAndUpholsteryStores
                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drinking_places")
                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDrinkingPlaces
                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drug_stores_and_pharmacies")
                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDrugStoresAndPharmacies
                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drugs_drug_proprietaries_and_druggist_sundries")
                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDrugsDrugProprietariesAndDruggistSundries
                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dry_cleaners")
                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDryCleaners
                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "durable_goods")
                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDurableGoods
                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "duty_free_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringDutyFreeStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eating_places_restaurants")
                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringEatingPlacesRestaurants
                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "educational_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringEducationalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electric_razor_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectricRazorStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_parts_and_equipment")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectricalPartsAndEquipment
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectricalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_repair_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectronicsRepairShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElectronicsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "elementary_secondary_schools")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringElementarySecondarySchools
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "employment_temp_agencies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringEmploymentTempAgencies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "equipment_rental")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringEquipmentRental
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "exterminating_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringExterminatingServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "family_clothing_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFamilyClothingStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fast_food_restaurants")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFastFoodRestaurants
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "financial_institutions")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFinancialInstitutions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fines_government_administrative_entities")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFinesGovernmentAdministrativeEntities
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fireplace_fireplace_screens_and_accessories_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFireplaceFireplaceScreensAndAccessoriesStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "floor_covering_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFloorCoveringStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFlorists
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists_supplies_nursery_stock_and_flowers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFloristsSuppliesNurseryStockAndFlowers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "freezer_and_locker_meat_provisioners")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFreezerAndLockerMeatProvisioners
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fuel_dealers_non_automotive")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFuelDealersNonAutomotive
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "funeral_services_crematories")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFuneralServicesCrematories
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_home_furnishings_and_equipment_stores_except_appliances")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_repair_refinishing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFurnitureRepairRefinishing
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furriers_and_fur_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringFurriersAndFurShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "general_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGeneralServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "gift_card_novelty_and_souvenir_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGiftCardNoveltyAndSouvenirShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glass_paint_and_wallpaper_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGlassPaintAndWallpaperStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glassware_crystal_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGlasswareCrystalStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "golf_courses_public")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGolfCoursesPublic
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "government_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGovernmentServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "grocery_stores_supermarkets")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringGroceryStoresSupermarkets
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHardwareEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHardwareStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "health_and_beauty_spas")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHealthAndBeautySpas
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hearing_aids_sales_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHearingAidsSalesAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "heating_plumbing_a_c")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHeatingPlumbingAC
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hobby_toy_and_game_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHobbyToyAndGameShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "home_supply_warehouse_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHomeSupplyWarehouseStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hospitals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHospitals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hotels_motels_and_resorts")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHotelsMotelsAndResorts
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "household_appliance_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringHouseholdApplianceStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "industrial_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringIndustrialSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "information_retrieval_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringInformationRetrievalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_default")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringInsuranceDefault
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_underwriting_premiums")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringInsuranceUnderwritingPremiums
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "intra_company_purchases")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringIntraCompanyPurchases
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "jewelry_stores_watches_clocks_and_silverware_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringJewelryStoresWatchesClocksAndSilverwareStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "landscaping_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLandscapingServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundries")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLaundries
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundry_cleaning_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLaundryCleaningServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "legal_services_attorneys")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLegalServicesAttorneys
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "luggage_and_leather_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLuggageAndLeatherGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "lumber_building_materials_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringLumberBuildingMaterialsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual_cash_disburse")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringManualCashDisburse
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "marinas_service_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMarinasServiceAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masonry_stonework_and_plaster")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMasonryStoneworkAndPlaster
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "massage_parlors")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMassageParlors
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_and_dental_labs")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMedicalAndDentalLabs
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_dental_ophthalmic_and_hospital_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMedicalDentalOphthalmicAndHospitalEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMedicalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "membership_organizations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMembershipOrganizations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_and_boys_clothing_and_accessories_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMensAndBoysClothingAndAccessoriesStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_womens_clothing_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMensWomensClothingStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metal_service_centers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMetalServiceCenters
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneous
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_apparel_and_accessory_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousApparelAndAccessoryShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_auto_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousAutoDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_business_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousBusinessServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_food_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousFoodStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_merchandise")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousGeneralMerchandise
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousGeneralServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_home_furnishing_specialty_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousHomeFurnishingSpecialtyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_publishing_and_printing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousPublishingAndPrinting
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_recreation_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousRecreationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_repair_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousRepairShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_specialty_retail")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMiscellaneousSpecialtyRetail
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mobile_home_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMobileHomeDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motion_picture_theaters")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotionPictureTheaters
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_freight_carriers_and_trucking")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorFreightCarriersAndTrucking
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_homes_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorHomesDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_vehicle_supplies_and_new_parts")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorVehicleSuppliesAndNewParts
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_and_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorcycleShopsAndDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMotorcycleShopsDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "music_stores_musical_instruments_pianos_and_sheet_music")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringMusicStoresMusicalInstrumentsPianosAndSheetMusic
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "news_dealers_and_newsstands")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNewsDealersAndNewsstands
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_money_orders")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNonFiMoneyOrders
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_stored_value_card_purchase_load")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNonFiStoredValueCardPurchaseLoad
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nondurable_goods")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNondurableGoods
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nurseries_lawn_and_garden_supply_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNurseriesLawnAndGardenSupplyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nursing_personal_care")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringNursingPersonalCare
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "office_and_commercial_furniture")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOfficeAndCommercialFurniture
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "opticians_eyeglasses")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOpticiansEyeglasses
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "optometrists_ophthalmologist")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOptometristsOphthalmologist
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "orthopedic_goods_prosthetic_devices")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOrthopedicGoodsProstheticDevices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "osteopaths")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringOsteopaths
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "package_stores_beer_wine_and_liquor")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPackageStoresBeerWineAndLiquor
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "paints_varnishes_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPaintsVarnishesAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "parking_lots_garages")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringParkingLotsGarages
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "passenger_railways")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPassengerRailways
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pawn_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPawnShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pet_shops_pet_food_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPetShopsPetFoodAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "petroleum_and_petroleum_products")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPetroleumAndPetroleumProducts
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photo_developing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPhotoDeveloping
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_photocopy_microfilm_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPhotographicPhotocopyMicrofilmEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_studios")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPhotographicStudios
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "picture_video_production")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPictureVideoProduction
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "piece_goods_notions_and_other_dry_goods")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPieceGoodsNotionsAndOtherDryGoods
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plumbing_heating_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPlumbingHeatingEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "political_organizations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPoliticalOrganizations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "postal_services_government_only")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPostalServicesGovernmentOnly
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "precious_stones_and_metals_watches_and_jewelry")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPreciousStonesAndMetalsWatchesAndJewelry
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "professional_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringProfessionalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "public_warehousing_and_storage")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringPublicWarehousingAndStorage
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "quick_copy_repro_and_blueprint")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringQuickCopyReproAndBlueprint
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "railroads")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRailroads
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "real_estate_agents_and_managers_rentals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRealEstateAgentsAndManagersRentals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "record_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRecordStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "recreational_vehicle_rentals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRecreationalVehicleRentals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringReligiousGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_organizations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringReligiousOrganizations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "roofing_siding_sheet_metal")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringRoofingSidingSheetMetal
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "secretarial_support_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSecretarialSupportServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "security_brokers_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSecurityBrokersDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "service_stations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringServiceStations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sewing_needlework_fabric_and_piece_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSewingNeedleworkFabricAndPieceGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_repair_hat_cleaning")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringShoeRepairHatCleaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringShoeStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "small_appliance_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSmallApplianceRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "snowmobile_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSnowmobileDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "special_trade_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSpecialTradeServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "specialty_cleaning")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSpecialtyCleaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSportingGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_recreation_camps")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSportingRecreationCamps
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_and_riding_apparel_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSportsAndRidingApparelStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_clubs_fields")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSportsClubsFields
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stamp_and_coin_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringStampAndCoinStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationary_office_supplies_printing_and_writing_paper")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringStationaryOfficeSuppliesPrintingAndWritingPaper
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationery_stores_office_and_school_supply_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringStationeryStoresOfficeAndSchoolSupplyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "swimming_pools_sales")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringSwimmingPoolsSales
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "t_ui_travel_germany")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTUiTravelGermany
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tailors_alterations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTailorsAlterations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_payments_government_agencies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTaxPaymentsGovernmentAgencies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_preparation_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTaxPreparationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "taxicabs_limousines")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTaxicabsLimousines
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_equipment_and_telephone_sales")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTelecommunicationEquipmentAndTelephoneSales
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTelecommunicationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telegraph_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTelegraphServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tent_and_awning_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTentAndAwningShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "testing_laboratories")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTestingLaboratories
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "theatrical_ticket_agencies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTheatricalTicketAgencies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "timeshares")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTimeshares
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tire_retreading_and_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTireRetreadingAndRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tolls_bridge_fees")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTollsBridgeFees
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tourist_attractions_and_exhibits")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTouristAttractionsAndExhibits
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "towing_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTowingServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "trailer_parks_campgrounds")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTrailerParksCampgrounds
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transportation_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTransportationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "travel_agencies_tour_operators")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTravelAgenciesTourOperators
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_stop_iteration")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTruckStopIteration
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_utility_trailer_rentals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTruckUtilityTrailerRentals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typesetting_plate_making_and_related_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTypesettingPlateMakingAndRelatedServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typewriter_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringTypewriterStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "u_s_federal_government_agencies_or_departments")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringUSFederalGovernmentAgenciesOrDepartments
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "uniforms_commercial_clothing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringUniformsCommercialClothing
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "used_merchandise_and_secondhand_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringUsedMerchandiseAndSecondhandStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "utilities")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringUtilities
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "variety_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVarietyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "veterinary_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVeterinaryServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_amusement_game_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVideoAmusementGameSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_game_arcades")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVideoGameArcades
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_tape_rental_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVideoTapeRentalStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "vocational_trade_schools")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringVocationalTradeSchools
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "watch_jewelry_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWatchJewelryRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "welding_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWeldingRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wholesale_clubs")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWholesaleClubs
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wig_and_toupee_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWigAndToupeeStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wires_money_orders")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWiresMoneyOrders
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_accessory_and_specialty_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWomensAccessoryAndSpecialtyShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_ready_to_wear_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWomensReadyToWearStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wrecking_and_salvage_yards")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumStringWreckingAndSalvageYards
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else Issuing'cardCardholder'AuthorizationControls'AllowedCategories'EnumOther val
      )

-- | Defines the enum schema issuing.cardCardholder\'Authorization_controls\'Blocked_categories\'
data Issuing'cardCardholder'AuthorizationControls'BlockedCategories'
  = Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumTyped Data.Text.Internal.Text
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAcRefrigerationRepair
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAccountingBookkeepingServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAdvertisingServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAgriculturalCooperative
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAirlinesAirCarriers
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAirportsFlyingFields
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAmbulanceServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAmusementParksCarnivals
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAntiqueReproductions
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAntiqueShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAquariums
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringArchitecturalSurveyingServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringArtDealersAndGalleries
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringArtistsSupplyAndCraftShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutoAndHomeSupplyStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutoBodyRepairShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutoPaintShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutoServiceShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomatedCashDisburse
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomatedFuelDispensers
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomobileAssociations
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomotivePartsAndAccessoriesStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomotiveTireStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBailAndBondPayments
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBakeries
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBandsOrchestras
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBarberAndBeautyShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBettingCasinoGambling
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBicycleShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBilliardPoolEstablishments
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBoatDealers
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBoatRentalsAndLeases
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBookStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBooksPeriodicalsAndNewspapers
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBowlingAlleys
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBusLines
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBusinessSecretarialSchools
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBuyingShoppingServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCableSatelliteAndOtherPayTelevisionAndRadio
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCameraAndPhotographicSupplyStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCandyNutAndConfectioneryStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarAndTruckDealersNewUsed
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarAndTruckDealersUsedOnly
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarRentalAgencies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarWashes
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarpentryServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarpetUpholsteryCleaning
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCaterers
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCharitableAndSocialServiceOrganizationsFundraising
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChemicalsAndAlliedProducts
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChildCareServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChildrensAndInfantsWearStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChiropodistsPodiatrists
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChiropractors
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCigarStoresAndStands
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCivicSocialFraternalAssociations
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCleaningAndMaintenance
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringClothingRental
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCollegesUniversities
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCommercialEquipment
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCommercialFootwear
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCommercialPhotographyArtAndGraphics
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCommuterTransportAndFerries
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputerNetworkServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputerProgramming
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputerRepair
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputerSoftwareStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputersPeripheralsAndSoftware
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringConcreteWorkServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringConstructionMaterials
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringConsultingPublicRelations
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCorrespondenceSchools
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCosmeticStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCounselingServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCountryClubs
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCourierServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCourtCosts
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCreditReportingAgencies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCruiseLines
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDairyProductsStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDanceHallStudiosSchools
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDatingEscortServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDentistsOrthodontists
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDepartmentStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDetectiveAgencies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDigitalGoodsApplications
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDigitalGoodsGames
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDigitalGoodsLargeVolume
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDigitalGoodsMedia
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingCatalogMerchant
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingCombinationCatalogAndRetailMerchant
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingInboundTelemarketing
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingInsuranceServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingOther
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingOutboundTelemarketing
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingSubscription
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingTravel
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDiscountStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDoctors
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDoorToDoorSales
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDraperyWindowCoveringAndUpholsteryStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDrinkingPlaces
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDrugStoresAndPharmacies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDrugsDrugProprietariesAndDruggistSundries
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDryCleaners
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDurableGoods
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDutyFreeStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringEatingPlacesRestaurants
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringEducationalServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectricRazorStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectricalPartsAndEquipment
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectricalServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectronicsRepairShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectronicsStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElementarySecondarySchools
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringEmploymentTempAgencies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringEquipmentRental
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringExterminatingServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFamilyClothingStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFastFoodRestaurants
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFinancialInstitutions
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFinesGovernmentAdministrativeEntities
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFireplaceFireplaceScreensAndAccessoriesStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFloorCoveringStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFlorists
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFloristsSuppliesNurseryStockAndFlowers
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFreezerAndLockerMeatProvisioners
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFuelDealersNonAutomotive
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFuneralServicesCrematories
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFurnitureRepairRefinishing
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFurriersAndFurShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGeneralServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGiftCardNoveltyAndSouvenirShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGlassPaintAndWallpaperStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGlasswareCrystalStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGolfCoursesPublic
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGovernmentServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGroceryStoresSupermarkets
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHardwareEquipmentAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHardwareStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHealthAndBeautySpas
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHearingAidsSalesAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHeatingPlumbingAC
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHobbyToyAndGameShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHomeSupplyWarehouseStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHospitals
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHotelsMotelsAndResorts
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHouseholdApplianceStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringIndustrialSupplies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringInformationRetrievalServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringInsuranceDefault
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringInsuranceUnderwritingPremiums
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringIntraCompanyPurchases
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringJewelryStoresWatchesClocksAndSilverwareStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLandscapingServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLaundries
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLaundryCleaningServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLegalServicesAttorneys
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLuggageAndLeatherGoodsStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLumberBuildingMaterialsStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringManualCashDisburse
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMarinasServiceAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMasonryStoneworkAndPlaster
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMassageParlors
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMedicalAndDentalLabs
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMedicalDentalOphthalmicAndHospitalEquipmentAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMedicalServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMembershipOrganizations
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMensAndBoysClothingAndAccessoriesStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMensWomensClothingStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMetalServiceCenters
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneous
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousApparelAndAccessoryShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousAutoDealers
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousBusinessServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousFoodStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousGeneralMerchandise
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousGeneralServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousHomeFurnishingSpecialtyStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousPublishingAndPrinting
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousRecreationServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousRepairShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousSpecialtyRetail
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMobileHomeDealers
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotionPictureTheaters
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorFreightCarriersAndTrucking
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorHomesDealers
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorVehicleSuppliesAndNewParts
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorcycleShopsAndDealers
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorcycleShopsDealers
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMusicStoresMusicalInstrumentsPianosAndSheetMusic
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNewsDealersAndNewsstands
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNonFiMoneyOrders
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNonFiStoredValueCardPurchaseLoad
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNondurableGoods
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNurseriesLawnAndGardenSupplyStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNursingPersonalCare
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOfficeAndCommercialFurniture
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOpticiansEyeglasses
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOptometristsOphthalmologist
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOrthopedicGoodsProstheticDevices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOsteopaths
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPackageStoresBeerWineAndLiquor
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPaintsVarnishesAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringParkingLotsGarages
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPassengerRailways
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPawnShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPetShopsPetFoodAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPetroleumAndPetroleumProducts
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPhotoDeveloping
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPhotographicPhotocopyMicrofilmEquipmentAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPhotographicStudios
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPictureVideoProduction
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPieceGoodsNotionsAndOtherDryGoods
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPlumbingHeatingEquipmentAndSupplies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPoliticalOrganizations
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPostalServicesGovernmentOnly
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPreciousStonesAndMetalsWatchesAndJewelry
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringProfessionalServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPublicWarehousingAndStorage
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringQuickCopyReproAndBlueprint
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRailroads
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRealEstateAgentsAndManagersRentals
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRecordStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRecreationalVehicleRentals
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringReligiousGoodsStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringReligiousOrganizations
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRoofingSidingSheetMetal
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSecretarialSupportServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSecurityBrokersDealers
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringServiceStations
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSewingNeedleworkFabricAndPieceGoodsStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringShoeRepairHatCleaning
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringShoeStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSmallApplianceRepair
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSnowmobileDealers
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSpecialTradeServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSpecialtyCleaning
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSportingGoodsStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSportingRecreationCamps
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSportsAndRidingApparelStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSportsClubsFields
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringStampAndCoinStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringStationaryOfficeSuppliesPrintingAndWritingPaper
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringStationeryStoresOfficeAndSchoolSupplyStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSwimmingPoolsSales
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTUiTravelGermany
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTailorsAlterations
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTaxPaymentsGovernmentAgencies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTaxPreparationServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTaxicabsLimousines
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTelecommunicationEquipmentAndTelephoneSales
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTelecommunicationServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTelegraphServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTentAndAwningShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTestingLaboratories
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTheatricalTicketAgencies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTimeshares
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTireRetreadingAndRepair
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTollsBridgeFees
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTouristAttractionsAndExhibits
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTowingServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTrailerParksCampgrounds
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTransportationServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTravelAgenciesTourOperators
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTruckStopIteration
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTruckUtilityTrailerRentals
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTypesettingPlateMakingAndRelatedServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTypewriterStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringUSFederalGovernmentAgenciesOrDepartments
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringUniformsCommercialClothing
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringUsedMerchandiseAndSecondhandStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringUtilities
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVarietyStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVeterinaryServices
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVideoAmusementGameSupplies
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVideoGameArcades
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVideoTapeRentalStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVocationalTradeSchools
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWatchJewelryRepair
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWeldingRepair
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWholesaleClubs
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWigAndToupeeStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWiresMoneyOrders
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWomensAccessoryAndSpecialtyShops
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWomensReadyToWearStores
  | Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWreckingAndSalvageYards
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardCardholder'AuthorizationControls'BlockedCategories' where
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAcRefrigerationRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ac_refrigeration_repair"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAccountingBookkeepingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "accounting_bookkeeping_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAdvertisingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "advertising_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAgriculturalCooperative) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "agricultural_cooperative"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAirlinesAirCarriers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airlines_air_carriers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAirportsFlyingFields) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airports_flying_fields"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAmbulanceServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ambulance_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAmusementParksCarnivals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amusement_parks_carnivals"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAntiqueReproductions) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_reproductions"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAntiqueShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAquariums) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "aquariums"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringArchitecturalSurveyingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "architectural_surveying_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringArtDealersAndGalleries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "art_dealers_and_galleries"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringArtistsSupplyAndCraftShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "artists_supply_and_craft_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutoAndHomeSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_and_home_supply_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutoBodyRepairShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_body_repair_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutoPaintShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_paint_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutoServiceShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_service_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomatedCashDisburse) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_cash_disburse"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomatedFuelDispensers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_fuel_dispensers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomobileAssociations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automobile_associations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomotivePartsAndAccessoriesStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_parts_and_accessories_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomotiveTireStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_tire_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBailAndBondPayments) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bail_and_bond_payments"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBakeries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bakeries"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBandsOrchestras) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bands_orchestras"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBarberAndBeautyShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "barber_and_beauty_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBettingCasinoGambling) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "betting_casino_gambling"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBicycleShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bicycle_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBilliardPoolEstablishments) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "billiard_pool_establishments"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBoatDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBoatRentalsAndLeases) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_rentals_and_leases"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBookStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "book_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBooksPeriodicalsAndNewspapers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "books_periodicals_and_newspapers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBowlingAlleys) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bowling_alleys"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBusLines) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bus_lines"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBusinessSecretarialSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "business_secretarial_schools"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBuyingShoppingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "buying_shopping_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCableSatelliteAndOtherPayTelevisionAndRadio) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cable_satellite_and_other_pay_television_and_radio"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCameraAndPhotographicSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "camera_and_photographic_supply_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCandyNutAndConfectioneryStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "candy_nut_and_confectionery_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarAndTruckDealersNewUsed) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_new_used"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarAndTruckDealersUsedOnly) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_used_only"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarRentalAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_rental_agencies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarWashes) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_washes"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarpentryServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpentry_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarpetUpholsteryCleaning) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpet_upholstery_cleaning"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCaterers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "caterers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCharitableAndSocialServiceOrganizationsFundraising) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charitable_and_social_service_organizations_fundraising"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChemicalsAndAlliedProducts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chemicals_and_allied_products"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChildCareServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "child_care_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChildrensAndInfantsWearStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "childrens_and_infants_wear_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChiropodistsPodiatrists) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropodists_podiatrists"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChiropractors) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropractors"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCigarStoresAndStands) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cigar_stores_and_stands"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCivicSocialFraternalAssociations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "civic_social_fraternal_associations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCleaningAndMaintenance) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cleaning_and_maintenance"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringClothingRental) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "clothing_rental"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCollegesUniversities) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "colleges_universities"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCommercialEquipment) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_equipment"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCommercialFootwear) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_footwear"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCommercialPhotographyArtAndGraphics) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_photography_art_and_graphics"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCommuterTransportAndFerries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commuter_transport_and_ferries"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputerNetworkServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_network_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputerProgramming) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_programming"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputerRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_repair"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputerSoftwareStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_software_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputersPeripheralsAndSoftware) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computers_peripherals_and_software"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringConcreteWorkServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "concrete_work_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringConstructionMaterials) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "construction_materials"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringConsultingPublicRelations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "consulting_public_relations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCorrespondenceSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "correspondence_schools"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCosmeticStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cosmetic_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCounselingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "counseling_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCountryClubs) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "country_clubs"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCourierServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "courier_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCourtCosts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "court_costs"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCreditReportingAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "credit_reporting_agencies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCruiseLines) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cruise_lines"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDairyProductsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dairy_products_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDanceHallStudiosSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dance_hall_studios_schools"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDatingEscortServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dating_escort_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDentistsOrthodontists) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dentists_orthodontists"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDepartmentStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "department_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDetectiveAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "detective_agencies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDigitalGoodsApplications) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_applications"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDigitalGoodsGames) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_games"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDigitalGoodsLargeVolume) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_large_volume"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDigitalGoodsMedia) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_media"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingCatalogMerchant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_catalog_merchant"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingCombinationCatalogAndRetailMerchant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_combination_catalog_and_retail_merchant"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingInboundTelemarketing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_inbound_telemarketing"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingInsuranceServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_insurance_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingOther) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_other"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingOutboundTelemarketing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_outbound_telemarketing"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingSubscription) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_subscription"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingTravel) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_travel"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDiscountStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDoctors) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "doctors"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDoorToDoorSales) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "door_to_door_sales"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDraperyWindowCoveringAndUpholsteryStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drapery_window_covering_and_upholstery_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDrinkingPlaces) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drinking_places"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDrugStoresAndPharmacies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drug_stores_and_pharmacies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDrugsDrugProprietariesAndDruggistSundries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drugs_drug_proprietaries_and_druggist_sundries"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDryCleaners) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dry_cleaners"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDurableGoods) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "durable_goods"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDutyFreeStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "duty_free_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringEatingPlacesRestaurants) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eating_places_restaurants"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringEducationalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "educational_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectricRazorStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electric_razor_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectricalPartsAndEquipment) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_parts_and_equipment"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectricalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectronicsRepairShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_repair_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectronicsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElementarySecondarySchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "elementary_secondary_schools"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringEmploymentTempAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "employment_temp_agencies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringEquipmentRental) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "equipment_rental"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringExterminatingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "exterminating_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFamilyClothingStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "family_clothing_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFastFoodRestaurants) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fast_food_restaurants"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFinancialInstitutions) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "financial_institutions"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFinesGovernmentAdministrativeEntities) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fines_government_administrative_entities"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFireplaceFireplaceScreensAndAccessoriesStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fireplace_fireplace_screens_and_accessories_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFloorCoveringStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "floor_covering_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFlorists) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFloristsSuppliesNurseryStockAndFlowers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists_supplies_nursery_stock_and_flowers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFreezerAndLockerMeatProvisioners) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "freezer_and_locker_meat_provisioners"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFuelDealersNonAutomotive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fuel_dealers_non_automotive"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFuneralServicesCrematories) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "funeral_services_crematories"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_home_furnishings_and_equipment_stores_except_appliances"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFurnitureRepairRefinishing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_repair_refinishing"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFurriersAndFurShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furriers_and_fur_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGeneralServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "general_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGiftCardNoveltyAndSouvenirShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "gift_card_novelty_and_souvenir_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGlassPaintAndWallpaperStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glass_paint_and_wallpaper_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGlasswareCrystalStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glassware_crystal_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGolfCoursesPublic) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "golf_courses_public"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGovernmentServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "government_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGroceryStoresSupermarkets) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "grocery_stores_supermarkets"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHardwareEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_equipment_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHardwareStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHealthAndBeautySpas) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "health_and_beauty_spas"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHearingAidsSalesAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hearing_aids_sales_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHeatingPlumbingAC) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "heating_plumbing_a_c"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHobbyToyAndGameShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hobby_toy_and_game_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHomeSupplyWarehouseStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "home_supply_warehouse_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHospitals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hospitals"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHotelsMotelsAndResorts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hotels_motels_and_resorts"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHouseholdApplianceStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "household_appliance_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringIndustrialSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "industrial_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringInformationRetrievalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "information_retrieval_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringInsuranceDefault) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_default"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringInsuranceUnderwritingPremiums) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_underwriting_premiums"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringIntraCompanyPurchases) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "intra_company_purchases"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringJewelryStoresWatchesClocksAndSilverwareStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "jewelry_stores_watches_clocks_and_silverware_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLandscapingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "landscaping_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLaundries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundries"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLaundryCleaningServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundry_cleaning_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLegalServicesAttorneys) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "legal_services_attorneys"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLuggageAndLeatherGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "luggage_and_leather_goods_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLumberBuildingMaterialsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "lumber_building_materials_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringManualCashDisburse) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual_cash_disburse"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMarinasServiceAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "marinas_service_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMasonryStoneworkAndPlaster) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masonry_stonework_and_plaster"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMassageParlors) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "massage_parlors"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMedicalAndDentalLabs) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_and_dental_labs"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMedicalDentalOphthalmicAndHospitalEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_dental_ophthalmic_and_hospital_equipment_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMedicalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMembershipOrganizations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "membership_organizations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMensAndBoysClothingAndAccessoriesStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_and_boys_clothing_and_accessories_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMensWomensClothingStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_womens_clothing_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMetalServiceCenters) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metal_service_centers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneous) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousApparelAndAccessoryShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_apparel_and_accessory_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousAutoDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_auto_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousBusinessServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_business_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousFoodStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_food_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousGeneralMerchandise) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_merchandise"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousGeneralServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousHomeFurnishingSpecialtyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_home_furnishing_specialty_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousPublishingAndPrinting) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_publishing_and_printing"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousRecreationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_recreation_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousRepairShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_repair_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousSpecialtyRetail) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_specialty_retail"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMobileHomeDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mobile_home_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotionPictureTheaters) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motion_picture_theaters"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorFreightCarriersAndTrucking) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_freight_carriers_and_trucking"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorHomesDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_homes_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorVehicleSuppliesAndNewParts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_vehicle_supplies_and_new_parts"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorcycleShopsAndDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_and_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorcycleShopsDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMusicStoresMusicalInstrumentsPianosAndSheetMusic) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "music_stores_musical_instruments_pianos_and_sheet_music"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNewsDealersAndNewsstands) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "news_dealers_and_newsstands"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNonFiMoneyOrders) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_money_orders"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNonFiStoredValueCardPurchaseLoad) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_stored_value_card_purchase_load"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNondurableGoods) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nondurable_goods"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNurseriesLawnAndGardenSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nurseries_lawn_and_garden_supply_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNursingPersonalCare) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nursing_personal_care"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOfficeAndCommercialFurniture) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "office_and_commercial_furniture"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOpticiansEyeglasses) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "opticians_eyeglasses"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOptometristsOphthalmologist) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "optometrists_ophthalmologist"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOrthopedicGoodsProstheticDevices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "orthopedic_goods_prosthetic_devices"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOsteopaths) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "osteopaths"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPackageStoresBeerWineAndLiquor) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "package_stores_beer_wine_and_liquor"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPaintsVarnishesAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "paints_varnishes_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringParkingLotsGarages) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "parking_lots_garages"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPassengerRailways) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "passenger_railways"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPawnShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pawn_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPetShopsPetFoodAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pet_shops_pet_food_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPetroleumAndPetroleumProducts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "petroleum_and_petroleum_products"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPhotoDeveloping) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photo_developing"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPhotographicPhotocopyMicrofilmEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_photocopy_microfilm_equipment_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPhotographicStudios) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_studios"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPictureVideoProduction) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "picture_video_production"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPieceGoodsNotionsAndOtherDryGoods) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "piece_goods_notions_and_other_dry_goods"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPlumbingHeatingEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plumbing_heating_equipment_and_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPoliticalOrganizations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "political_organizations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPostalServicesGovernmentOnly) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "postal_services_government_only"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPreciousStonesAndMetalsWatchesAndJewelry) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "precious_stones_and_metals_watches_and_jewelry"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringProfessionalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "professional_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPublicWarehousingAndStorage) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "public_warehousing_and_storage"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringQuickCopyReproAndBlueprint) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "quick_copy_repro_and_blueprint"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRailroads) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "railroads"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRealEstateAgentsAndManagersRentals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "real_estate_agents_and_managers_rentals"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRecordStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "record_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRecreationalVehicleRentals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "recreational_vehicle_rentals"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringReligiousGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_goods_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringReligiousOrganizations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_organizations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRoofingSidingSheetMetal) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "roofing_siding_sheet_metal"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSecretarialSupportServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "secretarial_support_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSecurityBrokersDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "security_brokers_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringServiceStations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "service_stations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSewingNeedleworkFabricAndPieceGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sewing_needlework_fabric_and_piece_goods_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringShoeRepairHatCleaning) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_repair_hat_cleaning"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringShoeStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSmallApplianceRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "small_appliance_repair"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSnowmobileDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "snowmobile_dealers"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSpecialTradeServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "special_trade_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSpecialtyCleaning) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "specialty_cleaning"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSportingGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_goods_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSportingRecreationCamps) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_recreation_camps"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSportsAndRidingApparelStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_and_riding_apparel_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSportsClubsFields) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_clubs_fields"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringStampAndCoinStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stamp_and_coin_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringStationaryOfficeSuppliesPrintingAndWritingPaper) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationary_office_supplies_printing_and_writing_paper"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringStationeryStoresOfficeAndSchoolSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationery_stores_office_and_school_supply_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSwimmingPoolsSales) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "swimming_pools_sales"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTUiTravelGermany) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "t_ui_travel_germany"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTailorsAlterations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tailors_alterations"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTaxPaymentsGovernmentAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_payments_government_agencies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTaxPreparationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_preparation_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTaxicabsLimousines) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "taxicabs_limousines"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTelecommunicationEquipmentAndTelephoneSales) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_equipment_and_telephone_sales"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTelecommunicationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTelegraphServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telegraph_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTentAndAwningShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tent_and_awning_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTestingLaboratories) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "testing_laboratories"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTheatricalTicketAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "theatrical_ticket_agencies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTimeshares) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "timeshares"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTireRetreadingAndRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tire_retreading_and_repair"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTollsBridgeFees) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tolls_bridge_fees"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTouristAttractionsAndExhibits) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tourist_attractions_and_exhibits"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTowingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "towing_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTrailerParksCampgrounds) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "trailer_parks_campgrounds"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTransportationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transportation_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTravelAgenciesTourOperators) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "travel_agencies_tour_operators"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTruckStopIteration) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_stop_iteration"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTruckUtilityTrailerRentals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_utility_trailer_rentals"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTypesettingPlateMakingAndRelatedServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typesetting_plate_making_and_related_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTypewriterStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typewriter_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringUSFederalGovernmentAgenciesOrDepartments) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "u_s_federal_government_agencies_or_departments"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringUniformsCommercialClothing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "uniforms_commercial_clothing"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringUsedMerchandiseAndSecondhandStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "used_merchandise_and_secondhand_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringUtilities) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "utilities"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVarietyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "variety_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVeterinaryServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "veterinary_services"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVideoAmusementGameSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_amusement_game_supplies"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVideoGameArcades) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_game_arcades"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVideoTapeRentalStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_tape_rental_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVocationalTradeSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "vocational_trade_schools"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWatchJewelryRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "watch_jewelry_repair"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWeldingRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "welding_repair"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWholesaleClubs) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wholesale_clubs"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWigAndToupeeStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wig_and_toupee_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWiresMoneyOrders) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wires_money_orders"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWomensAccessoryAndSpecialtyShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_accessory_and_specialty_shops"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWomensReadyToWearStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_ready_to_wear_stores"
  toJSON (Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWreckingAndSalvageYards) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wrecking_and_salvage_yards"

instance Data.Aeson.FromJSON Issuing'cardCardholder'AuthorizationControls'BlockedCategories' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ac_refrigeration_repair")
          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAcRefrigerationRepair
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "accounting_bookkeeping_services")
              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAccountingBookkeepingServices
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "advertising_services")
                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAdvertisingServices
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "agricultural_cooperative")
                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAgriculturalCooperative
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airlines_air_carriers")
                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAirlinesAirCarriers
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airports_flying_fields")
                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAirportsFlyingFields
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ambulance_services")
                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAmbulanceServices
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amusement_parks_carnivals")
                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAmusementParksCarnivals
                                      else
                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_reproductions")
                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAntiqueReproductions
                                          else
                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_shops")
                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAntiqueShops
                                              else
                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "aquariums")
                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAquariums
                                                  else
                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "architectural_surveying_services")
                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringArchitecturalSurveyingServices
                                                      else
                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "art_dealers_and_galleries")
                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringArtDealersAndGalleries
                                                          else
                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "artists_supply_and_craft_shops")
                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringArtistsSupplyAndCraftShops
                                                              else
                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_and_home_supply_stores")
                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutoAndHomeSupplyStores
                                                                  else
                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_body_repair_shops")
                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutoBodyRepairShops
                                                                      else
                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_paint_shops")
                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutoPaintShops
                                                                          else
                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_service_shops")
                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutoServiceShops
                                                                              else
                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_cash_disburse")
                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomatedCashDisburse
                                                                                  else
                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_fuel_dispensers")
                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomatedFuelDispensers
                                                                                      else
                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automobile_associations")
                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomobileAssociations
                                                                                          else
                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_parts_and_accessories_stores")
                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomotivePartsAndAccessoriesStores
                                                                                              else
                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_tire_stores")
                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringAutomotiveTireStores
                                                                                                  else
                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bail_and_bond_payments")
                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBailAndBondPayments
                                                                                                      else
                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bakeries")
                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBakeries
                                                                                                          else
                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bands_orchestras")
                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBandsOrchestras
                                                                                                              else
                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "barber_and_beauty_shops")
                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBarberAndBeautyShops
                                                                                                                  else
                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "betting_casino_gambling")
                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBettingCasinoGambling
                                                                                                                      else
                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bicycle_shops")
                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBicycleShops
                                                                                                                          else
                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "billiard_pool_establishments")
                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBilliardPoolEstablishments
                                                                                                                              else
                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_dealers")
                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBoatDealers
                                                                                                                                  else
                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_rentals_and_leases")
                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBoatRentalsAndLeases
                                                                                                                                      else
                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "book_stores")
                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBookStores
                                                                                                                                          else
                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "books_periodicals_and_newspapers")
                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBooksPeriodicalsAndNewspapers
                                                                                                                                              else
                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bowling_alleys")
                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBowlingAlleys
                                                                                                                                                  else
                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bus_lines")
                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBusLines
                                                                                                                                                      else
                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "business_secretarial_schools")
                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBusinessSecretarialSchools
                                                                                                                                                          else
                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "buying_shopping_services")
                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringBuyingShoppingServices
                                                                                                                                                              else
                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cable_satellite_and_other_pay_television_and_radio")
                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCableSatelliteAndOtherPayTelevisionAndRadio
                                                                                                                                                                  else
                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "camera_and_photographic_supply_stores")
                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCameraAndPhotographicSupplyStores
                                                                                                                                                                      else
                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "candy_nut_and_confectionery_stores")
                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCandyNutAndConfectioneryStores
                                                                                                                                                                          else
                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_new_used")
                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarAndTruckDealersNewUsed
                                                                                                                                                                              else
                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_used_only")
                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarAndTruckDealersUsedOnly
                                                                                                                                                                                  else
                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_rental_agencies")
                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarRentalAgencies
                                                                                                                                                                                      else
                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_washes")
                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarWashes
                                                                                                                                                                                          else
                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpentry_services")
                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarpentryServices
                                                                                                                                                                                              else
                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpet_upholstery_cleaning")
                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCarpetUpholsteryCleaning
                                                                                                                                                                                                  else
                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "caterers")
                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCaterers
                                                                                                                                                                                                      else
                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charitable_and_social_service_organizations_fundraising")
                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCharitableAndSocialServiceOrganizationsFundraising
                                                                                                                                                                                                          else
                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chemicals_and_allied_products")
                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChemicalsAndAlliedProducts
                                                                                                                                                                                                              else
                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "child_care_services")
                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChildCareServices
                                                                                                                                                                                                                  else
                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "childrens_and_infants_wear_stores")
                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChildrensAndInfantsWearStores
                                                                                                                                                                                                                      else
                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropodists_podiatrists")
                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChiropodistsPodiatrists
                                                                                                                                                                                                                          else
                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropractors")
                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringChiropractors
                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cigar_stores_and_stands")
                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCigarStoresAndStands
                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "civic_social_fraternal_associations")
                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCivicSocialFraternalAssociations
                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cleaning_and_maintenance")
                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCleaningAndMaintenance
                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "clothing_rental")
                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringClothingRental
                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "colleges_universities")
                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCollegesUniversities
                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_equipment")
                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCommercialEquipment
                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_footwear")
                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCommercialFootwear
                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_photography_art_and_graphics")
                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCommercialPhotographyArtAndGraphics
                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commuter_transport_and_ferries")
                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCommuterTransportAndFerries
                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_network_services")
                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputerNetworkServices
                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_programming")
                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputerProgramming
                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_repair")
                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputerRepair
                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_software_stores")
                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputerSoftwareStores
                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computers_peripherals_and_software")
                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringComputersPeripheralsAndSoftware
                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "concrete_work_services")
                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringConcreteWorkServices
                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "construction_materials")
                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringConstructionMaterials
                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "consulting_public_relations")
                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringConsultingPublicRelations
                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "correspondence_schools")
                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCorrespondenceSchools
                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cosmetic_stores")
                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCosmeticStores
                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "counseling_services")
                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCounselingServices
                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "country_clubs")
                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCountryClubs
                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "courier_services")
                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCourierServices
                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "court_costs")
                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCourtCosts
                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "credit_reporting_agencies")
                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCreditReportingAgencies
                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cruise_lines")
                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringCruiseLines
                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dairy_products_stores")
                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDairyProductsStores
                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dance_hall_studios_schools")
                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDanceHallStudiosSchools
                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dating_escort_services")
                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDatingEscortServices
                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dentists_orthodontists")
                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDentistsOrthodontists
                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "department_stores")
                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDepartmentStores
                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "detective_agencies")
                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDetectiveAgencies
                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_applications")
                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDigitalGoodsApplications
                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_games")
                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDigitalGoodsGames
                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_large_volume")
                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDigitalGoodsLargeVolume
                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_media")
                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDigitalGoodsMedia
                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_catalog_merchant")
                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingCatalogMerchant
                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_combination_catalog_and_retail_merchant")
                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingCombinationCatalogAndRetailMerchant
                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_inbound_telemarketing")
                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingInboundTelemarketing
                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_insurance_services")
                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingInsuranceServices
                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_other")
                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingOther
                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_outbound_telemarketing")
                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingOutboundTelemarketing
                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_subscription")
                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingSubscription
                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_travel")
                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDirectMarketingTravel
                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount_stores")
                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDiscountStores
                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "doctors")
                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDoctors
                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "door_to_door_sales")
                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDoorToDoorSales
                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drapery_window_covering_and_upholstery_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDraperyWindowCoveringAndUpholsteryStores
                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drinking_places")
                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDrinkingPlaces
                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drug_stores_and_pharmacies")
                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDrugStoresAndPharmacies
                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drugs_drug_proprietaries_and_druggist_sundries")
                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDrugsDrugProprietariesAndDruggistSundries
                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dry_cleaners")
                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDryCleaners
                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "durable_goods")
                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDurableGoods
                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "duty_free_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringDutyFreeStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eating_places_restaurants")
                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringEatingPlacesRestaurants
                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "educational_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringEducationalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electric_razor_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectricRazorStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_parts_and_equipment")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectricalPartsAndEquipment
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectricalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_repair_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectronicsRepairShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElectronicsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "elementary_secondary_schools")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringElementarySecondarySchools
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "employment_temp_agencies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringEmploymentTempAgencies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "equipment_rental")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringEquipmentRental
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "exterminating_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringExterminatingServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "family_clothing_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFamilyClothingStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fast_food_restaurants")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFastFoodRestaurants
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "financial_institutions")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFinancialInstitutions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fines_government_administrative_entities")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFinesGovernmentAdministrativeEntities
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fireplace_fireplace_screens_and_accessories_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFireplaceFireplaceScreensAndAccessoriesStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "floor_covering_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFloorCoveringStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFlorists
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists_supplies_nursery_stock_and_flowers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFloristsSuppliesNurseryStockAndFlowers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "freezer_and_locker_meat_provisioners")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFreezerAndLockerMeatProvisioners
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fuel_dealers_non_automotive")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFuelDealersNonAutomotive
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "funeral_services_crematories")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFuneralServicesCrematories
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_home_furnishings_and_equipment_stores_except_appliances")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_repair_refinishing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFurnitureRepairRefinishing
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furriers_and_fur_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringFurriersAndFurShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "general_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGeneralServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "gift_card_novelty_and_souvenir_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGiftCardNoveltyAndSouvenirShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glass_paint_and_wallpaper_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGlassPaintAndWallpaperStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glassware_crystal_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGlasswareCrystalStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "golf_courses_public")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGolfCoursesPublic
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "government_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGovernmentServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "grocery_stores_supermarkets")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringGroceryStoresSupermarkets
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHardwareEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHardwareStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "health_and_beauty_spas")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHealthAndBeautySpas
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hearing_aids_sales_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHearingAidsSalesAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "heating_plumbing_a_c")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHeatingPlumbingAC
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hobby_toy_and_game_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHobbyToyAndGameShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "home_supply_warehouse_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHomeSupplyWarehouseStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hospitals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHospitals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hotels_motels_and_resorts")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHotelsMotelsAndResorts
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "household_appliance_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringHouseholdApplianceStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "industrial_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringIndustrialSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "information_retrieval_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringInformationRetrievalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_default")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringInsuranceDefault
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_underwriting_premiums")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringInsuranceUnderwritingPremiums
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "intra_company_purchases")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringIntraCompanyPurchases
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "jewelry_stores_watches_clocks_and_silverware_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringJewelryStoresWatchesClocksAndSilverwareStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "landscaping_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLandscapingServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundries")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLaundries
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundry_cleaning_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLaundryCleaningServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "legal_services_attorneys")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLegalServicesAttorneys
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "luggage_and_leather_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLuggageAndLeatherGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "lumber_building_materials_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringLumberBuildingMaterialsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual_cash_disburse")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringManualCashDisburse
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "marinas_service_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMarinasServiceAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masonry_stonework_and_plaster")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMasonryStoneworkAndPlaster
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "massage_parlors")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMassageParlors
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_and_dental_labs")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMedicalAndDentalLabs
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_dental_ophthalmic_and_hospital_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMedicalDentalOphthalmicAndHospitalEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMedicalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "membership_organizations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMembershipOrganizations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_and_boys_clothing_and_accessories_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMensAndBoysClothingAndAccessoriesStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_womens_clothing_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMensWomensClothingStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metal_service_centers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMetalServiceCenters
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneous
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_apparel_and_accessory_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousApparelAndAccessoryShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_auto_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousAutoDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_business_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousBusinessServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_food_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousFoodStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_merchandise")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousGeneralMerchandise
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousGeneralServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_home_furnishing_specialty_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousHomeFurnishingSpecialtyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_publishing_and_printing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousPublishingAndPrinting
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_recreation_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousRecreationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_repair_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousRepairShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_specialty_retail")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMiscellaneousSpecialtyRetail
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mobile_home_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMobileHomeDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motion_picture_theaters")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotionPictureTheaters
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_freight_carriers_and_trucking")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorFreightCarriersAndTrucking
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_homes_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorHomesDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_vehicle_supplies_and_new_parts")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorVehicleSuppliesAndNewParts
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_and_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorcycleShopsAndDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMotorcycleShopsDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "music_stores_musical_instruments_pianos_and_sheet_music")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringMusicStoresMusicalInstrumentsPianosAndSheetMusic
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "news_dealers_and_newsstands")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNewsDealersAndNewsstands
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_money_orders")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNonFiMoneyOrders
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_stored_value_card_purchase_load")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNonFiStoredValueCardPurchaseLoad
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nondurable_goods")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNondurableGoods
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nurseries_lawn_and_garden_supply_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNurseriesLawnAndGardenSupplyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nursing_personal_care")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringNursingPersonalCare
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "office_and_commercial_furniture")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOfficeAndCommercialFurniture
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "opticians_eyeglasses")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOpticiansEyeglasses
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "optometrists_ophthalmologist")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOptometristsOphthalmologist
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "orthopedic_goods_prosthetic_devices")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOrthopedicGoodsProstheticDevices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "osteopaths")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringOsteopaths
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "package_stores_beer_wine_and_liquor")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPackageStoresBeerWineAndLiquor
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "paints_varnishes_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPaintsVarnishesAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "parking_lots_garages")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringParkingLotsGarages
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "passenger_railways")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPassengerRailways
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pawn_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPawnShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pet_shops_pet_food_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPetShopsPetFoodAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "petroleum_and_petroleum_products")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPetroleumAndPetroleumProducts
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photo_developing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPhotoDeveloping
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_photocopy_microfilm_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPhotographicPhotocopyMicrofilmEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_studios")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPhotographicStudios
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "picture_video_production")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPictureVideoProduction
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "piece_goods_notions_and_other_dry_goods")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPieceGoodsNotionsAndOtherDryGoods
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plumbing_heating_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPlumbingHeatingEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "political_organizations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPoliticalOrganizations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "postal_services_government_only")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPostalServicesGovernmentOnly
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "precious_stones_and_metals_watches_and_jewelry")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPreciousStonesAndMetalsWatchesAndJewelry
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "professional_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringProfessionalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "public_warehousing_and_storage")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringPublicWarehousingAndStorage
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "quick_copy_repro_and_blueprint")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringQuickCopyReproAndBlueprint
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "railroads")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRailroads
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "real_estate_agents_and_managers_rentals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRealEstateAgentsAndManagersRentals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "record_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRecordStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "recreational_vehicle_rentals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRecreationalVehicleRentals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringReligiousGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_organizations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringReligiousOrganizations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "roofing_siding_sheet_metal")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringRoofingSidingSheetMetal
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "secretarial_support_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSecretarialSupportServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "security_brokers_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSecurityBrokersDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "service_stations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringServiceStations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sewing_needlework_fabric_and_piece_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSewingNeedleworkFabricAndPieceGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_repair_hat_cleaning")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringShoeRepairHatCleaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringShoeStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "small_appliance_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSmallApplianceRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "snowmobile_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSnowmobileDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "special_trade_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSpecialTradeServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "specialty_cleaning")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSpecialtyCleaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSportingGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_recreation_camps")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSportingRecreationCamps
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_and_riding_apparel_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSportsAndRidingApparelStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_clubs_fields")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSportsClubsFields
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stamp_and_coin_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringStampAndCoinStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationary_office_supplies_printing_and_writing_paper")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringStationaryOfficeSuppliesPrintingAndWritingPaper
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationery_stores_office_and_school_supply_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringStationeryStoresOfficeAndSchoolSupplyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "swimming_pools_sales")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringSwimmingPoolsSales
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "t_ui_travel_germany")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTUiTravelGermany
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tailors_alterations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTailorsAlterations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_payments_government_agencies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTaxPaymentsGovernmentAgencies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_preparation_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTaxPreparationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "taxicabs_limousines")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTaxicabsLimousines
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_equipment_and_telephone_sales")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTelecommunicationEquipmentAndTelephoneSales
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTelecommunicationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telegraph_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTelegraphServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tent_and_awning_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTentAndAwningShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "testing_laboratories")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTestingLaboratories
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "theatrical_ticket_agencies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTheatricalTicketAgencies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "timeshares")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTimeshares
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tire_retreading_and_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTireRetreadingAndRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tolls_bridge_fees")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTollsBridgeFees
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tourist_attractions_and_exhibits")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTouristAttractionsAndExhibits
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "towing_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTowingServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "trailer_parks_campgrounds")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTrailerParksCampgrounds
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transportation_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTransportationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "travel_agencies_tour_operators")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTravelAgenciesTourOperators
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_stop_iteration")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTruckStopIteration
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_utility_trailer_rentals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTruckUtilityTrailerRentals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typesetting_plate_making_and_related_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTypesettingPlateMakingAndRelatedServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typewriter_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringTypewriterStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "u_s_federal_government_agencies_or_departments")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringUSFederalGovernmentAgenciesOrDepartments
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "uniforms_commercial_clothing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringUniformsCommercialClothing
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "used_merchandise_and_secondhand_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringUsedMerchandiseAndSecondhandStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "utilities")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringUtilities
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "variety_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVarietyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "veterinary_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVeterinaryServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_amusement_game_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVideoAmusementGameSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_game_arcades")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVideoGameArcades
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_tape_rental_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVideoTapeRentalStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "vocational_trade_schools")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringVocationalTradeSchools
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "watch_jewelry_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWatchJewelryRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "welding_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWeldingRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wholesale_clubs")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWholesaleClubs
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wig_and_toupee_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWigAndToupeeStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wires_money_orders")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWiresMoneyOrders
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_accessory_and_specialty_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWomensAccessoryAndSpecialtyShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_ready_to_wear_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWomensReadyToWearStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wrecking_and_salvage_yards")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumStringWreckingAndSalvageYards
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else Issuing'cardCardholder'AuthorizationControls'BlockedCategories'EnumOther val
      )

-- | Defines the data type for the schema issuing.cardCardholder\'Company\'
--
-- Additional information about a \\\`business_entity\\\` cardholder.
data Issuing'cardCardholder'Company'
  = Issuing'cardCardholder'Company'
      { -- | tax_id_provided: Whether the company\'s business ID number was provided.
        issuing'cardCardholder'Company'TaxIdProvided :: (GHC.Maybe.Maybe GHC.Types.Bool)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardCardholder'Company' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "tax_id_provided" (issuing'cardCardholder'Company'TaxIdProvided obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "tax_id_provided" (issuing'cardCardholder'Company'TaxIdProvided obj))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardCardholder'Company' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardCardholder'Company'" (\obj -> GHC.Base.pure Issuing'cardCardholder'Company' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_id_provided"))

-- | Defines the data type for the schema issuing.cardCardholder\'Individual\'
--
-- Additional information about an \\\`individual\\\` cardholder.
data Issuing'cardCardholder'Individual'
  = Issuing'cardCardholder'Individual'
      { -- | dob: The date of birth of this cardholder.
        issuing'cardCardholder'Individual'Dob :: (GHC.Maybe.Maybe Issuing'cardCardholder'Individual'Dob'),
        -- | first_name: The first name of this cardholder.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardCardholder'Individual'FirstName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | last_name: The last name of this cardholder.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardCardholder'Individual'LastName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verification: Government-issued ID document for this cardholder.
        issuing'cardCardholder'Individual'Verification :: (GHC.Maybe.Maybe Issuing'cardCardholder'Individual'Verification')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardCardholder'Individual' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "dob" (issuing'cardCardholder'Individual'Dob obj) : (Data.Aeson..=) "first_name" (issuing'cardCardholder'Individual'FirstName obj) : (Data.Aeson..=) "last_name" (issuing'cardCardholder'Individual'LastName obj) : (Data.Aeson..=) "verification" (issuing'cardCardholder'Individual'Verification obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "dob" (issuing'cardCardholder'Individual'Dob obj) GHC.Base.<> ((Data.Aeson..=) "first_name" (issuing'cardCardholder'Individual'FirstName obj) GHC.Base.<> ((Data.Aeson..=) "last_name" (issuing'cardCardholder'Individual'LastName obj) GHC.Base.<> (Data.Aeson..=) "verification" (issuing'cardCardholder'Individual'Verification obj))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardCardholder'Individual' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardCardholder'Individual'" (\obj -> (((GHC.Base.pure Issuing'cardCardholder'Individual' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dob")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "first_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verification"))

-- | Defines the data type for the schema issuing.cardCardholder\'Individual\'Dob\'
--
-- The date of birth of this cardholder.
data Issuing'cardCardholder'Individual'Dob'
  = Issuing'cardCardholder'Individual'Dob'
      { -- | day: The day of birth, between 1 and 31.
        issuing'cardCardholder'Individual'Dob'Day :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | month: The month of birth, between 1 and 12.
        issuing'cardCardholder'Individual'Dob'Month :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | year: The four-digit year of birth.
        issuing'cardCardholder'Individual'Dob'Year :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardCardholder'Individual'Dob' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "day" (issuing'cardCardholder'Individual'Dob'Day obj) : (Data.Aeson..=) "month" (issuing'cardCardholder'Individual'Dob'Month obj) : (Data.Aeson..=) "year" (issuing'cardCardholder'Individual'Dob'Year obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "day" (issuing'cardCardholder'Individual'Dob'Day obj) GHC.Base.<> ((Data.Aeson..=) "month" (issuing'cardCardholder'Individual'Dob'Month obj) GHC.Base.<> (Data.Aeson..=) "year" (issuing'cardCardholder'Individual'Dob'Year obj)))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardCardholder'Individual'Dob' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardCardholder'Individual'Dob'" (\obj -> ((GHC.Base.pure Issuing'cardCardholder'Individual'Dob' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "day")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "year"))

-- | Defines the data type for the schema issuing.cardCardholder\'Individual\'Verification\'
--
-- Government-issued ID document for this cardholder.
data Issuing'cardCardholder'Individual'Verification'
  = Issuing'cardCardholder'Individual'Verification'
      { -- | document: An identifying document, either a passport or local ID card.
        issuing'cardCardholder'Individual'Verification'Document :: (GHC.Maybe.Maybe Issuing'cardCardholder'Individual'Verification'Document')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardCardholder'Individual'Verification' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "document" (issuing'cardCardholder'Individual'Verification'Document obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "document" (issuing'cardCardholder'Individual'Verification'Document obj))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardCardholder'Individual'Verification' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardCardholder'Individual'Verification'" (\obj -> GHC.Base.pure Issuing'cardCardholder'Individual'Verification' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "document"))

-- | Defines the data type for the schema issuing.cardCardholder\'Individual\'Verification\'Document\'
--
-- An identifying document, either a passport or local ID card.
data Issuing'cardCardholder'Individual'Verification'Document'
  = Issuing'cardCardholder'Individual'Verification'Document'
      { -- | back: The back of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
        issuing'cardCardholder'Individual'Verification'Document'Back :: (GHC.Maybe.Maybe Issuing'cardCardholder'Individual'Verification'Document'Back'Variants),
        -- | front: The front of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
        issuing'cardCardholder'Individual'Verification'Document'Front :: (GHC.Maybe.Maybe Issuing'cardCardholder'Individual'Verification'Document'Front'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardCardholder'Individual'Verification'Document' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "back" (issuing'cardCardholder'Individual'Verification'Document'Back obj) : (Data.Aeson..=) "front" (issuing'cardCardholder'Individual'Verification'Document'Front obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "back" (issuing'cardCardholder'Individual'Verification'Document'Back obj) GHC.Base.<> (Data.Aeson..=) "front" (issuing'cardCardholder'Individual'Verification'Document'Front obj))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardCardholder'Individual'Verification'Document' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardCardholder'Individual'Verification'Document'" (\obj -> (GHC.Base.pure Issuing'cardCardholder'Individual'Verification'Document' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "back")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "front"))

-- | Define the one-of schema issuing.cardCardholder\'Individual\'Verification\'Document\'Back\'
--
-- The back of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
data Issuing'cardCardholder'Individual'Verification'Document'Back'Variants
  = Issuing'cardCardholder'Individual'Verification'Document'Back'File File
  | Issuing'cardCardholder'Individual'Verification'Document'Back'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Issuing'cardCardholder'Individual'Verification'Document'Back'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Issuing'cardCardholder'Individual'Verification'Document'Back'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema issuing.cardCardholder\'Individual\'Verification\'Document\'Front\'
--
-- The front of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
data Issuing'cardCardholder'Individual'Verification'Document'Front'Variants
  = Issuing'cardCardholder'Individual'Verification'Document'Front'File File
  | Issuing'cardCardholder'Individual'Verification'Document'Front'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Issuing'cardCardholder'Individual'Verification'Document'Front'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Issuing'cardCardholder'Individual'Verification'Document'Front'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing.cardCardholder\'Metadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data Issuing'cardCardholder'Metadata'
  = Issuing'cardCardholder'Metadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardCardholder'Metadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardCardholder'Metadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardCardholder'Metadata'" (\obj -> GHC.Base.pure Issuing'cardCardholder'Metadata')

-- | Defines the enum schema issuing.cardCardholder\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data Issuing'cardCardholder'Object'
  = Issuing'cardCardholder'Object'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardCardholder'Object'EnumTyped Data.Text.Internal.Text
  | Issuing'cardCardholder'Object'EnumStringIssuing'cardholder
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardCardholder'Object' where
  toJSON (Issuing'cardCardholder'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardCardholder'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardCardholder'Object'EnumStringIssuing'cardholder) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.cardholder"

instance Data.Aeson.FromJSON Issuing'cardCardholder'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.cardholder")
          then Issuing'cardCardholder'Object'EnumStringIssuing'cardholder
          else Issuing'cardCardholder'Object'EnumOther val
      )

-- | Defines the enum schema issuing.cardCardholder\'Status\'
--
-- Specifies whether to permit authorizations on this cardholder\'s cards.
data Issuing'cardCardholder'Status'
  = Issuing'cardCardholder'Status'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardCardholder'Status'EnumTyped Data.Text.Internal.Text
  | Issuing'cardCardholder'Status'EnumStringActive
  | Issuing'cardCardholder'Status'EnumStringBlocked
  | Issuing'cardCardholder'Status'EnumStringInactive
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardCardholder'Status' where
  toJSON (Issuing'cardCardholder'Status'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardCardholder'Status'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardCardholder'Status'EnumStringActive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active"
  toJSON (Issuing'cardCardholder'Status'EnumStringBlocked) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "blocked"
  toJSON (Issuing'cardCardholder'Status'EnumStringInactive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "inactive"

instance Data.Aeson.FromJSON Issuing'cardCardholder'Status' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active")
          then Issuing'cardCardholder'Status'EnumStringActive
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "blocked")
              then Issuing'cardCardholder'Status'EnumStringBlocked
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "inactive")
                  then Issuing'cardCardholder'Status'EnumStringInactive
                  else Issuing'cardCardholder'Status'EnumOther val
      )

-- | Defines the enum schema issuing.cardCardholder\'Type\'
--
-- One of \`individual\` or \`business_entity\`.
data Issuing'cardCardholder'Type'
  = Issuing'cardCardholder'Type'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardCardholder'Type'EnumTyped Data.Text.Internal.Text
  | Issuing'cardCardholder'Type'EnumStringBusinessEntity
  | Issuing'cardCardholder'Type'EnumStringIndividual
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardCardholder'Type' where
  toJSON (Issuing'cardCardholder'Type'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardCardholder'Type'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardCardholder'Type'EnumStringBusinessEntity) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "business_entity"
  toJSON (Issuing'cardCardholder'Type'EnumStringIndividual) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "individual"

instance Data.Aeson.FromJSON Issuing'cardCardholder'Type' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "business_entity")
          then Issuing'cardCardholder'Type'EnumStringBusinessEntity
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "individual")
              then Issuing'cardCardholder'Type'EnumStringIndividual
              else Issuing'cardCardholder'Type'EnumOther val
      )

-- | Defines the data type for the schema issuing.cardMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data Issuing'cardMetadata'
  = Issuing'cardMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardMetadata'" (\obj -> GHC.Base.pure Issuing'cardMetadata')

-- | Defines the enum schema issuing.cardObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data Issuing'cardObject'
  = Issuing'cardObject'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardObject'EnumTyped Data.Text.Internal.Text
  | Issuing'cardObject'EnumStringIssuing'card
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardObject' where
  toJSON (Issuing'cardObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardObject'EnumStringIssuing'card) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.card"

instance Data.Aeson.FromJSON Issuing'cardObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.card")
          then Issuing'cardObject'EnumStringIssuing'card
          else Issuing'cardObject'EnumOther val
      )

-- | Defines the data type for the schema issuing.cardPin\'
--
-- Metadata about the PIN on the card.
data Issuing'cardPin'
  = Issuing'cardPin'
      { -- | status: Wether the PIN will be accepted or not.
        issuing'cardPin'Status :: (GHC.Maybe.Maybe Issuing'cardPin'Status')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardPin' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "status" (issuing'cardPin'Status obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "status" (issuing'cardPin'Status obj))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardPin' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardPin'" (\obj -> GHC.Base.pure Issuing'cardPin' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status"))

-- | Defines the enum schema issuing.cardPin\'Status\'
--
-- Wether the PIN will be accepted or not.
data Issuing'cardPin'Status'
  = Issuing'cardPin'Status'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardPin'Status'EnumTyped Data.Text.Internal.Text
  | Issuing'cardPin'Status'EnumStringActive
  | Issuing'cardPin'Status'EnumStringBlocked
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardPin'Status' where
  toJSON (Issuing'cardPin'Status'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardPin'Status'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardPin'Status'EnumStringActive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active"
  toJSON (Issuing'cardPin'Status'EnumStringBlocked) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "blocked"

instance Data.Aeson.FromJSON Issuing'cardPin'Status' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active")
          then Issuing'cardPin'Status'EnumStringActive
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "blocked")
              then Issuing'cardPin'Status'EnumStringBlocked
              else Issuing'cardPin'Status'EnumOther val
      )

-- | Define the one-of schema issuing.cardReplacement_for\'
--
-- The card this card replaces, if any.
data Issuing'cardReplacementFor'Variants
  = Issuing'cardReplacementFor'Issuing'card Issuing'card
  | Issuing'cardReplacementFor'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Issuing'cardReplacementFor'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Issuing'cardReplacementFor'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema issuing.cardReplacement_reason\'
--
-- The reason why the previous card needed to be replaced.
data Issuing'cardReplacementReason'
  = Issuing'cardReplacementReason'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardReplacementReason'EnumTyped Data.Text.Internal.Text
  | Issuing'cardReplacementReason'EnumStringDamage
  | Issuing'cardReplacementReason'EnumStringExpiration
  | Issuing'cardReplacementReason'EnumStringLoss
  | Issuing'cardReplacementReason'EnumStringTheft
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardReplacementReason' where
  toJSON (Issuing'cardReplacementReason'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardReplacementReason'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardReplacementReason'EnumStringDamage) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "damage"
  toJSON (Issuing'cardReplacementReason'EnumStringExpiration) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "expiration"
  toJSON (Issuing'cardReplacementReason'EnumStringLoss) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "loss"
  toJSON (Issuing'cardReplacementReason'EnumStringTheft) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "theft"

instance Data.Aeson.FromJSON Issuing'cardReplacementReason' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "damage")
          then Issuing'cardReplacementReason'EnumStringDamage
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "expiration")
              then Issuing'cardReplacementReason'EnumStringExpiration
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "loss")
                  then Issuing'cardReplacementReason'EnumStringLoss
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "theft")
                      then Issuing'cardReplacementReason'EnumStringTheft
                      else Issuing'cardReplacementReason'EnumOther val
      )

-- | Defines the data type for the schema issuing.cardShipping\'
--
-- Where and how the card will be shipped.
data Issuing'cardShipping'
  = Issuing'cardShipping'
      { -- | address:
        issuing'cardShipping'Address :: (GHC.Maybe.Maybe Address),
        -- | carrier: The delivery company that shipped a card.
        issuing'cardShipping'Carrier :: (GHC.Maybe.Maybe Issuing'cardShipping'Carrier'),
        -- | eta: A unix timestamp representing a best estimate of when the card will be delivered.
        issuing'cardShipping'Eta :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | name: Recipient name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardShipping'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | speed: Shipment speed.
        issuing'cardShipping'Speed :: (GHC.Maybe.Maybe Issuing'cardShipping'Speed'),
        -- | status: The delivery status of the card.
        issuing'cardShipping'Status :: (GHC.Maybe.Maybe Issuing'cardShipping'Status'),
        -- | tracking_number: A tracking number for a card shipment.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardShipping'TrackingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | tracking_url: A link to the shipping carrier\'s site where you can view detailed information about a card shipment.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardShipping'TrackingUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | type: Packaging options.
        issuing'cardShipping'Type :: (GHC.Maybe.Maybe Issuing'cardShipping'Type')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardShipping' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (issuing'cardShipping'Address obj) : (Data.Aeson..=) "carrier" (issuing'cardShipping'Carrier obj) : (Data.Aeson..=) "eta" (issuing'cardShipping'Eta obj) : (Data.Aeson..=) "name" (issuing'cardShipping'Name obj) : (Data.Aeson..=) "speed" (issuing'cardShipping'Speed obj) : (Data.Aeson..=) "status" (issuing'cardShipping'Status obj) : (Data.Aeson..=) "tracking_number" (issuing'cardShipping'TrackingNumber obj) : (Data.Aeson..=) "tracking_url" (issuing'cardShipping'TrackingUrl obj) : (Data.Aeson..=) "type" (issuing'cardShipping'Type obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (issuing'cardShipping'Address obj) GHC.Base.<> ((Data.Aeson..=) "carrier" (issuing'cardShipping'Carrier obj) GHC.Base.<> ((Data.Aeson..=) "eta" (issuing'cardShipping'Eta obj) GHC.Base.<> ((Data.Aeson..=) "name" (issuing'cardShipping'Name obj) GHC.Base.<> ((Data.Aeson..=) "speed" (issuing'cardShipping'Speed obj) GHC.Base.<> ((Data.Aeson..=) "status" (issuing'cardShipping'Status obj) GHC.Base.<> ((Data.Aeson..=) "tracking_number" (issuing'cardShipping'TrackingNumber obj) GHC.Base.<> ((Data.Aeson..=) "tracking_url" (issuing'cardShipping'TrackingUrl obj) GHC.Base.<> (Data.Aeson..=) "type" (issuing'cardShipping'Type obj)))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardShipping' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardShipping'" (\obj -> ((((((((GHC.Base.pure Issuing'cardShipping' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "carrier")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "eta")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "speed")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tracking_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tracking_url")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type"))

-- | Defines the enum schema issuing.cardShipping\'Carrier\'
--
-- The delivery company that shipped a card.
data Issuing'cardShipping'Carrier'
  = Issuing'cardShipping'Carrier'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardShipping'Carrier'EnumTyped Data.Text.Internal.Text
  | Issuing'cardShipping'Carrier'EnumStringFedex
  | Issuing'cardShipping'Carrier'EnumStringUsps
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardShipping'Carrier' where
  toJSON (Issuing'cardShipping'Carrier'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardShipping'Carrier'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardShipping'Carrier'EnumStringFedex) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fedex"
  toJSON (Issuing'cardShipping'Carrier'EnumStringUsps) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "usps"

instance Data.Aeson.FromJSON Issuing'cardShipping'Carrier' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fedex")
          then Issuing'cardShipping'Carrier'EnumStringFedex
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "usps")
              then Issuing'cardShipping'Carrier'EnumStringUsps
              else Issuing'cardShipping'Carrier'EnumOther val
      )

-- | Defines the enum schema issuing.cardShipping\'Speed\'
--
-- Shipment speed.
data Issuing'cardShipping'Speed'
  = Issuing'cardShipping'Speed'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardShipping'Speed'EnumTyped Data.Text.Internal.Text
  | Issuing'cardShipping'Speed'EnumStringExpress
  | Issuing'cardShipping'Speed'EnumStringOvernight
  | Issuing'cardShipping'Speed'EnumStringStandard
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardShipping'Speed' where
  toJSON (Issuing'cardShipping'Speed'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardShipping'Speed'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardShipping'Speed'EnumStringExpress) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "express"
  toJSON (Issuing'cardShipping'Speed'EnumStringOvernight) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "overnight"
  toJSON (Issuing'cardShipping'Speed'EnumStringStandard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard"

instance Data.Aeson.FromJSON Issuing'cardShipping'Speed' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "express")
          then Issuing'cardShipping'Speed'EnumStringExpress
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "overnight")
              then Issuing'cardShipping'Speed'EnumStringOvernight
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard")
                  then Issuing'cardShipping'Speed'EnumStringStandard
                  else Issuing'cardShipping'Speed'EnumOther val
      )

-- | Defines the enum schema issuing.cardShipping\'Status\'
--
-- The delivery status of the card.
data Issuing'cardShipping'Status'
  = Issuing'cardShipping'Status'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardShipping'Status'EnumTyped Data.Text.Internal.Text
  | Issuing'cardShipping'Status'EnumStringCanceled
  | Issuing'cardShipping'Status'EnumStringDelivered
  | Issuing'cardShipping'Status'EnumStringFailure
  | Issuing'cardShipping'Status'EnumStringPending
  | Issuing'cardShipping'Status'EnumStringReturned
  | Issuing'cardShipping'Status'EnumStringShipped
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardShipping'Status' where
  toJSON (Issuing'cardShipping'Status'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardShipping'Status'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardShipping'Status'EnumStringCanceled) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "canceled"
  toJSON (Issuing'cardShipping'Status'EnumStringDelivered) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "delivered"
  toJSON (Issuing'cardShipping'Status'EnumStringFailure) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "failure"
  toJSON (Issuing'cardShipping'Status'EnumStringPending) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pending"
  toJSON (Issuing'cardShipping'Status'EnumStringReturned) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "returned"
  toJSON (Issuing'cardShipping'Status'EnumStringShipped) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shipped"

instance Data.Aeson.FromJSON Issuing'cardShipping'Status' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "canceled")
          then Issuing'cardShipping'Status'EnumStringCanceled
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "delivered")
              then Issuing'cardShipping'Status'EnumStringDelivered
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "failure")
                  then Issuing'cardShipping'Status'EnumStringFailure
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pending")
                      then Issuing'cardShipping'Status'EnumStringPending
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "returned")
                          then Issuing'cardShipping'Status'EnumStringReturned
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shipped")
                              then Issuing'cardShipping'Status'EnumStringShipped
                              else Issuing'cardShipping'Status'EnumOther val
      )

-- | Defines the enum schema issuing.cardShipping\'Type\'
--
-- Packaging options.
data Issuing'cardShipping'Type'
  = Issuing'cardShipping'Type'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardShipping'Type'EnumTyped Data.Text.Internal.Text
  | Issuing'cardShipping'Type'EnumStringBulk
  | Issuing'cardShipping'Type'EnumStringIndividual
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardShipping'Type' where
  toJSON (Issuing'cardShipping'Type'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardShipping'Type'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardShipping'Type'EnumStringBulk) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bulk"
  toJSON (Issuing'cardShipping'Type'EnumStringIndividual) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "individual"

instance Data.Aeson.FromJSON Issuing'cardShipping'Type' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bulk")
          then Issuing'cardShipping'Type'EnumStringBulk
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "individual")
              then Issuing'cardShipping'Type'EnumStringIndividual
              else Issuing'cardShipping'Type'EnumOther val
      )

-- | Defines the enum schema issuing.cardStatus\'
--
-- Whether authorizations can be approved on this card.
data Issuing'cardStatus'
  = Issuing'cardStatus'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardStatus'EnumTyped Data.Text.Internal.Text
  | Issuing'cardStatus'EnumStringActive
  | Issuing'cardStatus'EnumStringCanceled
  | Issuing'cardStatus'EnumStringInactive
  | Issuing'cardStatus'EnumStringLost
  | Issuing'cardStatus'EnumStringStolen
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardStatus' where
  toJSON (Issuing'cardStatus'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardStatus'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardStatus'EnumStringActive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active"
  toJSON (Issuing'cardStatus'EnumStringCanceled) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "canceled"
  toJSON (Issuing'cardStatus'EnumStringInactive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "inactive"
  toJSON (Issuing'cardStatus'EnumStringLost) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "lost"
  toJSON (Issuing'cardStatus'EnumStringStolen) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stolen"

instance Data.Aeson.FromJSON Issuing'cardStatus' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active")
          then Issuing'cardStatus'EnumStringActive
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "canceled")
              then Issuing'cardStatus'EnumStringCanceled
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "inactive")
                  then Issuing'cardStatus'EnumStringInactive
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "lost")
                      then Issuing'cardStatus'EnumStringLost
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stolen")
                          then Issuing'cardStatus'EnumStringStolen
                          else Issuing'cardStatus'EnumOther val
      )

-- | Defines the enum schema issuing.cardType\'
--
-- The type of the card.
data Issuing'cardType'
  = Issuing'cardType'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardType'EnumTyped Data.Text.Internal.Text
  | Issuing'cardType'EnumStringPhysical
  | Issuing'cardType'EnumStringVirtual
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardType' where
  toJSON (Issuing'cardType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardType'EnumStringPhysical) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "physical"
  toJSON (Issuing'cardType'EnumStringVirtual) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "virtual"

instance Data.Aeson.FromJSON Issuing'cardType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "physical")
          then Issuing'cardType'EnumStringPhysical
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "virtual")
              then Issuing'cardType'EnumStringVirtual
              else Issuing'cardType'EnumOther val
      )

-- | Defines the data type for the schema issuing.card_details
data Issuing'cardDetails
  = Issuing'cardDetails
      { -- | card: You can [create physical or virtual cards](https:\/\/stripe.com\/docs\/issuing\/cards) that are issued to cardholders.
        issuing'cardDetailsCard :: Issuing'card,
        -- | cvc: The CVC number for the card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardDetailsCvc :: Data.Text.Internal.Text,
        -- | exp_month: The expiration month of the card.
        issuing'cardDetailsExpMonth :: GHC.Integer.Type.Integer,
        -- | exp_year: The expiration year of the card.
        issuing'cardDetailsExpYear :: GHC.Integer.Type.Integer,
        -- | number: The card number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardDetailsNumber :: Data.Text.Internal.Text,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        issuing'cardDetailsObject :: Issuing'cardDetailsObject'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardDetails where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "card" (issuing'cardDetailsCard obj) : (Data.Aeson..=) "cvc" (issuing'cardDetailsCvc obj) : (Data.Aeson..=) "exp_month" (issuing'cardDetailsExpMonth obj) : (Data.Aeson..=) "exp_year" (issuing'cardDetailsExpYear obj) : (Data.Aeson..=) "number" (issuing'cardDetailsNumber obj) : (Data.Aeson..=) "object" (issuing'cardDetailsObject obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "card" (issuing'cardDetailsCard obj) GHC.Base.<> ((Data.Aeson..=) "cvc" (issuing'cardDetailsCvc obj) GHC.Base.<> ((Data.Aeson..=) "exp_month" (issuing'cardDetailsExpMonth obj) GHC.Base.<> ((Data.Aeson..=) "exp_year" (issuing'cardDetailsExpYear obj) GHC.Base.<> ((Data.Aeson..=) "number" (issuing'cardDetailsNumber obj) GHC.Base.<> (Data.Aeson..=) "object" (issuing'cardDetailsObject obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardDetails where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardDetails" (\obj -> (((((GHC.Base.pure Issuing'cardDetails GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "cvc")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object"))

-- | Defines the enum schema issuing.card_detailsObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data Issuing'cardDetailsObject'
  = Issuing'cardDetailsObject'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardDetailsObject'EnumTyped Data.Text.Internal.Text
  | Issuing'cardDetailsObject'EnumStringIssuing'cardDetails
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardDetailsObject' where
  toJSON (Issuing'cardDetailsObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardDetailsObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardDetailsObject'EnumStringIssuing'cardDetails) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.card_details"

instance Data.Aeson.FromJSON Issuing'cardDetailsObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.card_details")
          then Issuing'cardDetailsObject'EnumStringIssuing'cardDetails
          else Issuing'cardDetailsObject'EnumOther val
      )

-- | Defines the data type for the schema issuing.card_pin
--
-- The PIN of a \`Card\` object
data Issuing'cardPin
  = Issuing'cardPin
      { -- | card: You can [create physical or virtual cards](https:\/\/stripe.com\/docs\/issuing\/cards) that are issued to cardholders.
        issuing'cardPinCard :: Issuing'card,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        issuing'cardPinObject :: Issuing'cardPinObject',
        -- | pin: The PIN (4 digits number)
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardPinPin :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardPin where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "card" (issuing'cardPinCard obj) : (Data.Aeson..=) "object" (issuing'cardPinObject obj) : (Data.Aeson..=) "pin" (issuing'cardPinPin obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "card" (issuing'cardPinCard obj) GHC.Base.<> ((Data.Aeson..=) "object" (issuing'cardPinObject obj) GHC.Base.<> (Data.Aeson..=) "pin" (issuing'cardPinPin obj)))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardPin where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardPin" (\obj -> ((GHC.Base.pure Issuing'cardPin GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "pin"))

-- | Defines the enum schema issuing.card_pinObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data Issuing'cardPinObject'
  = Issuing'cardPinObject'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardPinObject'EnumTyped Data.Text.Internal.Text
  | Issuing'cardPinObject'EnumStringIssuing'cardPin
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardPinObject' where
  toJSON (Issuing'cardPinObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardPinObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardPinObject'EnumStringIssuing'cardPin) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.card_pin"

instance Data.Aeson.FromJSON Issuing'cardPinObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.card_pin")
          then Issuing'cardPinObject'EnumStringIssuing'cardPin
          else Issuing'cardPinObject'EnumOther val
      )

-- | Defines the data type for the schema issuing.cardholder
--
-- An Issuing \`Cardholder\` object represents an individual or business entity who is [issued](https:\/\/stripe.com\/docs\/issuing) cards.
--
-- Related guide: [How to create a Cardholder](https:\/\/stripe.com\/docs\/issuing\/cards\#create-cardholder)
data Issuing'cardholder
  = Issuing'cardholder
      { -- | authorization_controls: Spending rules that give you some control over how this cardholder\'s cards can be used. Refer to our [authorizations](https:\/\/stripe.com\/docs\/issuing\/authorizations) documentation for more details.
        issuing'cardholderAuthorizationControls :: (GHC.Maybe.Maybe Issuing'cardholderAuthorizationControls'),
        -- | billing:
        issuing'cardholderBilling :: IssuingCardholderAddress,
        -- | company: Additional information about a \`business_entity\` cardholder.
        issuing'cardholderCompany :: (GHC.Maybe.Maybe Issuing'cardholderCompany'),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        issuing'cardholderCreated :: GHC.Integer.Type.Integer,
        -- | email: The cardholder\'s email address.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardholderEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardholderId :: Data.Text.Internal.Text,
        -- | individual: Additional information about an \`individual\` cardholder.
        issuing'cardholderIndividual :: (GHC.Maybe.Maybe Issuing'cardholderIndividual'),
        -- | is_default: Whether or not this cardholder is the default cardholder.
        issuing'cardholderIsDefault :: GHC.Types.Bool,
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        issuing'cardholderLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        issuing'cardholderMetadata :: Issuing'cardholderMetadata',
        -- | name: The cardholder\'s name. This will be printed on cards issued to them.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardholderName :: Data.Text.Internal.Text,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        issuing'cardholderObject :: Issuing'cardholderObject',
        -- | phone_number: The cardholder\'s phone number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardholderPhoneNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | requirements:
        issuing'cardholderRequirements :: IssuingCardholderRequirements,
        -- | status: Specifies whether to permit authorizations on this cardholder\'s cards.
        issuing'cardholderStatus :: Issuing'cardholderStatus',
        -- | type: One of \`individual\` or \`business_entity\`.
        issuing'cardholderType :: Issuing'cardholderType'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardholder where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "authorization_controls" (issuing'cardholderAuthorizationControls obj) : (Data.Aeson..=) "billing" (issuing'cardholderBilling obj) : (Data.Aeson..=) "company" (issuing'cardholderCompany obj) : (Data.Aeson..=) "created" (issuing'cardholderCreated obj) : (Data.Aeson..=) "email" (issuing'cardholderEmail obj) : (Data.Aeson..=) "id" (issuing'cardholderId obj) : (Data.Aeson..=) "individual" (issuing'cardholderIndividual obj) : (Data.Aeson..=) "is_default" (issuing'cardholderIsDefault obj) : (Data.Aeson..=) "livemode" (issuing'cardholderLivemode obj) : (Data.Aeson..=) "metadata" (issuing'cardholderMetadata obj) : (Data.Aeson..=) "name" (issuing'cardholderName obj) : (Data.Aeson..=) "object" (issuing'cardholderObject obj) : (Data.Aeson..=) "phone_number" (issuing'cardholderPhoneNumber obj) : (Data.Aeson..=) "requirements" (issuing'cardholderRequirements obj) : (Data.Aeson..=) "status" (issuing'cardholderStatus obj) : (Data.Aeson..=) "type" (issuing'cardholderType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "authorization_controls" (issuing'cardholderAuthorizationControls obj) GHC.Base.<> ((Data.Aeson..=) "billing" (issuing'cardholderBilling obj) GHC.Base.<> ((Data.Aeson..=) "company" (issuing'cardholderCompany obj) GHC.Base.<> ((Data.Aeson..=) "created" (issuing'cardholderCreated obj) GHC.Base.<> ((Data.Aeson..=) "email" (issuing'cardholderEmail obj) GHC.Base.<> ((Data.Aeson..=) "id" (issuing'cardholderId obj) GHC.Base.<> ((Data.Aeson..=) "individual" (issuing'cardholderIndividual obj) GHC.Base.<> ((Data.Aeson..=) "is_default" (issuing'cardholderIsDefault obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (issuing'cardholderLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (issuing'cardholderMetadata obj) GHC.Base.<> ((Data.Aeson..=) "name" (issuing'cardholderName obj) GHC.Base.<> ((Data.Aeson..=) "object" (issuing'cardholderObject obj) GHC.Base.<> ((Data.Aeson..=) "phone_number" (issuing'cardholderPhoneNumber obj) GHC.Base.<> ((Data.Aeson..=) "requirements" (issuing'cardholderRequirements obj) GHC.Base.<> ((Data.Aeson..=) "status" (issuing'cardholderStatus obj) GHC.Base.<> (Data.Aeson..=) "type" (issuing'cardholderType obj))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardholder where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardholder" (\obj -> (((((((((((((((GHC.Base.pure Issuing'cardholder GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "authorization_controls")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "billing")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "company")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "individual")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "is_default")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "requirements")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type"))

-- | Defines the data type for the schema issuing.cardholderAuthorization_controls\'
--
-- Spending rules that give you some control over how this cardholder\\\'s cards can be used. Refer to our [authorizations](https:\\\/\\\/stripe.com\\\/docs\\\/issuing\\\/authorizations) documentation for more details.
data Issuing'cardholderAuthorizationControls'
  = Issuing'cardholderAuthorizationControls'
      { -- | allowed_categories: Array of strings containing [categories](https:\/\/stripe.com\/docs\/api\#issuing_authorization_object-merchant_data-category) of authorizations permitted on this cardholder\'s cards.
        issuing'cardholderAuthorizationControls'AllowedCategories :: (GHC.Maybe.Maybe ([] Issuing'cardholderAuthorizationControls'AllowedCategories')),
        -- | blocked_categories: Array of strings containing [categories](https:\/\/stripe.com\/docs\/api\#issuing_authorization_object-merchant_data-category) of authorizations to always decline on this cardholder\'s cards.
        issuing'cardholderAuthorizationControls'BlockedCategories :: (GHC.Maybe.Maybe ([] Issuing'cardholderAuthorizationControls'BlockedCategories')),
        -- | spending_limits: Limit the spending with rules based on time intervals and categories.
        issuing'cardholderAuthorizationControls'SpendingLimits :: (GHC.Maybe.Maybe ([] IssuingCardholderSpendingLimit)),
        -- | spending_limits_currency: Currency for the amounts within spending_limits.
        issuing'cardholderAuthorizationControls'SpendingLimitsCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardholderAuthorizationControls' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "allowed_categories" (issuing'cardholderAuthorizationControls'AllowedCategories obj) : (Data.Aeson..=) "blocked_categories" (issuing'cardholderAuthorizationControls'BlockedCategories obj) : (Data.Aeson..=) "spending_limits" (issuing'cardholderAuthorizationControls'SpendingLimits obj) : (Data.Aeson..=) "spending_limits_currency" (issuing'cardholderAuthorizationControls'SpendingLimitsCurrency obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "allowed_categories" (issuing'cardholderAuthorizationControls'AllowedCategories obj) GHC.Base.<> ((Data.Aeson..=) "blocked_categories" (issuing'cardholderAuthorizationControls'BlockedCategories obj) GHC.Base.<> ((Data.Aeson..=) "spending_limits" (issuing'cardholderAuthorizationControls'SpendingLimits obj) GHC.Base.<> (Data.Aeson..=) "spending_limits_currency" (issuing'cardholderAuthorizationControls'SpendingLimitsCurrency obj))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardholderAuthorizationControls' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardholderAuthorizationControls'" (\obj -> (((GHC.Base.pure Issuing'cardholderAuthorizationControls' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "allowed_categories")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "blocked_categories")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "spending_limits")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "spending_limits_currency"))

-- | Defines the enum schema issuing.cardholderAuthorization_controls\'Allowed_categories\'
data Issuing'cardholderAuthorizationControls'AllowedCategories'
  = Issuing'cardholderAuthorizationControls'AllowedCategories'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumTyped Data.Text.Internal.Text
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAcRefrigerationRepair
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAccountingBookkeepingServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAdvertisingServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAgriculturalCooperative
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAirlinesAirCarriers
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAirportsFlyingFields
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAmbulanceServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAmusementParksCarnivals
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAntiqueReproductions
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAntiqueShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAquariums
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringArchitecturalSurveyingServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringArtDealersAndGalleries
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringArtistsSupplyAndCraftShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutoAndHomeSupplyStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutoBodyRepairShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutoPaintShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutoServiceShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomatedCashDisburse
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomatedFuelDispensers
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomobileAssociations
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomotivePartsAndAccessoriesStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomotiveTireStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBailAndBondPayments
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBakeries
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBandsOrchestras
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBarberAndBeautyShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBettingCasinoGambling
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBicycleShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBilliardPoolEstablishments
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBoatDealers
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBoatRentalsAndLeases
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBookStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBooksPeriodicalsAndNewspapers
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBowlingAlleys
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBusLines
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBusinessSecretarialSchools
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBuyingShoppingServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCableSatelliteAndOtherPayTelevisionAndRadio
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCameraAndPhotographicSupplyStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCandyNutAndConfectioneryStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarAndTruckDealersNewUsed
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarAndTruckDealersUsedOnly
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarRentalAgencies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarWashes
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarpentryServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarpetUpholsteryCleaning
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCaterers
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCharitableAndSocialServiceOrganizationsFundraising
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChemicalsAndAlliedProducts
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChildCareServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChildrensAndInfantsWearStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChiropodistsPodiatrists
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChiropractors
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCigarStoresAndStands
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCivicSocialFraternalAssociations
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCleaningAndMaintenance
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringClothingRental
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCollegesUniversities
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCommercialEquipment
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCommercialFootwear
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCommercialPhotographyArtAndGraphics
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCommuterTransportAndFerries
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputerNetworkServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputerProgramming
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputerRepair
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputerSoftwareStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputersPeripheralsAndSoftware
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringConcreteWorkServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringConstructionMaterials
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringConsultingPublicRelations
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCorrespondenceSchools
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCosmeticStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCounselingServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCountryClubs
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCourierServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCourtCosts
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCreditReportingAgencies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCruiseLines
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDairyProductsStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDanceHallStudiosSchools
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDatingEscortServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDentistsOrthodontists
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDepartmentStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDetectiveAgencies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDigitalGoodsApplications
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDigitalGoodsGames
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDigitalGoodsLargeVolume
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDigitalGoodsMedia
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingCatalogMerchant
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingCombinationCatalogAndRetailMerchant
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingInboundTelemarketing
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingInsuranceServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingOther
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingOutboundTelemarketing
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingSubscription
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingTravel
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDiscountStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDoctors
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDoorToDoorSales
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDraperyWindowCoveringAndUpholsteryStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDrinkingPlaces
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDrugStoresAndPharmacies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDrugsDrugProprietariesAndDruggistSundries
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDryCleaners
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDurableGoods
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDutyFreeStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringEatingPlacesRestaurants
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringEducationalServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectricRazorStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectricalPartsAndEquipment
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectricalServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectronicsRepairShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectronicsStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElementarySecondarySchools
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringEmploymentTempAgencies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringEquipmentRental
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringExterminatingServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFamilyClothingStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFastFoodRestaurants
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFinancialInstitutions
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFinesGovernmentAdministrativeEntities
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFireplaceFireplaceScreensAndAccessoriesStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFloorCoveringStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFlorists
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFloristsSuppliesNurseryStockAndFlowers
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFreezerAndLockerMeatProvisioners
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFuelDealersNonAutomotive
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFuneralServicesCrematories
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFurnitureRepairRefinishing
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFurriersAndFurShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGeneralServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGiftCardNoveltyAndSouvenirShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGlassPaintAndWallpaperStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGlasswareCrystalStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGolfCoursesPublic
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGovernmentServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGroceryStoresSupermarkets
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHardwareEquipmentAndSupplies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHardwareStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHealthAndBeautySpas
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHearingAidsSalesAndSupplies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHeatingPlumbingAC
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHobbyToyAndGameShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHomeSupplyWarehouseStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHospitals
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHotelsMotelsAndResorts
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHouseholdApplianceStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringIndustrialSupplies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringInformationRetrievalServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringInsuranceDefault
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringInsuranceUnderwritingPremiums
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringIntraCompanyPurchases
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringJewelryStoresWatchesClocksAndSilverwareStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLandscapingServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLaundries
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLaundryCleaningServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLegalServicesAttorneys
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLuggageAndLeatherGoodsStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLumberBuildingMaterialsStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringManualCashDisburse
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMarinasServiceAndSupplies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMasonryStoneworkAndPlaster
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMassageParlors
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMedicalAndDentalLabs
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMedicalDentalOphthalmicAndHospitalEquipmentAndSupplies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMedicalServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMembershipOrganizations
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMensAndBoysClothingAndAccessoriesStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMensWomensClothingStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMetalServiceCenters
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneous
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousApparelAndAccessoryShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousAutoDealers
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousBusinessServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousFoodStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousGeneralMerchandise
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousGeneralServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousHomeFurnishingSpecialtyStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousPublishingAndPrinting
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousRecreationServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousRepairShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousSpecialtyRetail
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMobileHomeDealers
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotionPictureTheaters
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorFreightCarriersAndTrucking
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorHomesDealers
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorVehicleSuppliesAndNewParts
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorcycleShopsAndDealers
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorcycleShopsDealers
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMusicStoresMusicalInstrumentsPianosAndSheetMusic
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNewsDealersAndNewsstands
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNonFiMoneyOrders
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNonFiStoredValueCardPurchaseLoad
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNondurableGoods
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNurseriesLawnAndGardenSupplyStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNursingPersonalCare
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOfficeAndCommercialFurniture
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOpticiansEyeglasses
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOptometristsOphthalmologist
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOrthopedicGoodsProstheticDevices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOsteopaths
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPackageStoresBeerWineAndLiquor
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPaintsVarnishesAndSupplies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringParkingLotsGarages
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPassengerRailways
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPawnShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPetShopsPetFoodAndSupplies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPetroleumAndPetroleumProducts
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPhotoDeveloping
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPhotographicPhotocopyMicrofilmEquipmentAndSupplies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPhotographicStudios
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPictureVideoProduction
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPieceGoodsNotionsAndOtherDryGoods
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPlumbingHeatingEquipmentAndSupplies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPoliticalOrganizations
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPostalServicesGovernmentOnly
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPreciousStonesAndMetalsWatchesAndJewelry
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringProfessionalServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPublicWarehousingAndStorage
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringQuickCopyReproAndBlueprint
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRailroads
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRealEstateAgentsAndManagersRentals
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRecordStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRecreationalVehicleRentals
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringReligiousGoodsStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringReligiousOrganizations
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRoofingSidingSheetMetal
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSecretarialSupportServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSecurityBrokersDealers
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringServiceStations
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSewingNeedleworkFabricAndPieceGoodsStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringShoeRepairHatCleaning
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringShoeStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSmallApplianceRepair
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSnowmobileDealers
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSpecialTradeServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSpecialtyCleaning
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSportingGoodsStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSportingRecreationCamps
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSportsAndRidingApparelStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSportsClubsFields
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringStampAndCoinStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringStationaryOfficeSuppliesPrintingAndWritingPaper
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringStationeryStoresOfficeAndSchoolSupplyStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSwimmingPoolsSales
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTUiTravelGermany
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTailorsAlterations
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTaxPaymentsGovernmentAgencies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTaxPreparationServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTaxicabsLimousines
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTelecommunicationEquipmentAndTelephoneSales
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTelecommunicationServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTelegraphServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTentAndAwningShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTestingLaboratories
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTheatricalTicketAgencies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTimeshares
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTireRetreadingAndRepair
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTollsBridgeFees
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTouristAttractionsAndExhibits
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTowingServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTrailerParksCampgrounds
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTransportationServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTravelAgenciesTourOperators
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTruckStopIteration
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTruckUtilityTrailerRentals
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTypesettingPlateMakingAndRelatedServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTypewriterStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringUSFederalGovernmentAgenciesOrDepartments
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringUniformsCommercialClothing
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringUsedMerchandiseAndSecondhandStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringUtilities
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVarietyStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVeterinaryServices
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVideoAmusementGameSupplies
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVideoGameArcades
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVideoTapeRentalStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVocationalTradeSchools
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWatchJewelryRepair
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWeldingRepair
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWholesaleClubs
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWigAndToupeeStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWiresMoneyOrders
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWomensAccessoryAndSpecialtyShops
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWomensReadyToWearStores
  | Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWreckingAndSalvageYards
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardholderAuthorizationControls'AllowedCategories' where
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAcRefrigerationRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ac_refrigeration_repair"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAccountingBookkeepingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "accounting_bookkeeping_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAdvertisingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "advertising_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAgriculturalCooperative) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "agricultural_cooperative"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAirlinesAirCarriers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airlines_air_carriers"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAirportsFlyingFields) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airports_flying_fields"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAmbulanceServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ambulance_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAmusementParksCarnivals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amusement_parks_carnivals"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAntiqueReproductions) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_reproductions"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAntiqueShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAquariums) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "aquariums"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringArchitecturalSurveyingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "architectural_surveying_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringArtDealersAndGalleries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "art_dealers_and_galleries"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringArtistsSupplyAndCraftShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "artists_supply_and_craft_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutoAndHomeSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_and_home_supply_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutoBodyRepairShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_body_repair_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutoPaintShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_paint_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutoServiceShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_service_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomatedCashDisburse) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_cash_disburse"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomatedFuelDispensers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_fuel_dispensers"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomobileAssociations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automobile_associations"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomotivePartsAndAccessoriesStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_parts_and_accessories_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomotiveTireStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_tire_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBailAndBondPayments) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bail_and_bond_payments"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBakeries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bakeries"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBandsOrchestras) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bands_orchestras"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBarberAndBeautyShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "barber_and_beauty_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBettingCasinoGambling) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "betting_casino_gambling"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBicycleShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bicycle_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBilliardPoolEstablishments) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "billiard_pool_establishments"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBoatDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBoatRentalsAndLeases) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_rentals_and_leases"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBookStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "book_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBooksPeriodicalsAndNewspapers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "books_periodicals_and_newspapers"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBowlingAlleys) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bowling_alleys"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBusLines) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bus_lines"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBusinessSecretarialSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "business_secretarial_schools"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBuyingShoppingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "buying_shopping_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCableSatelliteAndOtherPayTelevisionAndRadio) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cable_satellite_and_other_pay_television_and_radio"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCameraAndPhotographicSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "camera_and_photographic_supply_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCandyNutAndConfectioneryStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "candy_nut_and_confectionery_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarAndTruckDealersNewUsed) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_new_used"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarAndTruckDealersUsedOnly) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_used_only"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarRentalAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_rental_agencies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarWashes) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_washes"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarpentryServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpentry_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarpetUpholsteryCleaning) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpet_upholstery_cleaning"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCaterers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "caterers"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCharitableAndSocialServiceOrganizationsFundraising) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charitable_and_social_service_organizations_fundraising"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChemicalsAndAlliedProducts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chemicals_and_allied_products"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChildCareServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "child_care_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChildrensAndInfantsWearStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "childrens_and_infants_wear_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChiropodistsPodiatrists) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropodists_podiatrists"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChiropractors) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropractors"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCigarStoresAndStands) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cigar_stores_and_stands"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCivicSocialFraternalAssociations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "civic_social_fraternal_associations"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCleaningAndMaintenance) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cleaning_and_maintenance"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringClothingRental) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "clothing_rental"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCollegesUniversities) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "colleges_universities"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCommercialEquipment) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_equipment"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCommercialFootwear) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_footwear"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCommercialPhotographyArtAndGraphics) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_photography_art_and_graphics"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCommuterTransportAndFerries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commuter_transport_and_ferries"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputerNetworkServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_network_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputerProgramming) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_programming"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputerRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_repair"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputerSoftwareStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_software_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputersPeripheralsAndSoftware) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computers_peripherals_and_software"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringConcreteWorkServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "concrete_work_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringConstructionMaterials) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "construction_materials"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringConsultingPublicRelations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "consulting_public_relations"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCorrespondenceSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "correspondence_schools"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCosmeticStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cosmetic_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCounselingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "counseling_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCountryClubs) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "country_clubs"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCourierServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "courier_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCourtCosts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "court_costs"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCreditReportingAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "credit_reporting_agencies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCruiseLines) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cruise_lines"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDairyProductsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dairy_products_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDanceHallStudiosSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dance_hall_studios_schools"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDatingEscortServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dating_escort_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDentistsOrthodontists) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dentists_orthodontists"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDepartmentStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "department_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDetectiveAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "detective_agencies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDigitalGoodsApplications) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_applications"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDigitalGoodsGames) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_games"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDigitalGoodsLargeVolume) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_large_volume"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDigitalGoodsMedia) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_media"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingCatalogMerchant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_catalog_merchant"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingCombinationCatalogAndRetailMerchant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_combination_catalog_and_retail_merchant"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingInboundTelemarketing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_inbound_telemarketing"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingInsuranceServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_insurance_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingOther) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_other"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingOutboundTelemarketing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_outbound_telemarketing"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingSubscription) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_subscription"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingTravel) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_travel"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDiscountStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDoctors) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "doctors"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDoorToDoorSales) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "door_to_door_sales"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDraperyWindowCoveringAndUpholsteryStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drapery_window_covering_and_upholstery_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDrinkingPlaces) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drinking_places"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDrugStoresAndPharmacies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drug_stores_and_pharmacies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDrugsDrugProprietariesAndDruggistSundries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drugs_drug_proprietaries_and_druggist_sundries"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDryCleaners) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dry_cleaners"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDurableGoods) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "durable_goods"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDutyFreeStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "duty_free_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringEatingPlacesRestaurants) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eating_places_restaurants"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringEducationalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "educational_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectricRazorStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electric_razor_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectricalPartsAndEquipment) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_parts_and_equipment"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectricalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectronicsRepairShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_repair_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectronicsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElementarySecondarySchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "elementary_secondary_schools"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringEmploymentTempAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "employment_temp_agencies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringEquipmentRental) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "equipment_rental"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringExterminatingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "exterminating_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFamilyClothingStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "family_clothing_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFastFoodRestaurants) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fast_food_restaurants"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFinancialInstitutions) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "financial_institutions"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFinesGovernmentAdministrativeEntities) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fines_government_administrative_entities"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFireplaceFireplaceScreensAndAccessoriesStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fireplace_fireplace_screens_and_accessories_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFloorCoveringStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "floor_covering_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFlorists) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFloristsSuppliesNurseryStockAndFlowers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists_supplies_nursery_stock_and_flowers"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFreezerAndLockerMeatProvisioners) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "freezer_and_locker_meat_provisioners"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFuelDealersNonAutomotive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fuel_dealers_non_automotive"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFuneralServicesCrematories) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "funeral_services_crematories"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_home_furnishings_and_equipment_stores_except_appliances"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFurnitureRepairRefinishing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_repair_refinishing"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFurriersAndFurShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furriers_and_fur_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGeneralServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "general_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGiftCardNoveltyAndSouvenirShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "gift_card_novelty_and_souvenir_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGlassPaintAndWallpaperStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glass_paint_and_wallpaper_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGlasswareCrystalStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glassware_crystal_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGolfCoursesPublic) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "golf_courses_public"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGovernmentServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "government_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGroceryStoresSupermarkets) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "grocery_stores_supermarkets"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHardwareEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_equipment_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHardwareStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHealthAndBeautySpas) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "health_and_beauty_spas"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHearingAidsSalesAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hearing_aids_sales_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHeatingPlumbingAC) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "heating_plumbing_a_c"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHobbyToyAndGameShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hobby_toy_and_game_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHomeSupplyWarehouseStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "home_supply_warehouse_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHospitals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hospitals"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHotelsMotelsAndResorts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hotels_motels_and_resorts"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHouseholdApplianceStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "household_appliance_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringIndustrialSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "industrial_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringInformationRetrievalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "information_retrieval_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringInsuranceDefault) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_default"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringInsuranceUnderwritingPremiums) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_underwriting_premiums"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringIntraCompanyPurchases) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "intra_company_purchases"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringJewelryStoresWatchesClocksAndSilverwareStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "jewelry_stores_watches_clocks_and_silverware_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLandscapingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "landscaping_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLaundries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundries"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLaundryCleaningServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundry_cleaning_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLegalServicesAttorneys) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "legal_services_attorneys"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLuggageAndLeatherGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "luggage_and_leather_goods_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLumberBuildingMaterialsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "lumber_building_materials_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringManualCashDisburse) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual_cash_disburse"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMarinasServiceAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "marinas_service_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMasonryStoneworkAndPlaster) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masonry_stonework_and_plaster"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMassageParlors) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "massage_parlors"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMedicalAndDentalLabs) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_and_dental_labs"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMedicalDentalOphthalmicAndHospitalEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_dental_ophthalmic_and_hospital_equipment_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMedicalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMembershipOrganizations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "membership_organizations"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMensAndBoysClothingAndAccessoriesStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_and_boys_clothing_and_accessories_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMensWomensClothingStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_womens_clothing_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMetalServiceCenters) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metal_service_centers"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneous) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousApparelAndAccessoryShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_apparel_and_accessory_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousAutoDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_auto_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousBusinessServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_business_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousFoodStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_food_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousGeneralMerchandise) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_merchandise"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousGeneralServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousHomeFurnishingSpecialtyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_home_furnishing_specialty_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousPublishingAndPrinting) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_publishing_and_printing"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousRecreationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_recreation_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousRepairShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_repair_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousSpecialtyRetail) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_specialty_retail"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMobileHomeDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mobile_home_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotionPictureTheaters) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motion_picture_theaters"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorFreightCarriersAndTrucking) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_freight_carriers_and_trucking"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorHomesDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_homes_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorVehicleSuppliesAndNewParts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_vehicle_supplies_and_new_parts"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorcycleShopsAndDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_and_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorcycleShopsDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMusicStoresMusicalInstrumentsPianosAndSheetMusic) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "music_stores_musical_instruments_pianos_and_sheet_music"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNewsDealersAndNewsstands) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "news_dealers_and_newsstands"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNonFiMoneyOrders) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_money_orders"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNonFiStoredValueCardPurchaseLoad) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_stored_value_card_purchase_load"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNondurableGoods) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nondurable_goods"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNurseriesLawnAndGardenSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nurseries_lawn_and_garden_supply_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNursingPersonalCare) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nursing_personal_care"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOfficeAndCommercialFurniture) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "office_and_commercial_furniture"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOpticiansEyeglasses) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "opticians_eyeglasses"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOptometristsOphthalmologist) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "optometrists_ophthalmologist"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOrthopedicGoodsProstheticDevices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "orthopedic_goods_prosthetic_devices"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOsteopaths) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "osteopaths"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPackageStoresBeerWineAndLiquor) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "package_stores_beer_wine_and_liquor"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPaintsVarnishesAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "paints_varnishes_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringParkingLotsGarages) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "parking_lots_garages"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPassengerRailways) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "passenger_railways"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPawnShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pawn_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPetShopsPetFoodAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pet_shops_pet_food_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPetroleumAndPetroleumProducts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "petroleum_and_petroleum_products"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPhotoDeveloping) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photo_developing"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPhotographicPhotocopyMicrofilmEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_photocopy_microfilm_equipment_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPhotographicStudios) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_studios"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPictureVideoProduction) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "picture_video_production"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPieceGoodsNotionsAndOtherDryGoods) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "piece_goods_notions_and_other_dry_goods"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPlumbingHeatingEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plumbing_heating_equipment_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPoliticalOrganizations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "political_organizations"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPostalServicesGovernmentOnly) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "postal_services_government_only"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPreciousStonesAndMetalsWatchesAndJewelry) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "precious_stones_and_metals_watches_and_jewelry"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringProfessionalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "professional_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPublicWarehousingAndStorage) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "public_warehousing_and_storage"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringQuickCopyReproAndBlueprint) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "quick_copy_repro_and_blueprint"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRailroads) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "railroads"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRealEstateAgentsAndManagersRentals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "real_estate_agents_and_managers_rentals"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRecordStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "record_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRecreationalVehicleRentals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "recreational_vehicle_rentals"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringReligiousGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_goods_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringReligiousOrganizations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_organizations"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRoofingSidingSheetMetal) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "roofing_siding_sheet_metal"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSecretarialSupportServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "secretarial_support_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSecurityBrokersDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "security_brokers_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringServiceStations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "service_stations"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSewingNeedleworkFabricAndPieceGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sewing_needlework_fabric_and_piece_goods_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringShoeRepairHatCleaning) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_repair_hat_cleaning"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringShoeStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSmallApplianceRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "small_appliance_repair"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSnowmobileDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "snowmobile_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSpecialTradeServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "special_trade_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSpecialtyCleaning) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "specialty_cleaning"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSportingGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_goods_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSportingRecreationCamps) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_recreation_camps"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSportsAndRidingApparelStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_and_riding_apparel_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSportsClubsFields) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_clubs_fields"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringStampAndCoinStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stamp_and_coin_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringStationaryOfficeSuppliesPrintingAndWritingPaper) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationary_office_supplies_printing_and_writing_paper"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringStationeryStoresOfficeAndSchoolSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationery_stores_office_and_school_supply_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSwimmingPoolsSales) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "swimming_pools_sales"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTUiTravelGermany) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "t_ui_travel_germany"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTailorsAlterations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tailors_alterations"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTaxPaymentsGovernmentAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_payments_government_agencies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTaxPreparationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_preparation_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTaxicabsLimousines) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "taxicabs_limousines"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTelecommunicationEquipmentAndTelephoneSales) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_equipment_and_telephone_sales"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTelecommunicationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTelegraphServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telegraph_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTentAndAwningShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tent_and_awning_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTestingLaboratories) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "testing_laboratories"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTheatricalTicketAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "theatrical_ticket_agencies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTimeshares) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "timeshares"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTireRetreadingAndRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tire_retreading_and_repair"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTollsBridgeFees) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tolls_bridge_fees"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTouristAttractionsAndExhibits) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tourist_attractions_and_exhibits"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTowingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "towing_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTrailerParksCampgrounds) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "trailer_parks_campgrounds"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTransportationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transportation_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTravelAgenciesTourOperators) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "travel_agencies_tour_operators"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTruckStopIteration) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_stop_iteration"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTruckUtilityTrailerRentals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_utility_trailer_rentals"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTypesettingPlateMakingAndRelatedServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typesetting_plate_making_and_related_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTypewriterStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typewriter_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringUSFederalGovernmentAgenciesOrDepartments) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "u_s_federal_government_agencies_or_departments"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringUniformsCommercialClothing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "uniforms_commercial_clothing"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringUsedMerchandiseAndSecondhandStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "used_merchandise_and_secondhand_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringUtilities) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "utilities"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVarietyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "variety_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVeterinaryServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "veterinary_services"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVideoAmusementGameSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_amusement_game_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVideoGameArcades) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_game_arcades"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVideoTapeRentalStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_tape_rental_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVocationalTradeSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "vocational_trade_schools"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWatchJewelryRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "watch_jewelry_repair"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWeldingRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "welding_repair"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWholesaleClubs) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wholesale_clubs"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWigAndToupeeStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wig_and_toupee_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWiresMoneyOrders) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wires_money_orders"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWomensAccessoryAndSpecialtyShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_accessory_and_specialty_shops"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWomensReadyToWearStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_ready_to_wear_stores"
  toJSON (Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWreckingAndSalvageYards) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wrecking_and_salvage_yards"

instance Data.Aeson.FromJSON Issuing'cardholderAuthorizationControls'AllowedCategories' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ac_refrigeration_repair")
          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAcRefrigerationRepair
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "accounting_bookkeeping_services")
              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAccountingBookkeepingServices
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "advertising_services")
                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAdvertisingServices
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "agricultural_cooperative")
                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAgriculturalCooperative
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airlines_air_carriers")
                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAirlinesAirCarriers
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airports_flying_fields")
                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAirportsFlyingFields
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ambulance_services")
                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAmbulanceServices
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amusement_parks_carnivals")
                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAmusementParksCarnivals
                                      else
                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_reproductions")
                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAntiqueReproductions
                                          else
                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_shops")
                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAntiqueShops
                                              else
                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "aquariums")
                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAquariums
                                                  else
                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "architectural_surveying_services")
                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringArchitecturalSurveyingServices
                                                      else
                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "art_dealers_and_galleries")
                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringArtDealersAndGalleries
                                                          else
                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "artists_supply_and_craft_shops")
                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringArtistsSupplyAndCraftShops
                                                              else
                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_and_home_supply_stores")
                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutoAndHomeSupplyStores
                                                                  else
                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_body_repair_shops")
                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutoBodyRepairShops
                                                                      else
                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_paint_shops")
                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutoPaintShops
                                                                          else
                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_service_shops")
                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutoServiceShops
                                                                              else
                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_cash_disburse")
                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomatedCashDisburse
                                                                                  else
                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_fuel_dispensers")
                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomatedFuelDispensers
                                                                                      else
                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automobile_associations")
                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomobileAssociations
                                                                                          else
                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_parts_and_accessories_stores")
                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomotivePartsAndAccessoriesStores
                                                                                              else
                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_tire_stores")
                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringAutomotiveTireStores
                                                                                                  else
                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bail_and_bond_payments")
                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBailAndBondPayments
                                                                                                      else
                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bakeries")
                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBakeries
                                                                                                          else
                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bands_orchestras")
                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBandsOrchestras
                                                                                                              else
                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "barber_and_beauty_shops")
                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBarberAndBeautyShops
                                                                                                                  else
                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "betting_casino_gambling")
                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBettingCasinoGambling
                                                                                                                      else
                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bicycle_shops")
                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBicycleShops
                                                                                                                          else
                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "billiard_pool_establishments")
                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBilliardPoolEstablishments
                                                                                                                              else
                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_dealers")
                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBoatDealers
                                                                                                                                  else
                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_rentals_and_leases")
                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBoatRentalsAndLeases
                                                                                                                                      else
                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "book_stores")
                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBookStores
                                                                                                                                          else
                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "books_periodicals_and_newspapers")
                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBooksPeriodicalsAndNewspapers
                                                                                                                                              else
                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bowling_alleys")
                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBowlingAlleys
                                                                                                                                                  else
                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bus_lines")
                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBusLines
                                                                                                                                                      else
                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "business_secretarial_schools")
                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBusinessSecretarialSchools
                                                                                                                                                          else
                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "buying_shopping_services")
                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringBuyingShoppingServices
                                                                                                                                                              else
                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cable_satellite_and_other_pay_television_and_radio")
                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCableSatelliteAndOtherPayTelevisionAndRadio
                                                                                                                                                                  else
                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "camera_and_photographic_supply_stores")
                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCameraAndPhotographicSupplyStores
                                                                                                                                                                      else
                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "candy_nut_and_confectionery_stores")
                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCandyNutAndConfectioneryStores
                                                                                                                                                                          else
                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_new_used")
                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarAndTruckDealersNewUsed
                                                                                                                                                                              else
                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_used_only")
                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarAndTruckDealersUsedOnly
                                                                                                                                                                                  else
                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_rental_agencies")
                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarRentalAgencies
                                                                                                                                                                                      else
                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_washes")
                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarWashes
                                                                                                                                                                                          else
                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpentry_services")
                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarpentryServices
                                                                                                                                                                                              else
                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpet_upholstery_cleaning")
                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCarpetUpholsteryCleaning
                                                                                                                                                                                                  else
                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "caterers")
                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCaterers
                                                                                                                                                                                                      else
                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charitable_and_social_service_organizations_fundraising")
                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCharitableAndSocialServiceOrganizationsFundraising
                                                                                                                                                                                                          else
                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chemicals_and_allied_products")
                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChemicalsAndAlliedProducts
                                                                                                                                                                                                              else
                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "child_care_services")
                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChildCareServices
                                                                                                                                                                                                                  else
                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "childrens_and_infants_wear_stores")
                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChildrensAndInfantsWearStores
                                                                                                                                                                                                                      else
                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropodists_podiatrists")
                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChiropodistsPodiatrists
                                                                                                                                                                                                                          else
                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropractors")
                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringChiropractors
                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cigar_stores_and_stands")
                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCigarStoresAndStands
                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "civic_social_fraternal_associations")
                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCivicSocialFraternalAssociations
                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cleaning_and_maintenance")
                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCleaningAndMaintenance
                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "clothing_rental")
                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringClothingRental
                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "colleges_universities")
                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCollegesUniversities
                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_equipment")
                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCommercialEquipment
                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_footwear")
                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCommercialFootwear
                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_photography_art_and_graphics")
                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCommercialPhotographyArtAndGraphics
                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commuter_transport_and_ferries")
                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCommuterTransportAndFerries
                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_network_services")
                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputerNetworkServices
                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_programming")
                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputerProgramming
                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_repair")
                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputerRepair
                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_software_stores")
                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputerSoftwareStores
                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computers_peripherals_and_software")
                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringComputersPeripheralsAndSoftware
                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "concrete_work_services")
                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringConcreteWorkServices
                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "construction_materials")
                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringConstructionMaterials
                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "consulting_public_relations")
                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringConsultingPublicRelations
                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "correspondence_schools")
                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCorrespondenceSchools
                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cosmetic_stores")
                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCosmeticStores
                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "counseling_services")
                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCounselingServices
                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "country_clubs")
                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCountryClubs
                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "courier_services")
                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCourierServices
                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "court_costs")
                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCourtCosts
                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "credit_reporting_agencies")
                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCreditReportingAgencies
                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cruise_lines")
                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringCruiseLines
                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dairy_products_stores")
                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDairyProductsStores
                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dance_hall_studios_schools")
                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDanceHallStudiosSchools
                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dating_escort_services")
                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDatingEscortServices
                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dentists_orthodontists")
                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDentistsOrthodontists
                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "department_stores")
                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDepartmentStores
                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "detective_agencies")
                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDetectiveAgencies
                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_applications")
                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDigitalGoodsApplications
                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_games")
                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDigitalGoodsGames
                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_large_volume")
                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDigitalGoodsLargeVolume
                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_media")
                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDigitalGoodsMedia
                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_catalog_merchant")
                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingCatalogMerchant
                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_combination_catalog_and_retail_merchant")
                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingCombinationCatalogAndRetailMerchant
                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_inbound_telemarketing")
                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingInboundTelemarketing
                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_insurance_services")
                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingInsuranceServices
                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_other")
                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingOther
                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_outbound_telemarketing")
                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingOutboundTelemarketing
                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_subscription")
                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingSubscription
                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_travel")
                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDirectMarketingTravel
                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount_stores")
                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDiscountStores
                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "doctors")
                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDoctors
                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "door_to_door_sales")
                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDoorToDoorSales
                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drapery_window_covering_and_upholstery_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDraperyWindowCoveringAndUpholsteryStores
                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drinking_places")
                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDrinkingPlaces
                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drug_stores_and_pharmacies")
                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDrugStoresAndPharmacies
                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drugs_drug_proprietaries_and_druggist_sundries")
                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDrugsDrugProprietariesAndDruggistSundries
                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dry_cleaners")
                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDryCleaners
                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "durable_goods")
                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDurableGoods
                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "duty_free_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringDutyFreeStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eating_places_restaurants")
                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringEatingPlacesRestaurants
                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "educational_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringEducationalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electric_razor_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectricRazorStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_parts_and_equipment")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectricalPartsAndEquipment
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectricalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_repair_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectronicsRepairShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElectronicsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "elementary_secondary_schools")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringElementarySecondarySchools
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "employment_temp_agencies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringEmploymentTempAgencies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "equipment_rental")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringEquipmentRental
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "exterminating_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringExterminatingServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "family_clothing_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFamilyClothingStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fast_food_restaurants")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFastFoodRestaurants
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "financial_institutions")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFinancialInstitutions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fines_government_administrative_entities")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFinesGovernmentAdministrativeEntities
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fireplace_fireplace_screens_and_accessories_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFireplaceFireplaceScreensAndAccessoriesStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "floor_covering_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFloorCoveringStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFlorists
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists_supplies_nursery_stock_and_flowers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFloristsSuppliesNurseryStockAndFlowers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "freezer_and_locker_meat_provisioners")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFreezerAndLockerMeatProvisioners
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fuel_dealers_non_automotive")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFuelDealersNonAutomotive
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "funeral_services_crematories")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFuneralServicesCrematories
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_home_furnishings_and_equipment_stores_except_appliances")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_repair_refinishing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFurnitureRepairRefinishing
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furriers_and_fur_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringFurriersAndFurShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "general_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGeneralServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "gift_card_novelty_and_souvenir_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGiftCardNoveltyAndSouvenirShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glass_paint_and_wallpaper_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGlassPaintAndWallpaperStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glassware_crystal_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGlasswareCrystalStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "golf_courses_public")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGolfCoursesPublic
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "government_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGovernmentServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "grocery_stores_supermarkets")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringGroceryStoresSupermarkets
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHardwareEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHardwareStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "health_and_beauty_spas")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHealthAndBeautySpas
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hearing_aids_sales_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHearingAidsSalesAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "heating_plumbing_a_c")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHeatingPlumbingAC
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hobby_toy_and_game_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHobbyToyAndGameShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "home_supply_warehouse_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHomeSupplyWarehouseStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hospitals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHospitals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hotels_motels_and_resorts")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHotelsMotelsAndResorts
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "household_appliance_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringHouseholdApplianceStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "industrial_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringIndustrialSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "information_retrieval_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringInformationRetrievalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_default")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringInsuranceDefault
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_underwriting_premiums")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringInsuranceUnderwritingPremiums
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "intra_company_purchases")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringIntraCompanyPurchases
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "jewelry_stores_watches_clocks_and_silverware_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringJewelryStoresWatchesClocksAndSilverwareStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "landscaping_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLandscapingServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundries")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLaundries
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundry_cleaning_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLaundryCleaningServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "legal_services_attorneys")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLegalServicesAttorneys
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "luggage_and_leather_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLuggageAndLeatherGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "lumber_building_materials_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringLumberBuildingMaterialsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual_cash_disburse")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringManualCashDisburse
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "marinas_service_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMarinasServiceAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masonry_stonework_and_plaster")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMasonryStoneworkAndPlaster
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "massage_parlors")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMassageParlors
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_and_dental_labs")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMedicalAndDentalLabs
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_dental_ophthalmic_and_hospital_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMedicalDentalOphthalmicAndHospitalEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMedicalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "membership_organizations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMembershipOrganizations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_and_boys_clothing_and_accessories_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMensAndBoysClothingAndAccessoriesStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_womens_clothing_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMensWomensClothingStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metal_service_centers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMetalServiceCenters
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneous
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_apparel_and_accessory_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousApparelAndAccessoryShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_auto_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousAutoDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_business_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousBusinessServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_food_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousFoodStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_merchandise")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousGeneralMerchandise
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousGeneralServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_home_furnishing_specialty_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousHomeFurnishingSpecialtyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_publishing_and_printing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousPublishingAndPrinting
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_recreation_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousRecreationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_repair_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousRepairShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_specialty_retail")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMiscellaneousSpecialtyRetail
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mobile_home_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMobileHomeDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motion_picture_theaters")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotionPictureTheaters
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_freight_carriers_and_trucking")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorFreightCarriersAndTrucking
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_homes_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorHomesDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_vehicle_supplies_and_new_parts")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorVehicleSuppliesAndNewParts
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_and_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorcycleShopsAndDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMotorcycleShopsDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "music_stores_musical_instruments_pianos_and_sheet_music")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringMusicStoresMusicalInstrumentsPianosAndSheetMusic
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "news_dealers_and_newsstands")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNewsDealersAndNewsstands
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_money_orders")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNonFiMoneyOrders
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_stored_value_card_purchase_load")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNonFiStoredValueCardPurchaseLoad
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nondurable_goods")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNondurableGoods
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nurseries_lawn_and_garden_supply_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNurseriesLawnAndGardenSupplyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nursing_personal_care")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringNursingPersonalCare
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "office_and_commercial_furniture")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOfficeAndCommercialFurniture
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "opticians_eyeglasses")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOpticiansEyeglasses
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "optometrists_ophthalmologist")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOptometristsOphthalmologist
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "orthopedic_goods_prosthetic_devices")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOrthopedicGoodsProstheticDevices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "osteopaths")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringOsteopaths
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "package_stores_beer_wine_and_liquor")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPackageStoresBeerWineAndLiquor
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "paints_varnishes_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPaintsVarnishesAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "parking_lots_garages")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringParkingLotsGarages
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "passenger_railways")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPassengerRailways
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pawn_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPawnShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pet_shops_pet_food_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPetShopsPetFoodAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "petroleum_and_petroleum_products")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPetroleumAndPetroleumProducts
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photo_developing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPhotoDeveloping
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_photocopy_microfilm_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPhotographicPhotocopyMicrofilmEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_studios")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPhotographicStudios
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "picture_video_production")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPictureVideoProduction
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "piece_goods_notions_and_other_dry_goods")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPieceGoodsNotionsAndOtherDryGoods
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plumbing_heating_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPlumbingHeatingEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "political_organizations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPoliticalOrganizations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "postal_services_government_only")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPostalServicesGovernmentOnly
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "precious_stones_and_metals_watches_and_jewelry")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPreciousStonesAndMetalsWatchesAndJewelry
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "professional_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringProfessionalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "public_warehousing_and_storage")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringPublicWarehousingAndStorage
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "quick_copy_repro_and_blueprint")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringQuickCopyReproAndBlueprint
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "railroads")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRailroads
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "real_estate_agents_and_managers_rentals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRealEstateAgentsAndManagersRentals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "record_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRecordStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "recreational_vehicle_rentals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRecreationalVehicleRentals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringReligiousGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_organizations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringReligiousOrganizations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "roofing_siding_sheet_metal")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringRoofingSidingSheetMetal
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "secretarial_support_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSecretarialSupportServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "security_brokers_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSecurityBrokersDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "service_stations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringServiceStations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sewing_needlework_fabric_and_piece_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSewingNeedleworkFabricAndPieceGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_repair_hat_cleaning")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringShoeRepairHatCleaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringShoeStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "small_appliance_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSmallApplianceRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "snowmobile_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSnowmobileDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "special_trade_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSpecialTradeServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "specialty_cleaning")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSpecialtyCleaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSportingGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_recreation_camps")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSportingRecreationCamps
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_and_riding_apparel_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSportsAndRidingApparelStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_clubs_fields")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSportsClubsFields
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stamp_and_coin_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringStampAndCoinStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationary_office_supplies_printing_and_writing_paper")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringStationaryOfficeSuppliesPrintingAndWritingPaper
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationery_stores_office_and_school_supply_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringStationeryStoresOfficeAndSchoolSupplyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "swimming_pools_sales")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringSwimmingPoolsSales
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "t_ui_travel_germany")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTUiTravelGermany
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tailors_alterations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTailorsAlterations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_payments_government_agencies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTaxPaymentsGovernmentAgencies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_preparation_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTaxPreparationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "taxicabs_limousines")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTaxicabsLimousines
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_equipment_and_telephone_sales")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTelecommunicationEquipmentAndTelephoneSales
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTelecommunicationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telegraph_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTelegraphServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tent_and_awning_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTentAndAwningShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "testing_laboratories")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTestingLaboratories
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "theatrical_ticket_agencies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTheatricalTicketAgencies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "timeshares")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTimeshares
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tire_retreading_and_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTireRetreadingAndRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tolls_bridge_fees")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTollsBridgeFees
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tourist_attractions_and_exhibits")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTouristAttractionsAndExhibits
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "towing_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTowingServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "trailer_parks_campgrounds")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTrailerParksCampgrounds
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transportation_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTransportationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "travel_agencies_tour_operators")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTravelAgenciesTourOperators
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_stop_iteration")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTruckStopIteration
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_utility_trailer_rentals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTruckUtilityTrailerRentals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typesetting_plate_making_and_related_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTypesettingPlateMakingAndRelatedServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typewriter_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringTypewriterStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "u_s_federal_government_agencies_or_departments")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringUSFederalGovernmentAgenciesOrDepartments
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "uniforms_commercial_clothing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringUniformsCommercialClothing
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "used_merchandise_and_secondhand_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringUsedMerchandiseAndSecondhandStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "utilities")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringUtilities
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "variety_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVarietyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "veterinary_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVeterinaryServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_amusement_game_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVideoAmusementGameSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_game_arcades")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVideoGameArcades
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_tape_rental_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVideoTapeRentalStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "vocational_trade_schools")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringVocationalTradeSchools
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "watch_jewelry_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWatchJewelryRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "welding_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWeldingRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wholesale_clubs")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWholesaleClubs
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wig_and_toupee_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWigAndToupeeStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wires_money_orders")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWiresMoneyOrders
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_accessory_and_specialty_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWomensAccessoryAndSpecialtyShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_ready_to_wear_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWomensReadyToWearStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wrecking_and_salvage_yards")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'AllowedCategories'EnumStringWreckingAndSalvageYards
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else Issuing'cardholderAuthorizationControls'AllowedCategories'EnumOther val
      )

-- | Defines the enum schema issuing.cardholderAuthorization_controls\'Blocked_categories\'
data Issuing'cardholderAuthorizationControls'BlockedCategories'
  = Issuing'cardholderAuthorizationControls'BlockedCategories'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumTyped Data.Text.Internal.Text
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAcRefrigerationRepair
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAccountingBookkeepingServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAdvertisingServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAgriculturalCooperative
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAirlinesAirCarriers
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAirportsFlyingFields
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAmbulanceServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAmusementParksCarnivals
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAntiqueReproductions
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAntiqueShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAquariums
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringArchitecturalSurveyingServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringArtDealersAndGalleries
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringArtistsSupplyAndCraftShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutoAndHomeSupplyStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutoBodyRepairShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutoPaintShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutoServiceShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomatedCashDisburse
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomatedFuelDispensers
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomobileAssociations
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomotivePartsAndAccessoriesStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomotiveTireStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBailAndBondPayments
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBakeries
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBandsOrchestras
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBarberAndBeautyShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBettingCasinoGambling
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBicycleShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBilliardPoolEstablishments
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBoatDealers
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBoatRentalsAndLeases
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBookStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBooksPeriodicalsAndNewspapers
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBowlingAlleys
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBusLines
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBusinessSecretarialSchools
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBuyingShoppingServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCableSatelliteAndOtherPayTelevisionAndRadio
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCameraAndPhotographicSupplyStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCandyNutAndConfectioneryStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarAndTruckDealersNewUsed
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarAndTruckDealersUsedOnly
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarRentalAgencies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarWashes
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarpentryServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarpetUpholsteryCleaning
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCaterers
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCharitableAndSocialServiceOrganizationsFundraising
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChemicalsAndAlliedProducts
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChildCareServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChildrensAndInfantsWearStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChiropodistsPodiatrists
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChiropractors
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCigarStoresAndStands
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCivicSocialFraternalAssociations
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCleaningAndMaintenance
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringClothingRental
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCollegesUniversities
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCommercialEquipment
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCommercialFootwear
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCommercialPhotographyArtAndGraphics
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCommuterTransportAndFerries
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputerNetworkServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputerProgramming
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputerRepair
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputerSoftwareStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputersPeripheralsAndSoftware
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringConcreteWorkServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringConstructionMaterials
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringConsultingPublicRelations
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCorrespondenceSchools
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCosmeticStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCounselingServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCountryClubs
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCourierServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCourtCosts
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCreditReportingAgencies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCruiseLines
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDairyProductsStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDanceHallStudiosSchools
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDatingEscortServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDentistsOrthodontists
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDepartmentStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDetectiveAgencies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDigitalGoodsApplications
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDigitalGoodsGames
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDigitalGoodsLargeVolume
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDigitalGoodsMedia
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingCatalogMerchant
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingCombinationCatalogAndRetailMerchant
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingInboundTelemarketing
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingInsuranceServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingOther
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingOutboundTelemarketing
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingSubscription
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingTravel
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDiscountStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDoctors
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDoorToDoorSales
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDraperyWindowCoveringAndUpholsteryStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDrinkingPlaces
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDrugStoresAndPharmacies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDrugsDrugProprietariesAndDruggistSundries
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDryCleaners
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDurableGoods
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDutyFreeStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringEatingPlacesRestaurants
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringEducationalServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectricRazorStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectricalPartsAndEquipment
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectricalServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectronicsRepairShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectronicsStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElementarySecondarySchools
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringEmploymentTempAgencies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringEquipmentRental
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringExterminatingServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFamilyClothingStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFastFoodRestaurants
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFinancialInstitutions
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFinesGovernmentAdministrativeEntities
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFireplaceFireplaceScreensAndAccessoriesStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFloorCoveringStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFlorists
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFloristsSuppliesNurseryStockAndFlowers
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFreezerAndLockerMeatProvisioners
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFuelDealersNonAutomotive
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFuneralServicesCrematories
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFurnitureRepairRefinishing
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFurriersAndFurShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGeneralServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGiftCardNoveltyAndSouvenirShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGlassPaintAndWallpaperStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGlasswareCrystalStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGolfCoursesPublic
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGovernmentServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGroceryStoresSupermarkets
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHardwareEquipmentAndSupplies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHardwareStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHealthAndBeautySpas
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHearingAidsSalesAndSupplies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHeatingPlumbingAC
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHobbyToyAndGameShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHomeSupplyWarehouseStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHospitals
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHotelsMotelsAndResorts
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHouseholdApplianceStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringIndustrialSupplies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringInformationRetrievalServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringInsuranceDefault
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringInsuranceUnderwritingPremiums
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringIntraCompanyPurchases
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringJewelryStoresWatchesClocksAndSilverwareStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLandscapingServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLaundries
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLaundryCleaningServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLegalServicesAttorneys
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLuggageAndLeatherGoodsStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLumberBuildingMaterialsStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringManualCashDisburse
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMarinasServiceAndSupplies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMasonryStoneworkAndPlaster
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMassageParlors
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMedicalAndDentalLabs
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMedicalDentalOphthalmicAndHospitalEquipmentAndSupplies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMedicalServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMembershipOrganizations
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMensAndBoysClothingAndAccessoriesStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMensWomensClothingStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMetalServiceCenters
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneous
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousApparelAndAccessoryShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousAutoDealers
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousBusinessServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousFoodStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousGeneralMerchandise
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousGeneralServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousHomeFurnishingSpecialtyStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousPublishingAndPrinting
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousRecreationServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousRepairShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousSpecialtyRetail
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMobileHomeDealers
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotionPictureTheaters
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorFreightCarriersAndTrucking
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorHomesDealers
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorVehicleSuppliesAndNewParts
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorcycleShopsAndDealers
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorcycleShopsDealers
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMusicStoresMusicalInstrumentsPianosAndSheetMusic
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNewsDealersAndNewsstands
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNonFiMoneyOrders
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNonFiStoredValueCardPurchaseLoad
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNondurableGoods
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNurseriesLawnAndGardenSupplyStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNursingPersonalCare
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOfficeAndCommercialFurniture
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOpticiansEyeglasses
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOptometristsOphthalmologist
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOrthopedicGoodsProstheticDevices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOsteopaths
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPackageStoresBeerWineAndLiquor
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPaintsVarnishesAndSupplies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringParkingLotsGarages
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPassengerRailways
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPawnShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPetShopsPetFoodAndSupplies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPetroleumAndPetroleumProducts
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPhotoDeveloping
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPhotographicPhotocopyMicrofilmEquipmentAndSupplies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPhotographicStudios
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPictureVideoProduction
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPieceGoodsNotionsAndOtherDryGoods
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPlumbingHeatingEquipmentAndSupplies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPoliticalOrganizations
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPostalServicesGovernmentOnly
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPreciousStonesAndMetalsWatchesAndJewelry
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringProfessionalServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPublicWarehousingAndStorage
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringQuickCopyReproAndBlueprint
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRailroads
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRealEstateAgentsAndManagersRentals
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRecordStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRecreationalVehicleRentals
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringReligiousGoodsStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringReligiousOrganizations
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRoofingSidingSheetMetal
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSecretarialSupportServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSecurityBrokersDealers
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringServiceStations
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSewingNeedleworkFabricAndPieceGoodsStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringShoeRepairHatCleaning
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringShoeStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSmallApplianceRepair
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSnowmobileDealers
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSpecialTradeServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSpecialtyCleaning
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSportingGoodsStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSportingRecreationCamps
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSportsAndRidingApparelStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSportsClubsFields
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringStampAndCoinStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringStationaryOfficeSuppliesPrintingAndWritingPaper
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringStationeryStoresOfficeAndSchoolSupplyStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSwimmingPoolsSales
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTUiTravelGermany
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTailorsAlterations
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTaxPaymentsGovernmentAgencies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTaxPreparationServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTaxicabsLimousines
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTelecommunicationEquipmentAndTelephoneSales
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTelecommunicationServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTelegraphServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTentAndAwningShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTestingLaboratories
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTheatricalTicketAgencies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTimeshares
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTireRetreadingAndRepair
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTollsBridgeFees
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTouristAttractionsAndExhibits
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTowingServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTrailerParksCampgrounds
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTransportationServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTravelAgenciesTourOperators
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTruckStopIteration
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTruckUtilityTrailerRentals
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTypesettingPlateMakingAndRelatedServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTypewriterStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringUSFederalGovernmentAgenciesOrDepartments
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringUniformsCommercialClothing
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringUsedMerchandiseAndSecondhandStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringUtilities
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVarietyStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVeterinaryServices
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVideoAmusementGameSupplies
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVideoGameArcades
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVideoTapeRentalStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVocationalTradeSchools
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWatchJewelryRepair
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWeldingRepair
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWholesaleClubs
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWigAndToupeeStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWiresMoneyOrders
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWomensAccessoryAndSpecialtyShops
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWomensReadyToWearStores
  | Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWreckingAndSalvageYards
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardholderAuthorizationControls'BlockedCategories' where
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAcRefrigerationRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ac_refrigeration_repair"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAccountingBookkeepingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "accounting_bookkeeping_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAdvertisingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "advertising_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAgriculturalCooperative) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "agricultural_cooperative"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAirlinesAirCarriers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airlines_air_carriers"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAirportsFlyingFields) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airports_flying_fields"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAmbulanceServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ambulance_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAmusementParksCarnivals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amusement_parks_carnivals"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAntiqueReproductions) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_reproductions"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAntiqueShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAquariums) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "aquariums"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringArchitecturalSurveyingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "architectural_surveying_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringArtDealersAndGalleries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "art_dealers_and_galleries"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringArtistsSupplyAndCraftShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "artists_supply_and_craft_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutoAndHomeSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_and_home_supply_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutoBodyRepairShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_body_repair_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutoPaintShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_paint_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutoServiceShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_service_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomatedCashDisburse) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_cash_disburse"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomatedFuelDispensers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_fuel_dispensers"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomobileAssociations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automobile_associations"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomotivePartsAndAccessoriesStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_parts_and_accessories_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomotiveTireStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_tire_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBailAndBondPayments) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bail_and_bond_payments"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBakeries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bakeries"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBandsOrchestras) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bands_orchestras"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBarberAndBeautyShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "barber_and_beauty_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBettingCasinoGambling) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "betting_casino_gambling"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBicycleShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bicycle_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBilliardPoolEstablishments) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "billiard_pool_establishments"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBoatDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBoatRentalsAndLeases) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_rentals_and_leases"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBookStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "book_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBooksPeriodicalsAndNewspapers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "books_periodicals_and_newspapers"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBowlingAlleys) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bowling_alleys"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBusLines) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bus_lines"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBusinessSecretarialSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "business_secretarial_schools"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBuyingShoppingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "buying_shopping_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCableSatelliteAndOtherPayTelevisionAndRadio) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cable_satellite_and_other_pay_television_and_radio"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCameraAndPhotographicSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "camera_and_photographic_supply_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCandyNutAndConfectioneryStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "candy_nut_and_confectionery_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarAndTruckDealersNewUsed) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_new_used"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarAndTruckDealersUsedOnly) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_used_only"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarRentalAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_rental_agencies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarWashes) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_washes"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarpentryServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpentry_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarpetUpholsteryCleaning) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpet_upholstery_cleaning"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCaterers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "caterers"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCharitableAndSocialServiceOrganizationsFundraising) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charitable_and_social_service_organizations_fundraising"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChemicalsAndAlliedProducts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chemicals_and_allied_products"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChildCareServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "child_care_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChildrensAndInfantsWearStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "childrens_and_infants_wear_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChiropodistsPodiatrists) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropodists_podiatrists"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChiropractors) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropractors"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCigarStoresAndStands) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cigar_stores_and_stands"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCivicSocialFraternalAssociations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "civic_social_fraternal_associations"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCleaningAndMaintenance) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cleaning_and_maintenance"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringClothingRental) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "clothing_rental"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCollegesUniversities) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "colleges_universities"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCommercialEquipment) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_equipment"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCommercialFootwear) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_footwear"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCommercialPhotographyArtAndGraphics) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_photography_art_and_graphics"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCommuterTransportAndFerries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commuter_transport_and_ferries"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputerNetworkServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_network_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputerProgramming) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_programming"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputerRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_repair"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputerSoftwareStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_software_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputersPeripheralsAndSoftware) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computers_peripherals_and_software"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringConcreteWorkServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "concrete_work_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringConstructionMaterials) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "construction_materials"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringConsultingPublicRelations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "consulting_public_relations"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCorrespondenceSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "correspondence_schools"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCosmeticStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cosmetic_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCounselingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "counseling_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCountryClubs) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "country_clubs"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCourierServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "courier_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCourtCosts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "court_costs"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCreditReportingAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "credit_reporting_agencies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCruiseLines) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cruise_lines"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDairyProductsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dairy_products_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDanceHallStudiosSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dance_hall_studios_schools"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDatingEscortServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dating_escort_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDentistsOrthodontists) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dentists_orthodontists"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDepartmentStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "department_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDetectiveAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "detective_agencies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDigitalGoodsApplications) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_applications"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDigitalGoodsGames) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_games"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDigitalGoodsLargeVolume) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_large_volume"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDigitalGoodsMedia) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_media"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingCatalogMerchant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_catalog_merchant"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingCombinationCatalogAndRetailMerchant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_combination_catalog_and_retail_merchant"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingInboundTelemarketing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_inbound_telemarketing"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingInsuranceServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_insurance_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingOther) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_other"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingOutboundTelemarketing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_outbound_telemarketing"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingSubscription) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_subscription"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingTravel) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_travel"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDiscountStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDoctors) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "doctors"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDoorToDoorSales) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "door_to_door_sales"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDraperyWindowCoveringAndUpholsteryStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drapery_window_covering_and_upholstery_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDrinkingPlaces) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drinking_places"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDrugStoresAndPharmacies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drug_stores_and_pharmacies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDrugsDrugProprietariesAndDruggistSundries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drugs_drug_proprietaries_and_druggist_sundries"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDryCleaners) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dry_cleaners"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDurableGoods) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "durable_goods"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDutyFreeStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "duty_free_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringEatingPlacesRestaurants) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eating_places_restaurants"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringEducationalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "educational_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectricRazorStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electric_razor_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectricalPartsAndEquipment) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_parts_and_equipment"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectricalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectronicsRepairShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_repair_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectronicsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElementarySecondarySchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "elementary_secondary_schools"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringEmploymentTempAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "employment_temp_agencies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringEquipmentRental) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "equipment_rental"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringExterminatingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "exterminating_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFamilyClothingStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "family_clothing_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFastFoodRestaurants) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fast_food_restaurants"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFinancialInstitutions) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "financial_institutions"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFinesGovernmentAdministrativeEntities) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fines_government_administrative_entities"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFireplaceFireplaceScreensAndAccessoriesStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fireplace_fireplace_screens_and_accessories_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFloorCoveringStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "floor_covering_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFlorists) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFloristsSuppliesNurseryStockAndFlowers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists_supplies_nursery_stock_and_flowers"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFreezerAndLockerMeatProvisioners) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "freezer_and_locker_meat_provisioners"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFuelDealersNonAutomotive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fuel_dealers_non_automotive"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFuneralServicesCrematories) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "funeral_services_crematories"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_home_furnishings_and_equipment_stores_except_appliances"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFurnitureRepairRefinishing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_repair_refinishing"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFurriersAndFurShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furriers_and_fur_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGeneralServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "general_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGiftCardNoveltyAndSouvenirShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "gift_card_novelty_and_souvenir_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGlassPaintAndWallpaperStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glass_paint_and_wallpaper_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGlasswareCrystalStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glassware_crystal_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGolfCoursesPublic) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "golf_courses_public"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGovernmentServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "government_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGroceryStoresSupermarkets) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "grocery_stores_supermarkets"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHardwareEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_equipment_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHardwareStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHealthAndBeautySpas) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "health_and_beauty_spas"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHearingAidsSalesAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hearing_aids_sales_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHeatingPlumbingAC) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "heating_plumbing_a_c"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHobbyToyAndGameShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hobby_toy_and_game_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHomeSupplyWarehouseStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "home_supply_warehouse_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHospitals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hospitals"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHotelsMotelsAndResorts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hotels_motels_and_resorts"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHouseholdApplianceStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "household_appliance_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringIndustrialSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "industrial_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringInformationRetrievalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "information_retrieval_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringInsuranceDefault) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_default"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringInsuranceUnderwritingPremiums) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_underwriting_premiums"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringIntraCompanyPurchases) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "intra_company_purchases"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringJewelryStoresWatchesClocksAndSilverwareStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "jewelry_stores_watches_clocks_and_silverware_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLandscapingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "landscaping_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLaundries) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundries"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLaundryCleaningServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundry_cleaning_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLegalServicesAttorneys) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "legal_services_attorneys"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLuggageAndLeatherGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "luggage_and_leather_goods_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLumberBuildingMaterialsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "lumber_building_materials_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringManualCashDisburse) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual_cash_disburse"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMarinasServiceAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "marinas_service_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMasonryStoneworkAndPlaster) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masonry_stonework_and_plaster"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMassageParlors) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "massage_parlors"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMedicalAndDentalLabs) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_and_dental_labs"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMedicalDentalOphthalmicAndHospitalEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_dental_ophthalmic_and_hospital_equipment_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMedicalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMembershipOrganizations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "membership_organizations"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMensAndBoysClothingAndAccessoriesStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_and_boys_clothing_and_accessories_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMensWomensClothingStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_womens_clothing_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMetalServiceCenters) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metal_service_centers"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneous) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousApparelAndAccessoryShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_apparel_and_accessory_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousAutoDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_auto_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousBusinessServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_business_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousFoodStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_food_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousGeneralMerchandise) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_merchandise"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousGeneralServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousHomeFurnishingSpecialtyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_home_furnishing_specialty_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousPublishingAndPrinting) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_publishing_and_printing"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousRecreationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_recreation_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousRepairShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_repair_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousSpecialtyRetail) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_specialty_retail"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMobileHomeDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mobile_home_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotionPictureTheaters) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motion_picture_theaters"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorFreightCarriersAndTrucking) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_freight_carriers_and_trucking"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorHomesDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_homes_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorVehicleSuppliesAndNewParts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_vehicle_supplies_and_new_parts"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorcycleShopsAndDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_and_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorcycleShopsDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMusicStoresMusicalInstrumentsPianosAndSheetMusic) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "music_stores_musical_instruments_pianos_and_sheet_music"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNewsDealersAndNewsstands) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "news_dealers_and_newsstands"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNonFiMoneyOrders) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_money_orders"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNonFiStoredValueCardPurchaseLoad) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_stored_value_card_purchase_load"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNondurableGoods) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nondurable_goods"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNurseriesLawnAndGardenSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nurseries_lawn_and_garden_supply_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNursingPersonalCare) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nursing_personal_care"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOfficeAndCommercialFurniture) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "office_and_commercial_furniture"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOpticiansEyeglasses) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "opticians_eyeglasses"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOptometristsOphthalmologist) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "optometrists_ophthalmologist"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOrthopedicGoodsProstheticDevices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "orthopedic_goods_prosthetic_devices"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOsteopaths) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "osteopaths"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPackageStoresBeerWineAndLiquor) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "package_stores_beer_wine_and_liquor"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPaintsVarnishesAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "paints_varnishes_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringParkingLotsGarages) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "parking_lots_garages"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPassengerRailways) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "passenger_railways"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPawnShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pawn_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPetShopsPetFoodAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pet_shops_pet_food_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPetroleumAndPetroleumProducts) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "petroleum_and_petroleum_products"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPhotoDeveloping) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photo_developing"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPhotographicPhotocopyMicrofilmEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_photocopy_microfilm_equipment_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPhotographicStudios) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_studios"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPictureVideoProduction) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "picture_video_production"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPieceGoodsNotionsAndOtherDryGoods) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "piece_goods_notions_and_other_dry_goods"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPlumbingHeatingEquipmentAndSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plumbing_heating_equipment_and_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPoliticalOrganizations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "political_organizations"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPostalServicesGovernmentOnly) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "postal_services_government_only"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPreciousStonesAndMetalsWatchesAndJewelry) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "precious_stones_and_metals_watches_and_jewelry"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringProfessionalServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "professional_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPublicWarehousingAndStorage) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "public_warehousing_and_storage"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringQuickCopyReproAndBlueprint) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "quick_copy_repro_and_blueprint"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRailroads) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "railroads"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRealEstateAgentsAndManagersRentals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "real_estate_agents_and_managers_rentals"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRecordStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "record_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRecreationalVehicleRentals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "recreational_vehicle_rentals"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringReligiousGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_goods_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringReligiousOrganizations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_organizations"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRoofingSidingSheetMetal) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "roofing_siding_sheet_metal"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSecretarialSupportServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "secretarial_support_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSecurityBrokersDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "security_brokers_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringServiceStations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "service_stations"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSewingNeedleworkFabricAndPieceGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sewing_needlework_fabric_and_piece_goods_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringShoeRepairHatCleaning) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_repair_hat_cleaning"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringShoeStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSmallApplianceRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "small_appliance_repair"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSnowmobileDealers) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "snowmobile_dealers"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSpecialTradeServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "special_trade_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSpecialtyCleaning) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "specialty_cleaning"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSportingGoodsStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_goods_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSportingRecreationCamps) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_recreation_camps"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSportsAndRidingApparelStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_and_riding_apparel_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSportsClubsFields) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_clubs_fields"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringStampAndCoinStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stamp_and_coin_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringStationaryOfficeSuppliesPrintingAndWritingPaper) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationary_office_supplies_printing_and_writing_paper"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringStationeryStoresOfficeAndSchoolSupplyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationery_stores_office_and_school_supply_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSwimmingPoolsSales) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "swimming_pools_sales"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTUiTravelGermany) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "t_ui_travel_germany"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTailorsAlterations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tailors_alterations"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTaxPaymentsGovernmentAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_payments_government_agencies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTaxPreparationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_preparation_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTaxicabsLimousines) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "taxicabs_limousines"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTelecommunicationEquipmentAndTelephoneSales) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_equipment_and_telephone_sales"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTelecommunicationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTelegraphServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telegraph_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTentAndAwningShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tent_and_awning_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTestingLaboratories) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "testing_laboratories"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTheatricalTicketAgencies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "theatrical_ticket_agencies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTimeshares) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "timeshares"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTireRetreadingAndRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tire_retreading_and_repair"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTollsBridgeFees) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tolls_bridge_fees"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTouristAttractionsAndExhibits) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tourist_attractions_and_exhibits"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTowingServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "towing_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTrailerParksCampgrounds) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "trailer_parks_campgrounds"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTransportationServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transportation_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTravelAgenciesTourOperators) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "travel_agencies_tour_operators"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTruckStopIteration) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_stop_iteration"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTruckUtilityTrailerRentals) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_utility_trailer_rentals"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTypesettingPlateMakingAndRelatedServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typesetting_plate_making_and_related_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTypewriterStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typewriter_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringUSFederalGovernmentAgenciesOrDepartments) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "u_s_federal_government_agencies_or_departments"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringUniformsCommercialClothing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "uniforms_commercial_clothing"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringUsedMerchandiseAndSecondhandStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "used_merchandise_and_secondhand_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringUtilities) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "utilities"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVarietyStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "variety_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVeterinaryServices) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "veterinary_services"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVideoAmusementGameSupplies) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_amusement_game_supplies"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVideoGameArcades) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_game_arcades"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVideoTapeRentalStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_tape_rental_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVocationalTradeSchools) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "vocational_trade_schools"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWatchJewelryRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "watch_jewelry_repair"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWeldingRepair) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "welding_repair"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWholesaleClubs) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wholesale_clubs"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWigAndToupeeStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wig_and_toupee_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWiresMoneyOrders) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wires_money_orders"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWomensAccessoryAndSpecialtyShops) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_accessory_and_specialty_shops"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWomensReadyToWearStores) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_ready_to_wear_stores"
  toJSON (Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWreckingAndSalvageYards) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wrecking_and_salvage_yards"

instance Data.Aeson.FromJSON Issuing'cardholderAuthorizationControls'BlockedCategories' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ac_refrigeration_repair")
          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAcRefrigerationRepair
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "accounting_bookkeeping_services")
              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAccountingBookkeepingServices
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "advertising_services")
                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAdvertisingServices
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "agricultural_cooperative")
                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAgriculturalCooperative
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airlines_air_carriers")
                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAirlinesAirCarriers
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "airports_flying_fields")
                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAirportsFlyingFields
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ambulance_services")
                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAmbulanceServices
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amusement_parks_carnivals")
                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAmusementParksCarnivals
                                      else
                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_reproductions")
                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAntiqueReproductions
                                          else
                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "antique_shops")
                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAntiqueShops
                                              else
                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "aquariums")
                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAquariums
                                                  else
                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "architectural_surveying_services")
                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringArchitecturalSurveyingServices
                                                      else
                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "art_dealers_and_galleries")
                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringArtDealersAndGalleries
                                                          else
                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "artists_supply_and_craft_shops")
                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringArtistsSupplyAndCraftShops
                                                              else
                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_and_home_supply_stores")
                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutoAndHomeSupplyStores
                                                                  else
                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_body_repair_shops")
                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutoBodyRepairShops
                                                                      else
                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_paint_shops")
                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutoPaintShops
                                                                          else
                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "auto_service_shops")
                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutoServiceShops
                                                                              else
                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_cash_disburse")
                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomatedCashDisburse
                                                                                  else
                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automated_fuel_dispensers")
                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomatedFuelDispensers
                                                                                      else
                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automobile_associations")
                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomobileAssociations
                                                                                          else
                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_parts_and_accessories_stores")
                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomotivePartsAndAccessoriesStores
                                                                                              else
                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automotive_tire_stores")
                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringAutomotiveTireStores
                                                                                                  else
                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bail_and_bond_payments")
                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBailAndBondPayments
                                                                                                      else
                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bakeries")
                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBakeries
                                                                                                          else
                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bands_orchestras")
                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBandsOrchestras
                                                                                                              else
                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "barber_and_beauty_shops")
                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBarberAndBeautyShops
                                                                                                                  else
                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "betting_casino_gambling")
                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBettingCasinoGambling
                                                                                                                      else
                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bicycle_shops")
                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBicycleShops
                                                                                                                          else
                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "billiard_pool_establishments")
                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBilliardPoolEstablishments
                                                                                                                              else
                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_dealers")
                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBoatDealers
                                                                                                                                  else
                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "boat_rentals_and_leases")
                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBoatRentalsAndLeases
                                                                                                                                      else
                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "book_stores")
                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBookStores
                                                                                                                                          else
                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "books_periodicals_and_newspapers")
                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBooksPeriodicalsAndNewspapers
                                                                                                                                              else
                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bowling_alleys")
                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBowlingAlleys
                                                                                                                                                  else
                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bus_lines")
                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBusLines
                                                                                                                                                      else
                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "business_secretarial_schools")
                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBusinessSecretarialSchools
                                                                                                                                                          else
                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "buying_shopping_services")
                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringBuyingShoppingServices
                                                                                                                                                              else
                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cable_satellite_and_other_pay_television_and_radio")
                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCableSatelliteAndOtherPayTelevisionAndRadio
                                                                                                                                                                  else
                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "camera_and_photographic_supply_stores")
                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCameraAndPhotographicSupplyStores
                                                                                                                                                                      else
                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "candy_nut_and_confectionery_stores")
                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCandyNutAndConfectioneryStores
                                                                                                                                                                          else
                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_new_used")
                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarAndTruckDealersNewUsed
                                                                                                                                                                              else
                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_and_truck_dealers_used_only")
                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarAndTruckDealersUsedOnly
                                                                                                                                                                                  else
                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_rental_agencies")
                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarRentalAgencies
                                                                                                                                                                                      else
                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "car_washes")
                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarWashes
                                                                                                                                                                                          else
                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpentry_services")
                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarpentryServices
                                                                                                                                                                                              else
                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "carpet_upholstery_cleaning")
                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCarpetUpholsteryCleaning
                                                                                                                                                                                                  else
                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "caterers")
                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCaterers
                                                                                                                                                                                                      else
                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charitable_and_social_service_organizations_fundraising")
                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCharitableAndSocialServiceOrganizationsFundraising
                                                                                                                                                                                                          else
                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chemicals_and_allied_products")
                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChemicalsAndAlliedProducts
                                                                                                                                                                                                              else
                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "child_care_services")
                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChildCareServices
                                                                                                                                                                                                                  else
                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "childrens_and_infants_wear_stores")
                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChildrensAndInfantsWearStores
                                                                                                                                                                                                                      else
                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropodists_podiatrists")
                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChiropodistsPodiatrists
                                                                                                                                                                                                                          else
                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "chiropractors")
                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringChiropractors
                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cigar_stores_and_stands")
                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCigarStoresAndStands
                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "civic_social_fraternal_associations")
                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCivicSocialFraternalAssociations
                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cleaning_and_maintenance")
                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCleaningAndMaintenance
                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "clothing_rental")
                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringClothingRental
                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "colleges_universities")
                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCollegesUniversities
                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_equipment")
                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCommercialEquipment
                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_footwear")
                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCommercialFootwear
                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commercial_photography_art_and_graphics")
                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCommercialPhotographyArtAndGraphics
                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "commuter_transport_and_ferries")
                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCommuterTransportAndFerries
                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_network_services")
                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputerNetworkServices
                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_programming")
                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputerProgramming
                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_repair")
                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputerRepair
                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computer_software_stores")
                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputerSoftwareStores
                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "computers_peripherals_and_software")
                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringComputersPeripheralsAndSoftware
                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "concrete_work_services")
                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringConcreteWorkServices
                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "construction_materials")
                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringConstructionMaterials
                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "consulting_public_relations")
                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringConsultingPublicRelations
                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "correspondence_schools")
                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCorrespondenceSchools
                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cosmetic_stores")
                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCosmeticStores
                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "counseling_services")
                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCounselingServices
                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "country_clubs")
                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCountryClubs
                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "courier_services")
                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCourierServices
                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "court_costs")
                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCourtCosts
                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "credit_reporting_agencies")
                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCreditReportingAgencies
                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cruise_lines")
                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringCruiseLines
                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dairy_products_stores")
                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDairyProductsStores
                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dance_hall_studios_schools")
                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDanceHallStudiosSchools
                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dating_escort_services")
                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDatingEscortServices
                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dentists_orthodontists")
                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDentistsOrthodontists
                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "department_stores")
                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDepartmentStores
                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "detective_agencies")
                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDetectiveAgencies
                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_applications")
                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDigitalGoodsApplications
                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_games")
                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDigitalGoodsGames
                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_large_volume")
                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDigitalGoodsLargeVolume
                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "digital_goods_media")
                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDigitalGoodsMedia
                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_catalog_merchant")
                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingCatalogMerchant
                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_combination_catalog_and_retail_merchant")
                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingCombinationCatalogAndRetailMerchant
                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_inbound_telemarketing")
                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingInboundTelemarketing
                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_insurance_services")
                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingInsuranceServices
                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_other")
                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingOther
                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_outbound_telemarketing")
                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingOutboundTelemarketing
                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_subscription")
                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingSubscription
                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "direct_marketing_travel")
                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDirectMarketingTravel
                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount_stores")
                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDiscountStores
                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "doctors")
                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDoctors
                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "door_to_door_sales")
                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDoorToDoorSales
                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drapery_window_covering_and_upholstery_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDraperyWindowCoveringAndUpholsteryStores
                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drinking_places")
                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDrinkingPlaces
                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drug_stores_and_pharmacies")
                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDrugStoresAndPharmacies
                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "drugs_drug_proprietaries_and_druggist_sundries")
                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDrugsDrugProprietariesAndDruggistSundries
                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dry_cleaners")
                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDryCleaners
                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "durable_goods")
                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDurableGoods
                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "duty_free_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringDutyFreeStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eating_places_restaurants")
                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringEatingPlacesRestaurants
                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "educational_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringEducationalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electric_razor_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectricRazorStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_parts_and_equipment")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectricalPartsAndEquipment
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electrical_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectricalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_repair_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectronicsRepairShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "electronics_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElectronicsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "elementary_secondary_schools")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringElementarySecondarySchools
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "employment_temp_agencies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringEmploymentTempAgencies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "equipment_rental")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringEquipmentRental
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "exterminating_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringExterminatingServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "family_clothing_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFamilyClothingStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fast_food_restaurants")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFastFoodRestaurants
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "financial_institutions")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFinancialInstitutions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fines_government_administrative_entities")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFinesGovernmentAdministrativeEntities
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fireplace_fireplace_screens_and_accessories_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFireplaceFireplaceScreensAndAccessoriesStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "floor_covering_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFloorCoveringStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFlorists
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "florists_supplies_nursery_stock_and_flowers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFloristsSuppliesNurseryStockAndFlowers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "freezer_and_locker_meat_provisioners")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFreezerAndLockerMeatProvisioners
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fuel_dealers_non_automotive")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFuelDealersNonAutomotive
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "funeral_services_crematories")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFuneralServicesCrematories
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_home_furnishings_and_equipment_stores_except_appliances")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furniture_repair_refinishing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFurnitureRepairRefinishing
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "furriers_and_fur_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringFurriersAndFurShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "general_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGeneralServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "gift_card_novelty_and_souvenir_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGiftCardNoveltyAndSouvenirShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glass_paint_and_wallpaper_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGlassPaintAndWallpaperStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "glassware_crystal_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGlasswareCrystalStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "golf_courses_public")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGolfCoursesPublic
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "government_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGovernmentServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "grocery_stores_supermarkets")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringGroceryStoresSupermarkets
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHardwareEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hardware_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHardwareStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "health_and_beauty_spas")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHealthAndBeautySpas
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hearing_aids_sales_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHearingAidsSalesAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "heating_plumbing_a_c")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHeatingPlumbingAC
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hobby_toy_and_game_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHobbyToyAndGameShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "home_supply_warehouse_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHomeSupplyWarehouseStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hospitals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHospitals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hotels_motels_and_resorts")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHotelsMotelsAndResorts
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "household_appliance_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringHouseholdApplianceStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "industrial_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringIndustrialSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "information_retrieval_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringInformationRetrievalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_default")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringInsuranceDefault
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "insurance_underwriting_premiums")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringInsuranceUnderwritingPremiums
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "intra_company_purchases")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringIntraCompanyPurchases
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "jewelry_stores_watches_clocks_and_silverware_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringJewelryStoresWatchesClocksAndSilverwareStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "landscaping_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLandscapingServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundries")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLaundries
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "laundry_cleaning_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLaundryCleaningServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "legal_services_attorneys")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLegalServicesAttorneys
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "luggage_and_leather_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLuggageAndLeatherGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "lumber_building_materials_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringLumberBuildingMaterialsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual_cash_disburse")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringManualCashDisburse
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "marinas_service_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMarinasServiceAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masonry_stonework_and_plaster")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMasonryStoneworkAndPlaster
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "massage_parlors")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMassageParlors
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_and_dental_labs")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMedicalAndDentalLabs
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_dental_ophthalmic_and_hospital_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMedicalDentalOphthalmicAndHospitalEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "medical_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMedicalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "membership_organizations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMembershipOrganizations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_and_boys_clothing_and_accessories_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMensAndBoysClothingAndAccessoriesStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mens_womens_clothing_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMensWomensClothingStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metal_service_centers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMetalServiceCenters
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneous
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_apparel_and_accessory_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousApparelAndAccessoryShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_auto_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousAutoDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_business_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousBusinessServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_food_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousFoodStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_merchandise")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousGeneralMerchandise
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_general_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousGeneralServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_home_furnishing_specialty_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousHomeFurnishingSpecialtyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_publishing_and_printing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousPublishingAndPrinting
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_recreation_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousRecreationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_repair_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousRepairShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "miscellaneous_specialty_retail")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMiscellaneousSpecialtyRetail
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mobile_home_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMobileHomeDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motion_picture_theaters")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotionPictureTheaters
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_freight_carriers_and_trucking")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorFreightCarriersAndTrucking
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_homes_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorHomesDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motor_vehicle_supplies_and_new_parts")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorVehicleSuppliesAndNewParts
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_and_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorcycleShopsAndDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "motorcycle_shops_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMotorcycleShopsDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "music_stores_musical_instruments_pianos_and_sheet_music")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringMusicStoresMusicalInstrumentsPianosAndSheetMusic
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "news_dealers_and_newsstands")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNewsDealersAndNewsstands
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_money_orders")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNonFiMoneyOrders
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_fi_stored_value_card_purchase_load")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNonFiStoredValueCardPurchaseLoad
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nondurable_goods")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNondurableGoods
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nurseries_lawn_and_garden_supply_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNurseriesLawnAndGardenSupplyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nursing_personal_care")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringNursingPersonalCare
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "office_and_commercial_furniture")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOfficeAndCommercialFurniture
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "opticians_eyeglasses")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOpticiansEyeglasses
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "optometrists_ophthalmologist")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOptometristsOphthalmologist
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "orthopedic_goods_prosthetic_devices")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOrthopedicGoodsProstheticDevices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "osteopaths")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringOsteopaths
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "package_stores_beer_wine_and_liquor")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPackageStoresBeerWineAndLiquor
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "paints_varnishes_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPaintsVarnishesAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "parking_lots_garages")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringParkingLotsGarages
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "passenger_railways")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPassengerRailways
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pawn_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPawnShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pet_shops_pet_food_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPetShopsPetFoodAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "petroleum_and_petroleum_products")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPetroleumAndPetroleumProducts
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photo_developing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPhotoDeveloping
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_photocopy_microfilm_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPhotographicPhotocopyMicrofilmEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "photographic_studios")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPhotographicStudios
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "picture_video_production")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPictureVideoProduction
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "piece_goods_notions_and_other_dry_goods")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPieceGoodsNotionsAndOtherDryGoods
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plumbing_heating_equipment_and_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPlumbingHeatingEquipmentAndSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "political_organizations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPoliticalOrganizations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "postal_services_government_only")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPostalServicesGovernmentOnly
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "precious_stones_and_metals_watches_and_jewelry")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPreciousStonesAndMetalsWatchesAndJewelry
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "professional_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringProfessionalServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "public_warehousing_and_storage")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringPublicWarehousingAndStorage
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "quick_copy_repro_and_blueprint")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringQuickCopyReproAndBlueprint
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "railroads")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRailroads
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "real_estate_agents_and_managers_rentals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRealEstateAgentsAndManagersRentals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "record_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRecordStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "recreational_vehicle_rentals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRecreationalVehicleRentals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringReligiousGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "religious_organizations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringReligiousOrganizations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "roofing_siding_sheet_metal")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringRoofingSidingSheetMetal
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "secretarial_support_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSecretarialSupportServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "security_brokers_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSecurityBrokersDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "service_stations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringServiceStations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sewing_needlework_fabric_and_piece_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSewingNeedleworkFabricAndPieceGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_repair_hat_cleaning")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringShoeRepairHatCleaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "shoe_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringShoeStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "small_appliance_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSmallApplianceRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "snowmobile_dealers")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSnowmobileDealers
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "special_trade_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSpecialTradeServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "specialty_cleaning")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSpecialtyCleaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_goods_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSportingGoodsStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sporting_recreation_camps")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSportingRecreationCamps
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_and_riding_apparel_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSportsAndRidingApparelStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sports_clubs_fields")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSportsClubsFields
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stamp_and_coin_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringStampAndCoinStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationary_office_supplies_printing_and_writing_paper")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringStationaryOfficeSuppliesPrintingAndWritingPaper
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "stationery_stores_office_and_school_supply_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringStationeryStoresOfficeAndSchoolSupplyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "swimming_pools_sales")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringSwimmingPoolsSales
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "t_ui_travel_germany")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTUiTravelGermany
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tailors_alterations")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTailorsAlterations
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_payments_government_agencies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTaxPaymentsGovernmentAgencies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_preparation_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTaxPreparationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "taxicabs_limousines")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTaxicabsLimousines
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_equipment_and_telephone_sales")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTelecommunicationEquipmentAndTelephoneSales
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telecommunication_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTelecommunicationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "telegraph_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTelegraphServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tent_and_awning_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTentAndAwningShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "testing_laboratories")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTestingLaboratories
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "theatrical_ticket_agencies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTheatricalTicketAgencies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "timeshares")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTimeshares
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tire_retreading_and_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTireRetreadingAndRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tolls_bridge_fees")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTollsBridgeFees
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tourist_attractions_and_exhibits")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTouristAttractionsAndExhibits
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "towing_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTowingServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "trailer_parks_campgrounds")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTrailerParksCampgrounds
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transportation_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTransportationServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "travel_agencies_tour_operators")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTravelAgenciesTourOperators
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_stop_iteration")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTruckStopIteration
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "truck_utility_trailer_rentals")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTruckUtilityTrailerRentals
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typesetting_plate_making_and_related_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTypesettingPlateMakingAndRelatedServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "typewriter_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringTypewriterStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "u_s_federal_government_agencies_or_departments")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringUSFederalGovernmentAgenciesOrDepartments
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "uniforms_commercial_clothing")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringUniformsCommercialClothing
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "used_merchandise_and_secondhand_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringUsedMerchandiseAndSecondhandStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "utilities")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringUtilities
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "variety_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVarietyStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "veterinary_services")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVeterinaryServices
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_amusement_game_supplies")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVideoAmusementGameSupplies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_game_arcades")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVideoGameArcades
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "video_tape_rental_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVideoTapeRentalStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "vocational_trade_schools")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringVocationalTradeSchools
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "watch_jewelry_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWatchJewelryRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "welding_repair")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWeldingRepair
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wholesale_clubs")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWholesaleClubs
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wig_and_toupee_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWigAndToupeeStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wires_money_orders")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWiresMoneyOrders
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_accessory_and_specialty_shops")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWomensAccessoryAndSpecialtyShops
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "womens_ready_to_wear_stores")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWomensReadyToWearStores
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wrecking_and_salvage_yards")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      then Issuing'cardholderAuthorizationControls'BlockedCategories'EnumStringWreckingAndSalvageYards
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      else Issuing'cardholderAuthorizationControls'BlockedCategories'EnumOther val
      )

-- | Defines the data type for the schema issuing.cardholderCompany\'
--
-- Additional information about a \\\`business_entity\\\` cardholder.
data Issuing'cardholderCompany'
  = Issuing'cardholderCompany'
      { -- | tax_id_provided: Whether the company\'s business ID number was provided.
        issuing'cardholderCompany'TaxIdProvided :: (GHC.Maybe.Maybe GHC.Types.Bool)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardholderCompany' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "tax_id_provided" (issuing'cardholderCompany'TaxIdProvided obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "tax_id_provided" (issuing'cardholderCompany'TaxIdProvided obj))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardholderCompany' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardholderCompany'" (\obj -> GHC.Base.pure Issuing'cardholderCompany' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_id_provided"))

-- | Defines the data type for the schema issuing.cardholderIndividual\'
--
-- Additional information about an \\\`individual\\\` cardholder.
data Issuing'cardholderIndividual'
  = Issuing'cardholderIndividual'
      { -- | dob: The date of birth of this cardholder.
        issuing'cardholderIndividual'Dob :: (GHC.Maybe.Maybe Issuing'cardholderIndividual'Dob'),
        -- | first_name: The first name of this cardholder.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardholderIndividual'FirstName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | last_name: The last name of this cardholder.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'cardholderIndividual'LastName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verification: Government-issued ID document for this cardholder.
        issuing'cardholderIndividual'Verification :: (GHC.Maybe.Maybe Issuing'cardholderIndividual'Verification')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardholderIndividual' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "dob" (issuing'cardholderIndividual'Dob obj) : (Data.Aeson..=) "first_name" (issuing'cardholderIndividual'FirstName obj) : (Data.Aeson..=) "last_name" (issuing'cardholderIndividual'LastName obj) : (Data.Aeson..=) "verification" (issuing'cardholderIndividual'Verification obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "dob" (issuing'cardholderIndividual'Dob obj) GHC.Base.<> ((Data.Aeson..=) "first_name" (issuing'cardholderIndividual'FirstName obj) GHC.Base.<> ((Data.Aeson..=) "last_name" (issuing'cardholderIndividual'LastName obj) GHC.Base.<> (Data.Aeson..=) "verification" (issuing'cardholderIndividual'Verification obj))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardholderIndividual' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardholderIndividual'" (\obj -> (((GHC.Base.pure Issuing'cardholderIndividual' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dob")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "first_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verification"))

-- | Defines the data type for the schema issuing.cardholderIndividual\'Dob\'
--
-- The date of birth of this cardholder.
data Issuing'cardholderIndividual'Dob'
  = Issuing'cardholderIndividual'Dob'
      { -- | day: The day of birth, between 1 and 31.
        issuing'cardholderIndividual'Dob'Day :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | month: The month of birth, between 1 and 12.
        issuing'cardholderIndividual'Dob'Month :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | year: The four-digit year of birth.
        issuing'cardholderIndividual'Dob'Year :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardholderIndividual'Dob' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "day" (issuing'cardholderIndividual'Dob'Day obj) : (Data.Aeson..=) "month" (issuing'cardholderIndividual'Dob'Month obj) : (Data.Aeson..=) "year" (issuing'cardholderIndividual'Dob'Year obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "day" (issuing'cardholderIndividual'Dob'Day obj) GHC.Base.<> ((Data.Aeson..=) "month" (issuing'cardholderIndividual'Dob'Month obj) GHC.Base.<> (Data.Aeson..=) "year" (issuing'cardholderIndividual'Dob'Year obj)))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardholderIndividual'Dob' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardholderIndividual'Dob'" (\obj -> ((GHC.Base.pure Issuing'cardholderIndividual'Dob' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "day")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "year"))

-- | Defines the data type for the schema issuing.cardholderIndividual\'Verification\'
--
-- Government-issued ID document for this cardholder.
data Issuing'cardholderIndividual'Verification'
  = Issuing'cardholderIndividual'Verification'
      { -- | document: An identifying document, either a passport or local ID card.
        issuing'cardholderIndividual'Verification'Document :: (GHC.Maybe.Maybe Issuing'cardholderIndividual'Verification'Document')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardholderIndividual'Verification' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "document" (issuing'cardholderIndividual'Verification'Document obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "document" (issuing'cardholderIndividual'Verification'Document obj))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardholderIndividual'Verification' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardholderIndividual'Verification'" (\obj -> GHC.Base.pure Issuing'cardholderIndividual'Verification' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "document"))

-- | Defines the data type for the schema issuing.cardholderIndividual\'Verification\'Document\'
--
-- An identifying document, either a passport or local ID card.
data Issuing'cardholderIndividual'Verification'Document'
  = Issuing'cardholderIndividual'Verification'Document'
      { -- | back: The back of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
        issuing'cardholderIndividual'Verification'Document'Back :: (GHC.Maybe.Maybe Issuing'cardholderIndividual'Verification'Document'Back'Variants),
        -- | front: The front of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
        issuing'cardholderIndividual'Verification'Document'Front :: (GHC.Maybe.Maybe Issuing'cardholderIndividual'Verification'Document'Front'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardholderIndividual'Verification'Document' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "back" (issuing'cardholderIndividual'Verification'Document'Back obj) : (Data.Aeson..=) "front" (issuing'cardholderIndividual'Verification'Document'Front obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "back" (issuing'cardholderIndividual'Verification'Document'Back obj) GHC.Base.<> (Data.Aeson..=) "front" (issuing'cardholderIndividual'Verification'Document'Front obj))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardholderIndividual'Verification'Document' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardholderIndividual'Verification'Document'" (\obj -> (GHC.Base.pure Issuing'cardholderIndividual'Verification'Document' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "back")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "front"))

-- | Define the one-of schema issuing.cardholderIndividual\'Verification\'Document\'Back\'
--
-- The back of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
data Issuing'cardholderIndividual'Verification'Document'Back'Variants
  = Issuing'cardholderIndividual'Verification'Document'Back'File File
  | Issuing'cardholderIndividual'Verification'Document'Back'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Issuing'cardholderIndividual'Verification'Document'Back'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Issuing'cardholderIndividual'Verification'Document'Back'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema issuing.cardholderIndividual\'Verification\'Document\'Front\'
--
-- The front of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
data Issuing'cardholderIndividual'Verification'Document'Front'Variants
  = Issuing'cardholderIndividual'Verification'Document'Front'File File
  | Issuing'cardholderIndividual'Verification'Document'Front'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Issuing'cardholderIndividual'Verification'Document'Front'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Issuing'cardholderIndividual'Verification'Document'Front'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing.cardholderMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data Issuing'cardholderMetadata'
  = Issuing'cardholderMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'cardholderMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'cardholderMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'cardholderMetadata'" (\obj -> GHC.Base.pure Issuing'cardholderMetadata')

-- | Defines the enum schema issuing.cardholderObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data Issuing'cardholderObject'
  = Issuing'cardholderObject'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardholderObject'EnumTyped Data.Text.Internal.Text
  | Issuing'cardholderObject'EnumStringIssuing'cardholder
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardholderObject' where
  toJSON (Issuing'cardholderObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardholderObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardholderObject'EnumStringIssuing'cardholder) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.cardholder"

instance Data.Aeson.FromJSON Issuing'cardholderObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.cardholder")
          then Issuing'cardholderObject'EnumStringIssuing'cardholder
          else Issuing'cardholderObject'EnumOther val
      )

-- | Defines the enum schema issuing.cardholderStatus\'
--
-- Specifies whether to permit authorizations on this cardholder\'s cards.
data Issuing'cardholderStatus'
  = Issuing'cardholderStatus'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardholderStatus'EnumTyped Data.Text.Internal.Text
  | Issuing'cardholderStatus'EnumStringActive
  | Issuing'cardholderStatus'EnumStringBlocked
  | Issuing'cardholderStatus'EnumStringInactive
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardholderStatus' where
  toJSON (Issuing'cardholderStatus'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardholderStatus'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardholderStatus'EnumStringActive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active"
  toJSON (Issuing'cardholderStatus'EnumStringBlocked) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "blocked"
  toJSON (Issuing'cardholderStatus'EnumStringInactive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "inactive"

instance Data.Aeson.FromJSON Issuing'cardholderStatus' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active")
          then Issuing'cardholderStatus'EnumStringActive
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "blocked")
              then Issuing'cardholderStatus'EnumStringBlocked
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "inactive")
                  then Issuing'cardholderStatus'EnumStringInactive
                  else Issuing'cardholderStatus'EnumOther val
      )

-- | Defines the enum schema issuing.cardholderType\'
--
-- One of \`individual\` or \`business_entity\`.
data Issuing'cardholderType'
  = Issuing'cardholderType'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'cardholderType'EnumTyped Data.Text.Internal.Text
  | Issuing'cardholderType'EnumStringBusinessEntity
  | Issuing'cardholderType'EnumStringIndividual
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'cardholderType' where
  toJSON (Issuing'cardholderType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardholderType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'cardholderType'EnumStringBusinessEntity) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "business_entity"
  toJSON (Issuing'cardholderType'EnumStringIndividual) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "individual"

instance Data.Aeson.FromJSON Issuing'cardholderType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "business_entity")
          then Issuing'cardholderType'EnumStringBusinessEntity
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "individual")
              then Issuing'cardholderType'EnumStringIndividual
              else Issuing'cardholderType'EnumOther val
      )

-- | Defines the data type for the schema issuing.dispute
--
-- As a [card issuer](https:\/\/stripe.com\/docs\/issuing), you can [dispute](https:\/\/stripe.com\/docs\/issuing\/disputes) transactions that you do not recognize, suspect to be fraudulent, or have some other issue.
--
-- Related guide: [Disputing Transactions](https:\/\/stripe.com\/docs\/issuing\/disputes)
data Issuing'dispute
  = Issuing'dispute
      { -- | amount: Disputed amount. Usually the amount of the \`disputed_transaction\`, but can differ (usually because of currency fluctuation or because only part of the order is disputed).
        issuing'disputeAmount :: GHC.Integer.Type.Integer,
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        issuing'disputeCreated :: GHC.Integer.Type.Integer,
        -- | currency: The currency the \`disputed_transaction\` was made in.
        issuing'disputeCurrency :: Data.Text.Internal.Text,
        -- | disputed_transaction: The transaction being disputed.
        issuing'disputeDisputedTransaction :: Issuing'disputeDisputedTransaction'Variants,
        -- | evidence:
        issuing'disputeEvidence :: IssuingDisputeEvidence,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'disputeId :: 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.
        issuing'disputeLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        issuing'disputeMetadata :: Issuing'disputeMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        issuing'disputeObject :: Issuing'disputeObject',
        -- | reason: Reason for this dispute. One of \`duplicate\`, \`product_not_received\`, \`fraudulent\`, or \`other\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'disputeReason :: Data.Text.Internal.Text,
        -- | status: Current status of dispute. One of \`unsubmitted\`, \`under_review\`, \`won\`, or \`lost\`.
        issuing'disputeStatus :: Issuing'disputeStatus'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'dispute where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (issuing'disputeAmount obj) : (Data.Aeson..=) "created" (issuing'disputeCreated obj) : (Data.Aeson..=) "currency" (issuing'disputeCurrency obj) : (Data.Aeson..=) "disputed_transaction" (issuing'disputeDisputedTransaction obj) : (Data.Aeson..=) "evidence" (issuing'disputeEvidence obj) : (Data.Aeson..=) "id" (issuing'disputeId obj) : (Data.Aeson..=) "livemode" (issuing'disputeLivemode obj) : (Data.Aeson..=) "metadata" (issuing'disputeMetadata obj) : (Data.Aeson..=) "object" (issuing'disputeObject obj) : (Data.Aeson..=) "reason" (issuing'disputeReason obj) : (Data.Aeson..=) "status" (issuing'disputeStatus obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (issuing'disputeAmount obj) GHC.Base.<> ((Data.Aeson..=) "created" (issuing'disputeCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (issuing'disputeCurrency obj) GHC.Base.<> ((Data.Aeson..=) "disputed_transaction" (issuing'disputeDisputedTransaction obj) GHC.Base.<> ((Data.Aeson..=) "evidence" (issuing'disputeEvidence obj) GHC.Base.<> ((Data.Aeson..=) "id" (issuing'disputeId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (issuing'disputeLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (issuing'disputeMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (issuing'disputeObject obj) GHC.Base.<> ((Data.Aeson..=) "reason" (issuing'disputeReason obj) GHC.Base.<> (Data.Aeson..=) "status" (issuing'disputeStatus obj)))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'dispute where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'dispute" (\obj -> ((((((((((GHC.Base.pure Issuing'dispute GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "disputed_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "evidence")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status"))

-- | Define the one-of schema issuing.disputeDisputed_transaction\'
--
-- The transaction being disputed.
data Issuing'disputeDisputedTransaction'Variants
  = Issuing'disputeDisputedTransaction'Issuing'transaction Issuing'transaction
  | Issuing'disputeDisputedTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Issuing'disputeDisputedTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Issuing'disputeDisputedTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing.disputeMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data Issuing'disputeMetadata'
  = Issuing'disputeMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'disputeMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'disputeMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'disputeMetadata'" (\obj -> GHC.Base.pure Issuing'disputeMetadata')

-- | Defines the enum schema issuing.disputeObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data Issuing'disputeObject'
  = Issuing'disputeObject'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'disputeObject'EnumTyped Data.Text.Internal.Text
  | Issuing'disputeObject'EnumStringIssuing'dispute
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'disputeObject' where
  toJSON (Issuing'disputeObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'disputeObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'disputeObject'EnumStringIssuing'dispute) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.dispute"

instance Data.Aeson.FromJSON Issuing'disputeObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.dispute")
          then Issuing'disputeObject'EnumStringIssuing'dispute
          else Issuing'disputeObject'EnumOther val
      )

-- | Defines the enum schema issuing.disputeStatus\'
--
-- Current status of dispute. One of \`unsubmitted\`, \`under_review\`, \`won\`, or \`lost\`.
data Issuing'disputeStatus'
  = Issuing'disputeStatus'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'disputeStatus'EnumTyped Data.Text.Internal.Text
  | Issuing'disputeStatus'EnumStringLost
  | Issuing'disputeStatus'EnumStringUnderReview
  | Issuing'disputeStatus'EnumStringUnsubmitted
  | Issuing'disputeStatus'EnumStringWon
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'disputeStatus' where
  toJSON (Issuing'disputeStatus'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'disputeStatus'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'disputeStatus'EnumStringLost) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "lost"
  toJSON (Issuing'disputeStatus'EnumStringUnderReview) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "under_review"
  toJSON (Issuing'disputeStatus'EnumStringUnsubmitted) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unsubmitted"
  toJSON (Issuing'disputeStatus'EnumStringWon) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "won"

instance Data.Aeson.FromJSON Issuing'disputeStatus' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "lost")
          then Issuing'disputeStatus'EnumStringLost
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "under_review")
              then Issuing'disputeStatus'EnumStringUnderReview
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unsubmitted")
                  then Issuing'disputeStatus'EnumStringUnsubmitted
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "won")
                      then Issuing'disputeStatus'EnumStringWon
                      else Issuing'disputeStatus'EnumOther val
      )

-- | Defines the data type for the schema issuing.transaction
--
-- Any use of an [issued card](https:\/\/stripe.com\/docs\/issuing) that results in funds entering or leaving
-- your Stripe account, such as a completed purchase or refund, is represented by an Issuing
-- \`Transaction\` object.
--
-- Related guide: [Issued Card Transactions](https:\/\/stripe.com\/docs\/issuing\/transactions).
data Issuing'transaction
  = Issuing'transaction
      { -- | amount: The amount of this transaction in your currency. This is the amount that your balance will be updated by.
        issuing'transactionAmount :: GHC.Integer.Type.Integer,
        -- | authorization: The \`Authorization\` object that led to this transaction.
        issuing'transactionAuthorization :: (GHC.Maybe.Maybe Issuing'transactionAuthorization'Variants),
        -- | balance_transaction: ID of the [balance transaction](https:\/\/stripe.com\/docs\/api\/balance_transactions) associated with this transaction.
        issuing'transactionBalanceTransaction :: (GHC.Maybe.Maybe Issuing'transactionBalanceTransaction'Variants),
        -- | card: The card used to make this transaction.
        issuing'transactionCard :: Issuing'transactionCard'Variants,
        -- | cardholder: The cardholder to whom this transaction belongs.
        issuing'transactionCardholder :: (GHC.Maybe.Maybe Issuing'transactionCardholder'Variants),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        issuing'transactionCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        issuing'transactionCurrency :: Data.Text.Internal.Text,
        -- | dispute: If you\'ve disputed the transaction, the ID of the [dispute object](https:\/\/stripe.com\/docs\/api\/issuing\/disputes\/object).
        issuing'transactionDispute :: (GHC.Maybe.Maybe Issuing'transactionDispute'Variants),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuing'transactionId :: 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.
        issuing'transactionLivemode :: GHC.Types.Bool,
        -- | merchant_amount: The amount that the merchant will receive, denominated in \`merchant_currency\`. It will be different from \`amount\` if the merchant is taking payment in a different currency.
        issuing'transactionMerchantAmount :: GHC.Integer.Type.Integer,
        -- | merchant_currency: The currency with which the merchant is taking payment.
        issuing'transactionMerchantCurrency :: Data.Text.Internal.Text,
        -- | merchant_data:
        issuing'transactionMerchantData :: IssuingAuthorizationMerchantData,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        issuing'transactionMetadata :: Issuing'transactionMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        issuing'transactionObject :: Issuing'transactionObject',
        -- | type: The nature of the transaction.
        issuing'transactionType :: Issuing'transactionType'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'transaction where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (issuing'transactionAmount obj) : (Data.Aeson..=) "authorization" (issuing'transactionAuthorization obj) : (Data.Aeson..=) "balance_transaction" (issuing'transactionBalanceTransaction obj) : (Data.Aeson..=) "card" (issuing'transactionCard obj) : (Data.Aeson..=) "cardholder" (issuing'transactionCardholder obj) : (Data.Aeson..=) "created" (issuing'transactionCreated obj) : (Data.Aeson..=) "currency" (issuing'transactionCurrency obj) : (Data.Aeson..=) "dispute" (issuing'transactionDispute obj) : (Data.Aeson..=) "id" (issuing'transactionId obj) : (Data.Aeson..=) "livemode" (issuing'transactionLivemode obj) : (Data.Aeson..=) "merchant_amount" (issuing'transactionMerchantAmount obj) : (Data.Aeson..=) "merchant_currency" (issuing'transactionMerchantCurrency obj) : (Data.Aeson..=) "merchant_data" (issuing'transactionMerchantData obj) : (Data.Aeson..=) "metadata" (issuing'transactionMetadata obj) : (Data.Aeson..=) "object" (issuing'transactionObject obj) : (Data.Aeson..=) "type" (issuing'transactionType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (issuing'transactionAmount obj) GHC.Base.<> ((Data.Aeson..=) "authorization" (issuing'transactionAuthorization obj) GHC.Base.<> ((Data.Aeson..=) "balance_transaction" (issuing'transactionBalanceTransaction obj) GHC.Base.<> ((Data.Aeson..=) "card" (issuing'transactionCard obj) GHC.Base.<> ((Data.Aeson..=) "cardholder" (issuing'transactionCardholder obj) GHC.Base.<> ((Data.Aeson..=) "created" (issuing'transactionCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (issuing'transactionCurrency obj) GHC.Base.<> ((Data.Aeson..=) "dispute" (issuing'transactionDispute obj) GHC.Base.<> ((Data.Aeson..=) "id" (issuing'transactionId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (issuing'transactionLivemode obj) GHC.Base.<> ((Data.Aeson..=) "merchant_amount" (issuing'transactionMerchantAmount obj) GHC.Base.<> ((Data.Aeson..=) "merchant_currency" (issuing'transactionMerchantCurrency obj) GHC.Base.<> ((Data.Aeson..=) "merchant_data" (issuing'transactionMerchantData obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (issuing'transactionMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (issuing'transactionObject obj) GHC.Base.<> (Data.Aeson..=) "type" (issuing'transactionType obj))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'transaction where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'transaction" (\obj -> (((((((((((((((GHC.Base.pure Issuing'transaction GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "authorization")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "balance_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cardholder")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dispute")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "merchant_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "merchant_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "merchant_data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type"))

-- | Define the one-of schema issuing.transactionAuthorization\'
--
-- The \`Authorization\` object that led to this transaction.
data Issuing'transactionAuthorization'Variants
  = Issuing'transactionAuthorization'Issuing'authorization Issuing'authorization
  | Issuing'transactionAuthorization'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Issuing'transactionAuthorization'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Issuing'transactionAuthorization'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema issuing.transactionBalance_transaction\'
--
-- ID of the [balance transaction](https:\/\/stripe.com\/docs\/api\/balance_transactions) associated with this transaction.
data Issuing'transactionBalanceTransaction'Variants
  = Issuing'transactionBalanceTransaction'BalanceTransaction BalanceTransaction
  | Issuing'transactionBalanceTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Issuing'transactionBalanceTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Issuing'transactionBalanceTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema issuing.transactionCard\'
--
-- The card used to make this transaction.
data Issuing'transactionCard'Variants
  = Issuing'transactionCard'Issuing'card Issuing'card
  | Issuing'transactionCard'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Issuing'transactionCard'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Issuing'transactionCard'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema issuing.transactionCardholder\'
--
-- The cardholder to whom this transaction belongs.
data Issuing'transactionCardholder'Variants
  = Issuing'transactionCardholder'Issuing'cardholder Issuing'cardholder
  | Issuing'transactionCardholder'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Issuing'transactionCardholder'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Issuing'transactionCardholder'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema issuing.transactionDispute\'
--
-- If you\'ve disputed the transaction, the ID of the [dispute object](https:\/\/stripe.com\/docs\/api\/issuing\/disputes\/object).
data Issuing'transactionDispute'Variants
  = Issuing'transactionDispute'Issuing'dispute Issuing'dispute
  | Issuing'transactionDispute'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Issuing'transactionDispute'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Issuing'transactionDispute'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing.transactionMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data Issuing'transactionMetadata'
  = Issuing'transactionMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Issuing'transactionMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'transactionMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'transactionMetadata'" (\obj -> GHC.Base.pure Issuing'transactionMetadata')

-- | Defines the enum schema issuing.transactionObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data Issuing'transactionObject'
  = Issuing'transactionObject'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'transactionObject'EnumTyped Data.Text.Internal.Text
  | Issuing'transactionObject'EnumStringIssuing'transaction
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'transactionObject' where
  toJSON (Issuing'transactionObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'transactionObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'transactionObject'EnumStringIssuing'transaction) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.transaction"

instance Data.Aeson.FromJSON Issuing'transactionObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "issuing.transaction")
          then Issuing'transactionObject'EnumStringIssuing'transaction
          else Issuing'transactionObject'EnumOther val
      )

-- | Defines the enum schema issuing.transactionType\'
--
-- The nature of the transaction.
data Issuing'transactionType'
  = Issuing'transactionType'EnumOther Data.Aeson.Types.Internal.Value
  | Issuing'transactionType'EnumTyped Data.Text.Internal.Text
  | Issuing'transactionType'EnumStringCapture
  | Issuing'transactionType'EnumStringCashWithdrawal
  | Issuing'transactionType'EnumStringDispute
  | Issuing'transactionType'EnumStringDisputeLoss
  | Issuing'transactionType'EnumStringRefund
  | Issuing'transactionType'EnumStringRefundReversal
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Issuing'transactionType' where
  toJSON (Issuing'transactionType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'transactionType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Issuing'transactionType'EnumStringCapture) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "capture"
  toJSON (Issuing'transactionType'EnumStringCashWithdrawal) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cash_withdrawal"
  toJSON (Issuing'transactionType'EnumStringDispute) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dispute"
  toJSON (Issuing'transactionType'EnumStringDisputeLoss) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dispute_loss"
  toJSON (Issuing'transactionType'EnumStringRefund) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "refund"
  toJSON (Issuing'transactionType'EnumStringRefundReversal) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "refund_reversal"

instance Data.Aeson.FromJSON Issuing'transactionType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "capture")
          then Issuing'transactionType'EnumStringCapture
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cash_withdrawal")
              then Issuing'transactionType'EnumStringCashWithdrawal
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dispute")
                  then Issuing'transactionType'EnumStringDispute
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "dispute_loss")
                      then Issuing'transactionType'EnumStringDisputeLoss
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "refund")
                          then Issuing'transactionType'EnumStringRefund
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "refund_reversal")
                              then Issuing'transactionType'EnumStringRefundReversal
                              else Issuing'transactionType'EnumOther val
      )

-- | Defines the data type for the schema issuing_cardholder_id_document
data IssuingCardholderIdDocument
  = IssuingCardholderIdDocument
      { -- | back: The back of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
        issuingCardholderIdDocumentBack :: (GHC.Maybe.Maybe IssuingCardholderIdDocumentBack'Variants),
        -- | front: The front of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
        issuingCardholderIdDocumentFront :: (GHC.Maybe.Maybe IssuingCardholderIdDocumentFront'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingCardholderIdDocument where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "back" (issuingCardholderIdDocumentBack obj) : (Data.Aeson..=) "front" (issuingCardholderIdDocumentFront obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "back" (issuingCardholderIdDocumentBack obj) GHC.Base.<> (Data.Aeson..=) "front" (issuingCardholderIdDocumentFront obj))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingCardholderIdDocument where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingCardholderIdDocument" (\obj -> (GHC.Base.pure IssuingCardholderIdDocument GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "back")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "front"))

-- | Define the one-of schema issuing_cardholder_id_documentBack\'
--
-- The back of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
data IssuingCardholderIdDocumentBack'Variants
  = IssuingCardholderIdDocumentBack'File File
  | IssuingCardholderIdDocumentBack'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuingCardholderIdDocumentBack'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuingCardholderIdDocumentBack'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema issuing_cardholder_id_documentFront\'
--
-- The front of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
data IssuingCardholderIdDocumentFront'Variants
  = IssuingCardholderIdDocumentFront'File File
  | IssuingCardholderIdDocumentFront'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuingCardholderIdDocumentFront'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuingCardholderIdDocumentFront'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing_cardholder_individual
data IssuingCardholderIndividual
  = IssuingCardholderIndividual
      { -- | dob: The date of birth of this cardholder.
        issuingCardholderIndividualDob :: (GHC.Maybe.Maybe IssuingCardholderIndividualDob'),
        -- | first_name: The first name of this cardholder.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuingCardholderIndividualFirstName :: Data.Text.Internal.Text,
        -- | last_name: The last name of this cardholder.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuingCardholderIndividualLastName :: Data.Text.Internal.Text,
        -- | verification: Government-issued ID document for this cardholder.
        issuingCardholderIndividualVerification :: (GHC.Maybe.Maybe IssuingCardholderIndividualVerification')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingCardholderIndividual where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "dob" (issuingCardholderIndividualDob obj) : (Data.Aeson..=) "first_name" (issuingCardholderIndividualFirstName obj) : (Data.Aeson..=) "last_name" (issuingCardholderIndividualLastName obj) : (Data.Aeson..=) "verification" (issuingCardholderIndividualVerification obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "dob" (issuingCardholderIndividualDob obj) GHC.Base.<> ((Data.Aeson..=) "first_name" (issuingCardholderIndividualFirstName obj) GHC.Base.<> ((Data.Aeson..=) "last_name" (issuingCardholderIndividualLastName obj) GHC.Base.<> (Data.Aeson..=) "verification" (issuingCardholderIndividualVerification obj))))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingCardholderIndividual where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingCardholderIndividual" (\obj -> (((GHC.Base.pure IssuingCardholderIndividual GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dob")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "first_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "last_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verification"))

-- | Defines the data type for the schema issuing_cardholder_individualDob\'
--
-- The date of birth of this cardholder.
data IssuingCardholderIndividualDob'
  = IssuingCardholderIndividualDob'
      { -- | day: The day of birth, between 1 and 31.
        issuingCardholderIndividualDob'Day :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | month: The month of birth, between 1 and 12.
        issuingCardholderIndividualDob'Month :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | year: The four-digit year of birth.
        issuingCardholderIndividualDob'Year :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingCardholderIndividualDob' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "day" (issuingCardholderIndividualDob'Day obj) : (Data.Aeson..=) "month" (issuingCardholderIndividualDob'Month obj) : (Data.Aeson..=) "year" (issuingCardholderIndividualDob'Year obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "day" (issuingCardholderIndividualDob'Day obj) GHC.Base.<> ((Data.Aeson..=) "month" (issuingCardholderIndividualDob'Month obj) GHC.Base.<> (Data.Aeson..=) "year" (issuingCardholderIndividualDob'Year obj)))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingCardholderIndividualDob' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingCardholderIndividualDob'" (\obj -> ((GHC.Base.pure IssuingCardholderIndividualDob' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "day")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "year"))

-- | Defines the data type for the schema issuing_cardholder_individualVerification\'
--
-- Government-issued ID document for this cardholder.
data IssuingCardholderIndividualVerification'
  = IssuingCardholderIndividualVerification'
      { -- | document: An identifying document, either a passport or local ID card.
        issuingCardholderIndividualVerification'Document :: (GHC.Maybe.Maybe IssuingCardholderIndividualVerification'Document')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingCardholderIndividualVerification' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "document" (issuingCardholderIndividualVerification'Document obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "document" (issuingCardholderIndividualVerification'Document obj))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingCardholderIndividualVerification' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingCardholderIndividualVerification'" (\obj -> GHC.Base.pure IssuingCardholderIndividualVerification' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "document"))

-- | Defines the data type for the schema issuing_cardholder_individualVerification\'Document\'
--
-- An identifying document, either a passport or local ID card.
data IssuingCardholderIndividualVerification'Document'
  = IssuingCardholderIndividualVerification'Document'
      { -- | back: The back of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
        issuingCardholderIndividualVerification'Document'Back :: (GHC.Maybe.Maybe IssuingCardholderIndividualVerification'Document'Back'Variants),
        -- | front: The front of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
        issuingCardholderIndividualVerification'Document'Front :: (GHC.Maybe.Maybe IssuingCardholderIndividualVerification'Document'Front'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingCardholderIndividualVerification'Document' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "back" (issuingCardholderIndividualVerification'Document'Back obj) : (Data.Aeson..=) "front" (issuingCardholderIndividualVerification'Document'Front obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "back" (issuingCardholderIndividualVerification'Document'Back obj) GHC.Base.<> (Data.Aeson..=) "front" (issuingCardholderIndividualVerification'Document'Front obj))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingCardholderIndividualVerification'Document' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingCardholderIndividualVerification'Document'" (\obj -> (GHC.Base.pure IssuingCardholderIndividualVerification'Document' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "back")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "front"))

-- | Define the one-of schema issuing_cardholder_individualVerification\'Document\'Back\'
--
-- The back of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
data IssuingCardholderIndividualVerification'Document'Back'Variants
  = IssuingCardholderIndividualVerification'Document'Back'File File
  | IssuingCardholderIndividualVerification'Document'Back'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuingCardholderIndividualVerification'Document'Back'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuingCardholderIndividualVerification'Document'Back'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema issuing_cardholder_individualVerification\'Document\'Front\'
--
-- The front of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
data IssuingCardholderIndividualVerification'Document'Front'Variants
  = IssuingCardholderIndividualVerification'Document'Front'File File
  | IssuingCardholderIndividualVerification'Document'Front'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuingCardholderIndividualVerification'Document'Front'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuingCardholderIndividualVerification'Document'Front'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing_cardholder_verification
data IssuingCardholderVerification
  = IssuingCardholderVerification
      { -- | document: An identifying document, either a passport or local ID card.
        issuingCardholderVerificationDocument :: (GHC.Maybe.Maybe IssuingCardholderVerificationDocument')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingCardholderVerification where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "document" (issuingCardholderVerificationDocument obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "document" (issuingCardholderVerificationDocument obj))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingCardholderVerification where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingCardholderVerification" (\obj -> GHC.Base.pure IssuingCardholderVerification GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "document"))

-- | Defines the data type for the schema issuing_cardholder_verificationDocument\'
--
-- An identifying document, either a passport or local ID card.
data IssuingCardholderVerificationDocument'
  = IssuingCardholderVerificationDocument'
      { -- | back: The back of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
        issuingCardholderVerificationDocument'Back :: (GHC.Maybe.Maybe IssuingCardholderVerificationDocument'Back'Variants),
        -- | front: The front of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
        issuingCardholderVerificationDocument'Front :: (GHC.Maybe.Maybe IssuingCardholderVerificationDocument'Front'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingCardholderVerificationDocument' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "back" (issuingCardholderVerificationDocument'Back obj) : (Data.Aeson..=) "front" (issuingCardholderVerificationDocument'Front obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "back" (issuingCardholderVerificationDocument'Back obj) GHC.Base.<> (Data.Aeson..=) "front" (issuingCardholderVerificationDocument'Front obj))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingCardholderVerificationDocument' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingCardholderVerificationDocument'" (\obj -> (GHC.Base.pure IssuingCardholderVerificationDocument' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "back")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "front"))

-- | Define the one-of schema issuing_cardholder_verificationDocument\'Back\'
--
-- The back of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
data IssuingCardholderVerificationDocument'Back'Variants
  = IssuingCardholderVerificationDocument'Back'File File
  | IssuingCardholderVerificationDocument'Back'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuingCardholderVerificationDocument'Back'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuingCardholderVerificationDocument'Back'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema issuing_cardholder_verificationDocument\'Front\'
--
-- The front of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
data IssuingCardholderVerificationDocument'Front'Variants
  = IssuingCardholderVerificationDocument'Front'File File
  | IssuingCardholderVerificationDocument'Front'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuingCardholderVerificationDocument'Front'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuingCardholderVerificationDocument'Front'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing_dispute_duplicate_evidence
data IssuingDisputeDuplicateEvidence
  = IssuingDisputeDuplicateEvidence
      { -- | dispute_explanation: Brief freeform text explaining why you are disputing this transaction.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuingDisputeDuplicateEvidenceDisputeExplanation :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | original_transaction: Transaction (e.g., ipi_...) that the disputed transaction is a duplicate of. Of the two or more transactions that are copies of each other, this is original undisputed one.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuingDisputeDuplicateEvidenceOriginalTransaction :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | uncategorized_file: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
        issuingDisputeDuplicateEvidenceUncategorizedFile :: (GHC.Maybe.Maybe IssuingDisputeDuplicateEvidenceUncategorizedFile'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingDisputeDuplicateEvidence where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "dispute_explanation" (issuingDisputeDuplicateEvidenceDisputeExplanation obj) : (Data.Aeson..=) "original_transaction" (issuingDisputeDuplicateEvidenceOriginalTransaction obj) : (Data.Aeson..=) "uncategorized_file" (issuingDisputeDuplicateEvidenceUncategorizedFile obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "dispute_explanation" (issuingDisputeDuplicateEvidenceDisputeExplanation obj) GHC.Base.<> ((Data.Aeson..=) "original_transaction" (issuingDisputeDuplicateEvidenceOriginalTransaction obj) GHC.Base.<> (Data.Aeson..=) "uncategorized_file" (issuingDisputeDuplicateEvidenceUncategorizedFile obj)))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingDisputeDuplicateEvidence where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingDisputeDuplicateEvidence" (\obj -> ((GHC.Base.pure IssuingDisputeDuplicateEvidence GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dispute_explanation")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "original_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "uncategorized_file"))

-- | Define the one-of schema issuing_dispute_duplicate_evidenceUncategorized_file\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
data IssuingDisputeDuplicateEvidenceUncategorizedFile'Variants
  = IssuingDisputeDuplicateEvidenceUncategorizedFile'File File
  | IssuingDisputeDuplicateEvidenceUncategorizedFile'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuingDisputeDuplicateEvidenceUncategorizedFile'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuingDisputeDuplicateEvidenceUncategorizedFile'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing_dispute_evidence
data IssuingDisputeEvidence
  = IssuingDisputeEvidence
      { -- | duplicate: Evidence to support a duplicate product dispute. This will only be present if your dispute\'s \`reason\` is \`duplicate\`.
        issuingDisputeEvidenceDuplicate :: (GHC.Maybe.Maybe IssuingDisputeEvidenceDuplicate'),
        -- | fraudulent: Evidence to support a fraudulent dispute. This will only be present if your dispute\'s \`reason\` is \`fraudulent\`.
        issuingDisputeEvidenceFraudulent :: (GHC.Maybe.Maybe IssuingDisputeEvidenceFraudulent'),
        -- | other: Evidence to support an uncategorized dispute. This will only be present if your dispute\'s \`reason\` is \`other\`.
        issuingDisputeEvidenceOther :: (GHC.Maybe.Maybe IssuingDisputeEvidenceOther'),
        -- | product_not_received: Evidence to support a dispute where the product wasn\'t received. This will only be present if your dispute\'s \`reason\` is \`product_not_received\`.
        issuingDisputeEvidenceProductNotReceived :: (GHC.Maybe.Maybe IssuingDisputeEvidenceProductNotReceived')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingDisputeEvidence where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "duplicate" (issuingDisputeEvidenceDuplicate obj) : (Data.Aeson..=) "fraudulent" (issuingDisputeEvidenceFraudulent obj) : (Data.Aeson..=) "other" (issuingDisputeEvidenceOther obj) : (Data.Aeson..=) "product_not_received" (issuingDisputeEvidenceProductNotReceived obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "duplicate" (issuingDisputeEvidenceDuplicate obj) GHC.Base.<> ((Data.Aeson..=) "fraudulent" (issuingDisputeEvidenceFraudulent obj) GHC.Base.<> ((Data.Aeson..=) "other" (issuingDisputeEvidenceOther obj) GHC.Base.<> (Data.Aeson..=) "product_not_received" (issuingDisputeEvidenceProductNotReceived obj))))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingDisputeEvidence where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingDisputeEvidence" (\obj -> (((GHC.Base.pure IssuingDisputeEvidence GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "duplicate")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fraudulent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "other")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "product_not_received"))

-- | Defines the data type for the schema issuing_dispute_evidenceDuplicate\'
--
-- Evidence to support a duplicate product dispute. This will only be present if your dispute\\\'s \\\`reason\\\` is \\\`duplicate\\\`.
data IssuingDisputeEvidenceDuplicate'
  = IssuingDisputeEvidenceDuplicate'
      { -- | dispute_explanation: Brief freeform text explaining why you are disputing this transaction.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuingDisputeEvidenceDuplicate'DisputeExplanation :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | original_transaction: Transaction (e.g., ipi_...) that the disputed transaction is a duplicate of. Of the two or more transactions that are copies of each other, this is original undisputed one.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuingDisputeEvidenceDuplicate'OriginalTransaction :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | uncategorized_file: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
        issuingDisputeEvidenceDuplicate'UncategorizedFile :: (GHC.Maybe.Maybe IssuingDisputeEvidenceDuplicate'UncategorizedFile'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingDisputeEvidenceDuplicate' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "dispute_explanation" (issuingDisputeEvidenceDuplicate'DisputeExplanation obj) : (Data.Aeson..=) "original_transaction" (issuingDisputeEvidenceDuplicate'OriginalTransaction obj) : (Data.Aeson..=) "uncategorized_file" (issuingDisputeEvidenceDuplicate'UncategorizedFile obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "dispute_explanation" (issuingDisputeEvidenceDuplicate'DisputeExplanation obj) GHC.Base.<> ((Data.Aeson..=) "original_transaction" (issuingDisputeEvidenceDuplicate'OriginalTransaction obj) GHC.Base.<> (Data.Aeson..=) "uncategorized_file" (issuingDisputeEvidenceDuplicate'UncategorizedFile obj)))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingDisputeEvidenceDuplicate' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingDisputeEvidenceDuplicate'" (\obj -> ((GHC.Base.pure IssuingDisputeEvidenceDuplicate' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dispute_explanation")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "original_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "uncategorized_file"))

-- | Define the one-of schema issuing_dispute_evidenceDuplicate\'Uncategorized_file\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
data IssuingDisputeEvidenceDuplicate'UncategorizedFile'Variants
  = IssuingDisputeEvidenceDuplicate'UncategorizedFile'File File
  | IssuingDisputeEvidenceDuplicate'UncategorizedFile'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuingDisputeEvidenceDuplicate'UncategorizedFile'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuingDisputeEvidenceDuplicate'UncategorizedFile'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing_dispute_evidenceFraudulent\'
--
-- Evidence to support a fraudulent dispute. This will only be present if your dispute\\\'s \\\`reason\\\` is \\\`fraudulent\\\`.
data IssuingDisputeEvidenceFraudulent'
  = IssuingDisputeEvidenceFraudulent'
      { -- | dispute_explanation: Brief freeform text explaining why you are disputing this transaction.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuingDisputeEvidenceFraudulent'DisputeExplanation :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | uncategorized_file: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
        issuingDisputeEvidenceFraudulent'UncategorizedFile :: (GHC.Maybe.Maybe IssuingDisputeEvidenceFraudulent'UncategorizedFile'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingDisputeEvidenceFraudulent' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "dispute_explanation" (issuingDisputeEvidenceFraudulent'DisputeExplanation obj) : (Data.Aeson..=) "uncategorized_file" (issuingDisputeEvidenceFraudulent'UncategorizedFile obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "dispute_explanation" (issuingDisputeEvidenceFraudulent'DisputeExplanation obj) GHC.Base.<> (Data.Aeson..=) "uncategorized_file" (issuingDisputeEvidenceFraudulent'UncategorizedFile obj))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingDisputeEvidenceFraudulent' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingDisputeEvidenceFraudulent'" (\obj -> (GHC.Base.pure IssuingDisputeEvidenceFraudulent' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dispute_explanation")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "uncategorized_file"))

-- | Define the one-of schema issuing_dispute_evidenceFraudulent\'Uncategorized_file\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
data IssuingDisputeEvidenceFraudulent'UncategorizedFile'Variants
  = IssuingDisputeEvidenceFraudulent'UncategorizedFile'File File
  | IssuingDisputeEvidenceFraudulent'UncategorizedFile'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuingDisputeEvidenceFraudulent'UncategorizedFile'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuingDisputeEvidenceFraudulent'UncategorizedFile'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing_dispute_evidenceOther\'
--
-- Evidence to support an uncategorized dispute. This will only be present if your dispute\\\'s \\\`reason\\\` is \\\`other\\\`.
data IssuingDisputeEvidenceOther'
  = IssuingDisputeEvidenceOther'
      { -- | dispute_explanation: Brief freeform text explaining why you are disputing this transaction.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuingDisputeEvidenceOther'DisputeExplanation :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | uncategorized_file: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
        issuingDisputeEvidenceOther'UncategorizedFile :: (GHC.Maybe.Maybe IssuingDisputeEvidenceOther'UncategorizedFile'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingDisputeEvidenceOther' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "dispute_explanation" (issuingDisputeEvidenceOther'DisputeExplanation obj) : (Data.Aeson..=) "uncategorized_file" (issuingDisputeEvidenceOther'UncategorizedFile obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "dispute_explanation" (issuingDisputeEvidenceOther'DisputeExplanation obj) GHC.Base.<> (Data.Aeson..=) "uncategorized_file" (issuingDisputeEvidenceOther'UncategorizedFile obj))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingDisputeEvidenceOther' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingDisputeEvidenceOther'" (\obj -> (GHC.Base.pure IssuingDisputeEvidenceOther' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dispute_explanation")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "uncategorized_file"))

-- | Define the one-of schema issuing_dispute_evidenceOther\'Uncategorized_file\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
data IssuingDisputeEvidenceOther'UncategorizedFile'Variants
  = IssuingDisputeEvidenceOther'UncategorizedFile'File File
  | IssuingDisputeEvidenceOther'UncategorizedFile'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuingDisputeEvidenceOther'UncategorizedFile'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuingDisputeEvidenceOther'UncategorizedFile'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing_dispute_evidenceProduct_not_received\'
--
-- Evidence to support a dispute where the product wasn\\\'t received. This will only be present if your dispute\\\'s \\\`reason\\\` is \\\`product_not_received\\\`.
data IssuingDisputeEvidenceProductNotReceived'
  = IssuingDisputeEvidenceProductNotReceived'
      { -- | dispute_explanation: Brief freeform text explaining why you are disputing this transaction.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuingDisputeEvidenceProductNotReceived'DisputeExplanation :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | uncategorized_file: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
        issuingDisputeEvidenceProductNotReceived'UncategorizedFile :: (GHC.Maybe.Maybe IssuingDisputeEvidenceProductNotReceived'UncategorizedFile'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingDisputeEvidenceProductNotReceived' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "dispute_explanation" (issuingDisputeEvidenceProductNotReceived'DisputeExplanation obj) : (Data.Aeson..=) "uncategorized_file" (issuingDisputeEvidenceProductNotReceived'UncategorizedFile obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "dispute_explanation" (issuingDisputeEvidenceProductNotReceived'DisputeExplanation obj) GHC.Base.<> (Data.Aeson..=) "uncategorized_file" (issuingDisputeEvidenceProductNotReceived'UncategorizedFile obj))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingDisputeEvidenceProductNotReceived' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingDisputeEvidenceProductNotReceived'" (\obj -> (GHC.Base.pure IssuingDisputeEvidenceProductNotReceived' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dispute_explanation")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "uncategorized_file"))

-- | Define the one-of schema issuing_dispute_evidenceProduct_not_received\'Uncategorized_file\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
data IssuingDisputeEvidenceProductNotReceived'UncategorizedFile'Variants
  = IssuingDisputeEvidenceProductNotReceived'UncategorizedFile'File File
  | IssuingDisputeEvidenceProductNotReceived'UncategorizedFile'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuingDisputeEvidenceProductNotReceived'UncategorizedFile'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuingDisputeEvidenceProductNotReceived'UncategorizedFile'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing_dispute_fraudulent_evidence
data IssuingDisputeFraudulentEvidence
  = IssuingDisputeFraudulentEvidence
      { -- | dispute_explanation: Brief freeform text explaining why you are disputing this transaction.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuingDisputeFraudulentEvidenceDisputeExplanation :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | uncategorized_file: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
        issuingDisputeFraudulentEvidenceUncategorizedFile :: (GHC.Maybe.Maybe IssuingDisputeFraudulentEvidenceUncategorizedFile'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingDisputeFraudulentEvidence where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "dispute_explanation" (issuingDisputeFraudulentEvidenceDisputeExplanation obj) : (Data.Aeson..=) "uncategorized_file" (issuingDisputeFraudulentEvidenceUncategorizedFile obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "dispute_explanation" (issuingDisputeFraudulentEvidenceDisputeExplanation obj) GHC.Base.<> (Data.Aeson..=) "uncategorized_file" (issuingDisputeFraudulentEvidenceUncategorizedFile obj))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingDisputeFraudulentEvidence where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingDisputeFraudulentEvidence" (\obj -> (GHC.Base.pure IssuingDisputeFraudulentEvidence GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dispute_explanation")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "uncategorized_file"))

-- | Define the one-of schema issuing_dispute_fraudulent_evidenceUncategorized_file\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
data IssuingDisputeFraudulentEvidenceUncategorizedFile'Variants
  = IssuingDisputeFraudulentEvidenceUncategorizedFile'File File
  | IssuingDisputeFraudulentEvidenceUncategorizedFile'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuingDisputeFraudulentEvidenceUncategorizedFile'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuingDisputeFraudulentEvidenceUncategorizedFile'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing_dispute_other_evidence
data IssuingDisputeOtherEvidence
  = IssuingDisputeOtherEvidence
      { -- | dispute_explanation: Brief freeform text explaining why you are disputing this transaction.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuingDisputeOtherEvidenceDisputeExplanation :: Data.Text.Internal.Text,
        -- | uncategorized_file: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
        issuingDisputeOtherEvidenceUncategorizedFile :: (GHC.Maybe.Maybe IssuingDisputeOtherEvidenceUncategorizedFile'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingDisputeOtherEvidence where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "dispute_explanation" (issuingDisputeOtherEvidenceDisputeExplanation obj) : (Data.Aeson..=) "uncategorized_file" (issuingDisputeOtherEvidenceUncategorizedFile obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "dispute_explanation" (issuingDisputeOtherEvidenceDisputeExplanation obj) GHC.Base.<> (Data.Aeson..=) "uncategorized_file" (issuingDisputeOtherEvidenceUncategorizedFile obj))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingDisputeOtherEvidence where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingDisputeOtherEvidence" (\obj -> (GHC.Base.pure IssuingDisputeOtherEvidence GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "dispute_explanation")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "uncategorized_file"))

-- | Define the one-of schema issuing_dispute_other_evidenceUncategorized_file\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
data IssuingDisputeOtherEvidenceUncategorizedFile'Variants
  = IssuingDisputeOtherEvidenceUncategorizedFile'File File
  | IssuingDisputeOtherEvidenceUncategorizedFile'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuingDisputeOtherEvidenceUncategorizedFile'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuingDisputeOtherEvidenceUncategorizedFile'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema issuing_dispute_product_not_received_evidence
data IssuingDisputeProductNotReceivedEvidence
  = IssuingDisputeProductNotReceivedEvidence
      { -- | dispute_explanation: Brief freeform text explaining why you are disputing this transaction.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        issuingDisputeProductNotReceivedEvidenceDisputeExplanation :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | uncategorized_file: (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
        issuingDisputeProductNotReceivedEvidenceUncategorizedFile :: (GHC.Maybe.Maybe IssuingDisputeProductNotReceivedEvidenceUncategorizedFile'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON IssuingDisputeProductNotReceivedEvidence where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "dispute_explanation" (issuingDisputeProductNotReceivedEvidenceDisputeExplanation obj) : (Data.Aeson..=) "uncategorized_file" (issuingDisputeProductNotReceivedEvidenceUncategorizedFile obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "dispute_explanation" (issuingDisputeProductNotReceivedEvidenceDisputeExplanation obj) GHC.Base.<> (Data.Aeson..=) "uncategorized_file" (issuingDisputeProductNotReceivedEvidenceUncategorizedFile obj))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingDisputeProductNotReceivedEvidence where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingDisputeProductNotReceivedEvidence" (\obj -> (GHC.Base.pure IssuingDisputeProductNotReceivedEvidence GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dispute_explanation")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "uncategorized_file"))

-- | Define the one-of schema issuing_dispute_product_not_received_evidenceUncategorized_file\'
--
-- (ID of a [file upload](https:\/\/stripe.com\/docs\/guides\/file-upload)) Additional file evidence supporting your dispute.
data IssuingDisputeProductNotReceivedEvidenceUncategorizedFile'Variants
  = IssuingDisputeProductNotReceivedEvidenceUncategorizedFile'File File
  | IssuingDisputeProductNotReceivedEvidenceUncategorizedFile'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON IssuingDisputeProductNotReceivedEvidenceUncategorizedFile'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON IssuingDisputeProductNotReceivedEvidenceUncategorizedFile'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema legal_entity_company
data LegalEntityCompany
  = LegalEntityCompany
      { -- | address:
        legalEntityCompanyAddress :: (GHC.Maybe.Maybe Address),
        -- | address_kana: The Kana variation of the company\'s primary address (Japan only).
        legalEntityCompanyAddressKana :: (GHC.Maybe.Maybe LegalEntityCompanyAddressKana'),
        -- | address_kanji: The Kanji variation of the company\'s primary address (Japan only).
        legalEntityCompanyAddressKanji :: (GHC.Maybe.Maybe LegalEntityCompanyAddressKanji'),
        -- | directors_provided: Whether the company\'s directors have been provided. This Boolean will be \`true\` if you\'ve manually indicated that all directors are provided via [the \`directors_provided\` parameter](https:\/\/stripe.com\/docs\/api\/accounts\/update\#update_account-company-directors_provided).
        legalEntityCompanyDirectorsProvided :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | executives_provided: Whether the company\'s executives have been provided. This Boolean will be \`true\` if you\'ve manually indicated that all executives are provided via [the \`executives_provided\` parameter](https:\/\/stripe.com\/docs\/api\/accounts\/update\#update_account-company-executives_provided), or if Stripe determined that sufficient executives were provided.
        legalEntityCompanyExecutivesProvided :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | name: The company\'s legal name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name_kana: The Kana variation of the company\'s legal name (Japan only).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyNameKana :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name_kanji: The Kanji variation of the company\'s legal name (Japan only).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyNameKanji :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | owners_provided: Whether the company\'s owners have been provided. This Boolean will be \`true\` if you\'ve manually indicated that all owners are provided via [the \`owners_provided\` parameter](https:\/\/stripe.com\/docs\/api\/accounts\/update\#update_account-company-owners_provided), or if Stripe determined that sufficient owners were provided. Stripe determines ownership requirements using both the number of owners provided and their total percent ownership (calculated by adding the \`percent_ownership\` of each owner together).
        legalEntityCompanyOwnersProvided :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | phone: The company\'s phone number (used for verification).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | structure: The category identifying the legal structure of the company or legal entity.
        legalEntityCompanyStructure :: (GHC.Maybe.Maybe LegalEntityCompanyStructure'),
        -- | tax_id_provided: Whether the company\'s business ID number was provided.
        legalEntityCompanyTaxIdProvided :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | tax_id_registrar: The jurisdiction in which the \`tax_id\` is registered (Germany-based companies only).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyTaxIdRegistrar :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | vat_id_provided: Whether the company\'s business VAT number was provided.
        legalEntityCompanyVatIdProvided :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | verification: Information on the verification state of the company.
        legalEntityCompanyVerification :: (GHC.Maybe.Maybe LegalEntityCompanyVerification')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON LegalEntityCompany where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (legalEntityCompanyAddress obj) : (Data.Aeson..=) "address_kana" (legalEntityCompanyAddressKana obj) : (Data.Aeson..=) "address_kanji" (legalEntityCompanyAddressKanji obj) : (Data.Aeson..=) "directors_provided" (legalEntityCompanyDirectorsProvided obj) : (Data.Aeson..=) "executives_provided" (legalEntityCompanyExecutivesProvided obj) : (Data.Aeson..=) "name" (legalEntityCompanyName obj) : (Data.Aeson..=) "name_kana" (legalEntityCompanyNameKana obj) : (Data.Aeson..=) "name_kanji" (legalEntityCompanyNameKanji obj) : (Data.Aeson..=) "owners_provided" (legalEntityCompanyOwnersProvided obj) : (Data.Aeson..=) "phone" (legalEntityCompanyPhone obj) : (Data.Aeson..=) "structure" (legalEntityCompanyStructure obj) : (Data.Aeson..=) "tax_id_provided" (legalEntityCompanyTaxIdProvided obj) : (Data.Aeson..=) "tax_id_registrar" (legalEntityCompanyTaxIdRegistrar obj) : (Data.Aeson..=) "vat_id_provided" (legalEntityCompanyVatIdProvided obj) : (Data.Aeson..=) "verification" (legalEntityCompanyVerification obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (legalEntityCompanyAddress obj) GHC.Base.<> ((Data.Aeson..=) "address_kana" (legalEntityCompanyAddressKana obj) GHC.Base.<> ((Data.Aeson..=) "address_kanji" (legalEntityCompanyAddressKanji obj) GHC.Base.<> ((Data.Aeson..=) "directors_provided" (legalEntityCompanyDirectorsProvided obj) GHC.Base.<> ((Data.Aeson..=) "executives_provided" (legalEntityCompanyExecutivesProvided obj) GHC.Base.<> ((Data.Aeson..=) "name" (legalEntityCompanyName obj) GHC.Base.<> ((Data.Aeson..=) "name_kana" (legalEntityCompanyNameKana obj) GHC.Base.<> ((Data.Aeson..=) "name_kanji" (legalEntityCompanyNameKanji obj) GHC.Base.<> ((Data.Aeson..=) "owners_provided" (legalEntityCompanyOwnersProvided obj) GHC.Base.<> ((Data.Aeson..=) "phone" (legalEntityCompanyPhone obj) GHC.Base.<> ((Data.Aeson..=) "structure" (legalEntityCompanyStructure obj) GHC.Base.<> ((Data.Aeson..=) "tax_id_provided" (legalEntityCompanyTaxIdProvided obj) GHC.Base.<> ((Data.Aeson..=) "tax_id_registrar" (legalEntityCompanyTaxIdRegistrar obj) GHC.Base.<> ((Data.Aeson..=) "vat_id_provided" (legalEntityCompanyVatIdProvided obj) GHC.Base.<> (Data.Aeson..=) "verification" (legalEntityCompanyVerification obj)))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON LegalEntityCompany where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "LegalEntityCompany" (\obj -> ((((((((((((((GHC.Base.pure LegalEntityCompany GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_kana")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_kanji")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "directors_provided")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "executives_provided")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name_kana")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name_kanji")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "owners_provided")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "structure")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_id_provided")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_id_registrar")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "vat_id_provided")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verification"))

-- | Defines the data type for the schema legal_entity_companyAddress_kana\'
--
-- The Kana variation of the company\\\'s primary address (Japan only).
data LegalEntityCompanyAddressKana'
  = LegalEntityCompanyAddressKana'
      { -- | city: City\/Ward.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyAddressKana'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyAddressKana'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Block\/Building number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyAddressKana'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Building details.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyAddressKana'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyAddressKana'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: Prefecture.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyAddressKana'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | town: Town\/cho-me.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyAddressKana'Town :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON LegalEntityCompanyAddressKana' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (legalEntityCompanyAddressKana'City obj) : (Data.Aeson..=) "country" (legalEntityCompanyAddressKana'Country obj) : (Data.Aeson..=) "line1" (legalEntityCompanyAddressKana'Line1 obj) : (Data.Aeson..=) "line2" (legalEntityCompanyAddressKana'Line2 obj) : (Data.Aeson..=) "postal_code" (legalEntityCompanyAddressKana'PostalCode obj) : (Data.Aeson..=) "state" (legalEntityCompanyAddressKana'State obj) : (Data.Aeson..=) "town" (legalEntityCompanyAddressKana'Town obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (legalEntityCompanyAddressKana'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (legalEntityCompanyAddressKana'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (legalEntityCompanyAddressKana'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (legalEntityCompanyAddressKana'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (legalEntityCompanyAddressKana'PostalCode obj) GHC.Base.<> ((Data.Aeson..=) "state" (legalEntityCompanyAddressKana'State obj) GHC.Base.<> (Data.Aeson..=) "town" (legalEntityCompanyAddressKana'Town obj)))))))

instance Data.Aeson.Types.FromJSON.FromJSON LegalEntityCompanyAddressKana' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "LegalEntityCompanyAddressKana'" (\obj -> ((((((GHC.Base.pure LegalEntityCompanyAddressKana' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "town"))

-- | Defines the data type for the schema legal_entity_companyAddress_kanji\'
--
-- The Kanji variation of the company\\\'s primary address (Japan only).
data LegalEntityCompanyAddressKanji'
  = LegalEntityCompanyAddressKanji'
      { -- | city: City\/Ward.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyAddressKanji'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyAddressKanji'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Block\/Building number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyAddressKanji'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Building details.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyAddressKanji'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyAddressKanji'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: Prefecture.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyAddressKanji'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | town: Town\/cho-me.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyAddressKanji'Town :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON LegalEntityCompanyAddressKanji' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (legalEntityCompanyAddressKanji'City obj) : (Data.Aeson..=) "country" (legalEntityCompanyAddressKanji'Country obj) : (Data.Aeson..=) "line1" (legalEntityCompanyAddressKanji'Line1 obj) : (Data.Aeson..=) "line2" (legalEntityCompanyAddressKanji'Line2 obj) : (Data.Aeson..=) "postal_code" (legalEntityCompanyAddressKanji'PostalCode obj) : (Data.Aeson..=) "state" (legalEntityCompanyAddressKanji'State obj) : (Data.Aeson..=) "town" (legalEntityCompanyAddressKanji'Town obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (legalEntityCompanyAddressKanji'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (legalEntityCompanyAddressKanji'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (legalEntityCompanyAddressKanji'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (legalEntityCompanyAddressKanji'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (legalEntityCompanyAddressKanji'PostalCode obj) GHC.Base.<> ((Data.Aeson..=) "state" (legalEntityCompanyAddressKanji'State obj) GHC.Base.<> (Data.Aeson..=) "town" (legalEntityCompanyAddressKanji'Town obj)))))))

instance Data.Aeson.Types.FromJSON.FromJSON LegalEntityCompanyAddressKanji' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "LegalEntityCompanyAddressKanji'" (\obj -> ((((((GHC.Base.pure LegalEntityCompanyAddressKanji' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "town"))

-- | Defines the enum schema legal_entity_companyStructure\'
--
-- The category identifying the legal structure of the company or legal entity.
data LegalEntityCompanyStructure'
  = LegalEntityCompanyStructure'EnumOther Data.Aeson.Types.Internal.Value
  | LegalEntityCompanyStructure'EnumTyped Data.Text.Internal.Text
  | LegalEntityCompanyStructure'EnumStringGovernmentInstrumentality
  | LegalEntityCompanyStructure'EnumStringGovernmentalUnit
  | LegalEntityCompanyStructure'EnumStringIncorporatedNonProfit
  | LegalEntityCompanyStructure'EnumStringMultiMemberLlc
  | LegalEntityCompanyStructure'EnumStringPrivateCorporation
  | LegalEntityCompanyStructure'EnumStringPrivatePartnership
  | LegalEntityCompanyStructure'EnumStringPublicCorporation
  | LegalEntityCompanyStructure'EnumStringPublicPartnership
  | LegalEntityCompanyStructure'EnumStringTaxExemptGovernmentInstrumentality
  | LegalEntityCompanyStructure'EnumStringUnincorporatedAssociation
  | LegalEntityCompanyStructure'EnumStringUnincorporatedNonProfit
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON LegalEntityCompanyStructure' where
  toJSON (LegalEntityCompanyStructure'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LegalEntityCompanyStructure'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LegalEntityCompanyStructure'EnumStringGovernmentInstrumentality) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "government_instrumentality"
  toJSON (LegalEntityCompanyStructure'EnumStringGovernmentalUnit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "governmental_unit"
  toJSON (LegalEntityCompanyStructure'EnumStringIncorporatedNonProfit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "incorporated_non_profit"
  toJSON (LegalEntityCompanyStructure'EnumStringMultiMemberLlc) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "multi_member_llc"
  toJSON (LegalEntityCompanyStructure'EnumStringPrivateCorporation) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "private_corporation"
  toJSON (LegalEntityCompanyStructure'EnumStringPrivatePartnership) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "private_partnership"
  toJSON (LegalEntityCompanyStructure'EnumStringPublicCorporation) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "public_corporation"
  toJSON (LegalEntityCompanyStructure'EnumStringPublicPartnership) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "public_partnership"
  toJSON (LegalEntityCompanyStructure'EnumStringTaxExemptGovernmentInstrumentality) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_exempt_government_instrumentality"
  toJSON (LegalEntityCompanyStructure'EnumStringUnincorporatedAssociation) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unincorporated_association"
  toJSON (LegalEntityCompanyStructure'EnumStringUnincorporatedNonProfit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unincorporated_non_profit"

instance Data.Aeson.FromJSON LegalEntityCompanyStructure' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "government_instrumentality")
          then LegalEntityCompanyStructure'EnumStringGovernmentInstrumentality
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "governmental_unit")
              then LegalEntityCompanyStructure'EnumStringGovernmentalUnit
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "incorporated_non_profit")
                  then LegalEntityCompanyStructure'EnumStringIncorporatedNonProfit
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "multi_member_llc")
                      then LegalEntityCompanyStructure'EnumStringMultiMemberLlc
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "private_corporation")
                          then LegalEntityCompanyStructure'EnumStringPrivateCorporation
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "private_partnership")
                              then LegalEntityCompanyStructure'EnumStringPrivatePartnership
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "public_corporation")
                                  then LegalEntityCompanyStructure'EnumStringPublicCorporation
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "public_partnership")
                                      then LegalEntityCompanyStructure'EnumStringPublicPartnership
                                      else
                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_exempt_government_instrumentality")
                                          then LegalEntityCompanyStructure'EnumStringTaxExemptGovernmentInstrumentality
                                          else
                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unincorporated_association")
                                              then LegalEntityCompanyStructure'EnumStringUnincorporatedAssociation
                                              else
                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unincorporated_non_profit")
                                                  then LegalEntityCompanyStructure'EnumStringUnincorporatedNonProfit
                                                  else LegalEntityCompanyStructure'EnumOther val
      )

-- | Defines the data type for the schema legal_entity_companyVerification\'
--
-- Information on the verification state of the company.
data LegalEntityCompanyVerification'
  = LegalEntityCompanyVerification'
      { -- | document:
        legalEntityCompanyVerification'Document :: (GHC.Maybe.Maybe LegalEntityCompanyVerificationDocument)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON LegalEntityCompanyVerification' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "document" (legalEntityCompanyVerification'Document obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "document" (legalEntityCompanyVerification'Document obj))

instance Data.Aeson.Types.FromJSON.FromJSON LegalEntityCompanyVerification' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "LegalEntityCompanyVerification'" (\obj -> GHC.Base.pure LegalEntityCompanyVerification' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "document"))

-- | Defines the data type for the schema legal_entity_company_verification
data LegalEntityCompanyVerification
  = LegalEntityCompanyVerification
      { -- | document:
        legalEntityCompanyVerificationDocument :: LegalEntityCompanyVerificationDocument
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON LegalEntityCompanyVerification where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "document" (legalEntityCompanyVerificationDocument obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "document" (legalEntityCompanyVerificationDocument obj))

instance Data.Aeson.Types.FromJSON.FromJSON LegalEntityCompanyVerification where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "LegalEntityCompanyVerification" (\obj -> GHC.Base.pure LegalEntityCompanyVerification GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "document"))

-- | Defines the data type for the schema legal_entity_company_verification_document
data LegalEntityCompanyVerificationDocument
  = LegalEntityCompanyVerificationDocument
      { -- | back: The back of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`additional_verification\`.
        legalEntityCompanyVerificationDocumentBack :: (GHC.Maybe.Maybe LegalEntityCompanyVerificationDocumentBack'Variants),
        -- | details: A user-displayable string describing the verification state of this document.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyVerificationDocumentDetails :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | details_code: One of \`document_corrupt\`, \`document_expired\`, \`document_failed_copy\`, \`document_failed_greyscale\`, \`document_failed_other\`, \`document_failed_test_mode\`, \`document_fraudulent\`, \`document_incomplete\`, \`document_invalid\`, \`document_manipulated\`, \`document_not_readable\`, \`document_not_uploaded\`, \`document_type_not_supported\`, or \`document_too_large\`. A machine-readable code specifying the verification state for this document.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityCompanyVerificationDocumentDetailsCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | front: The front of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`additional_verification\`.
        legalEntityCompanyVerificationDocumentFront :: (GHC.Maybe.Maybe LegalEntityCompanyVerificationDocumentFront'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON LegalEntityCompanyVerificationDocument where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "back" (legalEntityCompanyVerificationDocumentBack obj) : (Data.Aeson..=) "details" (legalEntityCompanyVerificationDocumentDetails obj) : (Data.Aeson..=) "details_code" (legalEntityCompanyVerificationDocumentDetailsCode obj) : (Data.Aeson..=) "front" (legalEntityCompanyVerificationDocumentFront obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "back" (legalEntityCompanyVerificationDocumentBack obj) GHC.Base.<> ((Data.Aeson..=) "details" (legalEntityCompanyVerificationDocumentDetails obj) GHC.Base.<> ((Data.Aeson..=) "details_code" (legalEntityCompanyVerificationDocumentDetailsCode obj) GHC.Base.<> (Data.Aeson..=) "front" (legalEntityCompanyVerificationDocumentFront obj))))

instance Data.Aeson.Types.FromJSON.FromJSON LegalEntityCompanyVerificationDocument where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "LegalEntityCompanyVerificationDocument" (\obj -> (((GHC.Base.pure LegalEntityCompanyVerificationDocument GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "back")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "details")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "details_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "front"))

-- | Define the one-of schema legal_entity_company_verification_documentBack\'
--
-- The back of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`additional_verification\`.
data LegalEntityCompanyVerificationDocumentBack'Variants
  = LegalEntityCompanyVerificationDocumentBack'File File
  | LegalEntityCompanyVerificationDocumentBack'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON LegalEntityCompanyVerificationDocumentBack'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON LegalEntityCompanyVerificationDocumentBack'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema legal_entity_company_verification_documentFront\'
--
-- The front of a document returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`additional_verification\`.
data LegalEntityCompanyVerificationDocumentFront'Variants
  = LegalEntityCompanyVerificationDocumentFront'File File
  | LegalEntityCompanyVerificationDocumentFront'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON LegalEntityCompanyVerificationDocumentFront'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON LegalEntityCompanyVerificationDocumentFront'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema legal_entity_person_verification
data LegalEntityPersonVerification
  = LegalEntityPersonVerification
      { -- | additional_document: A document showing address, either a passport, local ID card, or utility bill from a well-known utility company.
        legalEntityPersonVerificationAdditionalDocument :: (GHC.Maybe.Maybe LegalEntityPersonVerificationAdditionalDocument'),
        -- | details: A user-displayable string describing the verification state for the person. For example, this may say \"Provided identity information could not be verified\".
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityPersonVerificationDetails :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | details_code: One of \`document_address_mismatch\`, \`document_dob_mismatch\`, \`document_duplicate_type\`, \`document_id_number_mismatch\`, \`document_name_mismatch\`, \`document_nationality_mismatch\`, \`failed_keyed_identity\`, or \`failed_other\`. A machine-readable code specifying the verification state for the person.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityPersonVerificationDetailsCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | document:
        legalEntityPersonVerificationDocument :: (GHC.Maybe.Maybe LegalEntityPersonVerificationDocument),
        -- | status: The state of verification for the person. Possible values are \`unverified\`, \`pending\`, or \`verified\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityPersonVerificationStatus :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON LegalEntityPersonVerification where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "additional_document" (legalEntityPersonVerificationAdditionalDocument obj) : (Data.Aeson..=) "details" (legalEntityPersonVerificationDetails obj) : (Data.Aeson..=) "details_code" (legalEntityPersonVerificationDetailsCode obj) : (Data.Aeson..=) "document" (legalEntityPersonVerificationDocument obj) : (Data.Aeson..=) "status" (legalEntityPersonVerificationStatus obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "additional_document" (legalEntityPersonVerificationAdditionalDocument obj) GHC.Base.<> ((Data.Aeson..=) "details" (legalEntityPersonVerificationDetails obj) GHC.Base.<> ((Data.Aeson..=) "details_code" (legalEntityPersonVerificationDetailsCode obj) GHC.Base.<> ((Data.Aeson..=) "document" (legalEntityPersonVerificationDocument obj) GHC.Base.<> (Data.Aeson..=) "status" (legalEntityPersonVerificationStatus obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON LegalEntityPersonVerification where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "LegalEntityPersonVerification" (\obj -> ((((GHC.Base.pure LegalEntityPersonVerification GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "additional_document")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "details")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "details_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "document")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status"))

-- | Defines the data type for the schema legal_entity_person_verificationAdditional_document\'
--
-- A document showing address, either a passport, local ID card, or utility bill from a well-known utility company.
data LegalEntityPersonVerificationAdditionalDocument'
  = LegalEntityPersonVerificationAdditionalDocument'
      { -- | back: The back of an ID returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
        legalEntityPersonVerificationAdditionalDocument'Back :: (GHC.Maybe.Maybe LegalEntityPersonVerificationAdditionalDocument'Back'Variants),
        -- | details: A user-displayable string describing the verification state of this document. For example, if a document is uploaded and the picture is too fuzzy, this may say \"Identity document is too unclear to read\".
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityPersonVerificationAdditionalDocument'Details :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | details_code: One of \`document_corrupt\`, \`document_country_not_supported\`, \`document_expired\`, \`document_failed_copy\`, \`document_failed_other\`, \`document_failed_test_mode\`, \`document_fraudulent\`, \`document_failed_greyscale\`, \`document_incomplete\`, \`document_invalid\`, \`document_manipulated\`, \`document_missing_back\`, \`document_missing_front\`, \`document_not_readable\`, \`document_not_uploaded\`, \`document_photo_mismatch\`, \`document_too_large\`, or \`document_type_not_supported\`. A machine-readable code specifying the verification state for this document.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityPersonVerificationAdditionalDocument'DetailsCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | front: The front of an ID returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
        legalEntityPersonVerificationAdditionalDocument'Front :: (GHC.Maybe.Maybe LegalEntityPersonVerificationAdditionalDocument'Front'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON LegalEntityPersonVerificationAdditionalDocument' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "back" (legalEntityPersonVerificationAdditionalDocument'Back obj) : (Data.Aeson..=) "details" (legalEntityPersonVerificationAdditionalDocument'Details obj) : (Data.Aeson..=) "details_code" (legalEntityPersonVerificationAdditionalDocument'DetailsCode obj) : (Data.Aeson..=) "front" (legalEntityPersonVerificationAdditionalDocument'Front obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "back" (legalEntityPersonVerificationAdditionalDocument'Back obj) GHC.Base.<> ((Data.Aeson..=) "details" (legalEntityPersonVerificationAdditionalDocument'Details obj) GHC.Base.<> ((Data.Aeson..=) "details_code" (legalEntityPersonVerificationAdditionalDocument'DetailsCode obj) GHC.Base.<> (Data.Aeson..=) "front" (legalEntityPersonVerificationAdditionalDocument'Front obj))))

instance Data.Aeson.Types.FromJSON.FromJSON LegalEntityPersonVerificationAdditionalDocument' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "LegalEntityPersonVerificationAdditionalDocument'" (\obj -> (((GHC.Base.pure LegalEntityPersonVerificationAdditionalDocument' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "back")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "details")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "details_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "front"))

-- | Define the one-of schema legal_entity_person_verificationAdditional_document\'Back\'
--
-- The back of an ID returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
data LegalEntityPersonVerificationAdditionalDocument'Back'Variants
  = LegalEntityPersonVerificationAdditionalDocument'Back'File File
  | LegalEntityPersonVerificationAdditionalDocument'Back'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON LegalEntityPersonVerificationAdditionalDocument'Back'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON LegalEntityPersonVerificationAdditionalDocument'Back'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema legal_entity_person_verificationAdditional_document\'Front\'
--
-- The front of an ID returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
data LegalEntityPersonVerificationAdditionalDocument'Front'Variants
  = LegalEntityPersonVerificationAdditionalDocument'Front'File File
  | LegalEntityPersonVerificationAdditionalDocument'Front'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON LegalEntityPersonVerificationAdditionalDocument'Front'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON LegalEntityPersonVerificationAdditionalDocument'Front'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema legal_entity_person_verification_document
data LegalEntityPersonVerificationDocument
  = LegalEntityPersonVerificationDocument
      { -- | back: The back of an ID returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
        legalEntityPersonVerificationDocumentBack :: (GHC.Maybe.Maybe LegalEntityPersonVerificationDocumentBack'Variants),
        -- | details: A user-displayable string describing the verification state of this document. For example, if a document is uploaded and the picture is too fuzzy, this may say \"Identity document is too unclear to read\".
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityPersonVerificationDocumentDetails :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | details_code: One of \`document_corrupt\`, \`document_country_not_supported\`, \`document_expired\`, \`document_failed_copy\`, \`document_failed_other\`, \`document_failed_test_mode\`, \`document_fraudulent\`, \`document_failed_greyscale\`, \`document_incomplete\`, \`document_invalid\`, \`document_manipulated\`, \`document_missing_back\`, \`document_missing_front\`, \`document_not_readable\`, \`document_not_uploaded\`, \`document_photo_mismatch\`, \`document_too_large\`, or \`document_type_not_supported\`. A machine-readable code specifying the verification state for this document.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        legalEntityPersonVerificationDocumentDetailsCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | front: The front of an ID returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
        legalEntityPersonVerificationDocumentFront :: (GHC.Maybe.Maybe LegalEntityPersonVerificationDocumentFront'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON LegalEntityPersonVerificationDocument where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "back" (legalEntityPersonVerificationDocumentBack obj) : (Data.Aeson..=) "details" (legalEntityPersonVerificationDocumentDetails obj) : (Data.Aeson..=) "details_code" (legalEntityPersonVerificationDocumentDetailsCode obj) : (Data.Aeson..=) "front" (legalEntityPersonVerificationDocumentFront obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "back" (legalEntityPersonVerificationDocumentBack obj) GHC.Base.<> ((Data.Aeson..=) "details" (legalEntityPersonVerificationDocumentDetails obj) GHC.Base.<> ((Data.Aeson..=) "details_code" (legalEntityPersonVerificationDocumentDetailsCode obj) GHC.Base.<> (Data.Aeson..=) "front" (legalEntityPersonVerificationDocumentFront obj))))

instance Data.Aeson.Types.FromJSON.FromJSON LegalEntityPersonVerificationDocument where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "LegalEntityPersonVerificationDocument" (\obj -> (((GHC.Base.pure LegalEntityPersonVerificationDocument GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "back")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "details")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "details_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "front"))

-- | Define the one-of schema legal_entity_person_verification_documentBack\'
--
-- The back of an ID returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
data LegalEntityPersonVerificationDocumentBack'Variants
  = LegalEntityPersonVerificationDocumentBack'File File
  | LegalEntityPersonVerificationDocumentBack'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON LegalEntityPersonVerificationDocumentBack'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON LegalEntityPersonVerificationDocumentBack'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema legal_entity_person_verification_documentFront\'
--
-- The front of an ID returned by a [file upload](https:\/\/stripe.com\/docs\/api\#create_file) with a \`purpose\` value of \`identity_document\`.
data LegalEntityPersonVerificationDocumentFront'Variants
  = LegalEntityPersonVerificationDocumentFront'File File
  | LegalEntityPersonVerificationDocumentFront'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON LegalEntityPersonVerificationDocumentFront'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON LegalEntityPersonVerificationDocumentFront'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema line_item
data LineItem
  = LineItem
      { -- | amount: The amount, in %s.
        lineItemAmount :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        lineItemCurrency :: Data.Text.Internal.Text,
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        lineItemDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | discountable: If true, discounts will apply to this line item. Always false for prorations.
        lineItemDiscountable :: GHC.Types.Bool,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        lineItemId :: Data.Text.Internal.Text,
        -- | invoice_item: The ID of the [invoice item](https:\/\/stripe.com\/docs\/api\/invoiceitems) associated with this line item if any.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        lineItemInvoiceItem :: (GHC.Maybe.Maybe 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.
        lineItemLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Note that for line items with \`type=subscription\` this will reflect the metadata of the subscription that caused the line item to be created.
        lineItemMetadata :: LineItemMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        lineItemObject :: LineItemObject',
        -- | period:
        lineItemPeriod :: InvoiceLineItemPeriod,
        -- | plan: The plan of the subscription, if the line item is a subscription or a proration.
        lineItemPlan :: (GHC.Maybe.Maybe LineItemPlan'),
        -- | proration: Whether this is a proration.
        lineItemProration :: GHC.Types.Bool,
        -- | quantity: The quantity of the subscription, if the line item is a subscription or a proration.
        lineItemQuantity :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | subscription: The subscription that the invoice item pertains to, if any.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        lineItemSubscription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | subscription_item: The subscription item that generated this invoice item. Left empty if the line item is not an explicit result of a subscription.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        lineItemSubscriptionItem :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | tax_amounts: The amount of tax calculated per tax rate for this line item
        lineItemTaxAmounts :: (GHC.Maybe.Maybe ([] InvoiceTaxAmount)),
        -- | tax_rates: The tax rates which apply to the line item.
        lineItemTaxRates :: (GHC.Maybe.Maybe ([] TaxRate)),
        -- | type: A string identifying the type of the source of this line item, either an \`invoiceitem\` or a \`subscription\`.
        lineItemType :: LineItemType'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON LineItem where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (lineItemAmount obj) : (Data.Aeson..=) "currency" (lineItemCurrency obj) : (Data.Aeson..=) "description" (lineItemDescription obj) : (Data.Aeson..=) "discountable" (lineItemDiscountable obj) : (Data.Aeson..=) "id" (lineItemId obj) : (Data.Aeson..=) "invoice_item" (lineItemInvoiceItem obj) : (Data.Aeson..=) "livemode" (lineItemLivemode obj) : (Data.Aeson..=) "metadata" (lineItemMetadata obj) : (Data.Aeson..=) "object" (lineItemObject obj) : (Data.Aeson..=) "period" (lineItemPeriod obj) : (Data.Aeson..=) "plan" (lineItemPlan obj) : (Data.Aeson..=) "proration" (lineItemProration obj) : (Data.Aeson..=) "quantity" (lineItemQuantity obj) : (Data.Aeson..=) "subscription" (lineItemSubscription obj) : (Data.Aeson..=) "subscription_item" (lineItemSubscriptionItem obj) : (Data.Aeson..=) "tax_amounts" (lineItemTaxAmounts obj) : (Data.Aeson..=) "tax_rates" (lineItemTaxRates obj) : (Data.Aeson..=) "type" (lineItemType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (lineItemAmount obj) GHC.Base.<> ((Data.Aeson..=) "currency" (lineItemCurrency obj) GHC.Base.<> ((Data.Aeson..=) "description" (lineItemDescription obj) GHC.Base.<> ((Data.Aeson..=) "discountable" (lineItemDiscountable obj) GHC.Base.<> ((Data.Aeson..=) "id" (lineItemId obj) GHC.Base.<> ((Data.Aeson..=) "invoice_item" (lineItemInvoiceItem obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (lineItemLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (lineItemMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (lineItemObject obj) GHC.Base.<> ((Data.Aeson..=) "period" (lineItemPeriod obj) GHC.Base.<> ((Data.Aeson..=) "plan" (lineItemPlan obj) GHC.Base.<> ((Data.Aeson..=) "proration" (lineItemProration obj) GHC.Base.<> ((Data.Aeson..=) "quantity" (lineItemQuantity obj) GHC.Base.<> ((Data.Aeson..=) "subscription" (lineItemSubscription obj) GHC.Base.<> ((Data.Aeson..=) "subscription_item" (lineItemSubscriptionItem obj) GHC.Base.<> ((Data.Aeson..=) "tax_amounts" (lineItemTaxAmounts obj) GHC.Base.<> ((Data.Aeson..=) "tax_rates" (lineItemTaxRates obj) GHC.Base.<> (Data.Aeson..=) "type" (lineItemType obj))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON LineItem where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "LineItem" (\obj -> (((((((((((((((((GHC.Base.pure LineItem GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "discountable")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "invoice_item")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "period")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "plan")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "proration")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "quantity")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscription")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscription_item")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_amounts")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_rates")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type"))

-- | Defines the data type for the schema line_itemMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Note that for line items with \`type=subscription\` this will reflect the metadata of the subscription that caused the line item to be created.
data LineItemMetadata'
  = LineItemMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON LineItemMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON LineItemMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "LineItemMetadata'" (\obj -> GHC.Base.pure LineItemMetadata')

-- | Defines the enum schema line_itemObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data LineItemObject'
  = LineItemObject'EnumOther Data.Aeson.Types.Internal.Value
  | LineItemObject'EnumTyped Data.Text.Internal.Text
  | LineItemObject'EnumStringLineItem
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON LineItemObject' where
  toJSON (LineItemObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemObject'EnumStringLineItem) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "line_item"

instance Data.Aeson.FromJSON LineItemObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "line_item")
          then LineItemObject'EnumStringLineItem
          else LineItemObject'EnumOther val
      )

-- | Defines the data type for the schema line_itemPlan\'
--
-- The plan of the subscription, if the line item is a subscription or a proration.
data LineItemPlan'
  = LineItemPlan'
      { -- | active: Whether the plan is currently available for new subscriptions.
        lineItemPlan'Active :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | aggregate_usage: Specifies a usage aggregation strategy for plans of \`usage_type=metered\`. Allowed values are \`sum\` for summing up all usage during a period, \`last_during_period\` for using the last usage record reported within a period, \`last_ever\` for using the last usage record ever (across period bounds) or \`max\` which uses the usage record with the maximum reported usage during a period. Defaults to \`sum\`.
        lineItemPlan'AggregateUsage :: (GHC.Maybe.Maybe LineItemPlan'AggregateUsage'),
        -- | amount: The amount in %s to be charged on the interval specified.
        lineItemPlan'Amount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | amount_decimal: Same as \`amount\`, but contains a decimal value with at most 12 decimal places.
        lineItemPlan'AmountDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | billing_scheme: Describes how to compute the price per period. Either \`per_unit\` or \`tiered\`. \`per_unit\` indicates that the fixed amount (specified in \`amount\`) will be charged per unit in \`quantity\` (for plans with \`usage_type=licensed\`), or per unit of total usage (for plans with \`usage_type=metered\`). \`tiered\` indicates that the unit pricing will be computed using a tiering strategy as defined using the \`tiers\` and \`tiers_mode\` attributes.
        lineItemPlan'BillingScheme :: (GHC.Maybe.Maybe LineItemPlan'BillingScheme'),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        lineItemPlan'Created :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        lineItemPlan'Currency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        lineItemPlan'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | interval: The frequency at which a subscription is billed. One of \`day\`, \`week\`, \`month\` or \`year\`.
        lineItemPlan'Interval :: (GHC.Maybe.Maybe LineItemPlan'Interval'),
        -- | interval_count: The number of intervals (specified in the \`interval\` attribute) between subscription billings. For example, \`interval=month\` and \`interval_count=3\` bills every 3 months.
        lineItemPlan'IntervalCount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        lineItemPlan'Livemode :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        lineItemPlan'Metadata :: (GHC.Maybe.Maybe LineItemPlan'Metadata'),
        -- | nickname: A brief description of the plan, hidden from customers.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        lineItemPlan'Nickname :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        lineItemPlan'Object :: (GHC.Maybe.Maybe LineItemPlan'Object'),
        -- | product: The product whose pricing this plan determines.
        lineItemPlan'Product :: (GHC.Maybe.Maybe LineItemPlan'Product'Variants),
        -- | tiers: Each element represents a pricing tier. This parameter requires \`billing_scheme\` to be set to \`tiered\`. See also the documentation for \`billing_scheme\`.
        lineItemPlan'Tiers :: (GHC.Maybe.Maybe ([] PlanTier)),
        -- | tiers_mode: Defines if the tiering price should be \`graduated\` or \`volume\` based. In \`volume\`-based tiering, the maximum quantity within a period determines the per unit price. In \`graduated\` tiering, pricing can change as the quantity grows.
        lineItemPlan'TiersMode :: (GHC.Maybe.Maybe LineItemPlan'TiersMode'),
        -- | transform_usage: Apply a transformation to the reported usage or set quantity before computing the amount billed. Cannot be combined with \`tiers\`.
        lineItemPlan'TransformUsage :: (GHC.Maybe.Maybe LineItemPlan'TransformUsage'),
        -- | trial_period_days: Default number of trial days when subscribing a customer to this plan using [\`trial_from_plan=true\`](https:\/\/stripe.com\/docs\/api\#create_subscription-trial_from_plan).
        lineItemPlan'TrialPeriodDays :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | usage_type: Configures how the quantity per period should be determined. Can be either \`metered\` or \`licensed\`. \`licensed\` automatically bills the \`quantity\` set when adding it to a subscription. \`metered\` aggregates the total usage based on usage records. Defaults to \`licensed\`.
        lineItemPlan'UsageType :: (GHC.Maybe.Maybe LineItemPlan'UsageType')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON LineItemPlan' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "active" (lineItemPlan'Active obj) : (Data.Aeson..=) "aggregate_usage" (lineItemPlan'AggregateUsage obj) : (Data.Aeson..=) "amount" (lineItemPlan'Amount obj) : (Data.Aeson..=) "amount_decimal" (lineItemPlan'AmountDecimal obj) : (Data.Aeson..=) "billing_scheme" (lineItemPlan'BillingScheme obj) : (Data.Aeson..=) "created" (lineItemPlan'Created obj) : (Data.Aeson..=) "currency" (lineItemPlan'Currency obj) : (Data.Aeson..=) "id" (lineItemPlan'Id obj) : (Data.Aeson..=) "interval" (lineItemPlan'Interval obj) : (Data.Aeson..=) "interval_count" (lineItemPlan'IntervalCount obj) : (Data.Aeson..=) "livemode" (lineItemPlan'Livemode obj) : (Data.Aeson..=) "metadata" (lineItemPlan'Metadata obj) : (Data.Aeson..=) "nickname" (lineItemPlan'Nickname obj) : (Data.Aeson..=) "object" (lineItemPlan'Object obj) : (Data.Aeson..=) "product" (lineItemPlan'Product obj) : (Data.Aeson..=) "tiers" (lineItemPlan'Tiers obj) : (Data.Aeson..=) "tiers_mode" (lineItemPlan'TiersMode obj) : (Data.Aeson..=) "transform_usage" (lineItemPlan'TransformUsage obj) : (Data.Aeson..=) "trial_period_days" (lineItemPlan'TrialPeriodDays obj) : (Data.Aeson..=) "usage_type" (lineItemPlan'UsageType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "active" (lineItemPlan'Active obj) GHC.Base.<> ((Data.Aeson..=) "aggregate_usage" (lineItemPlan'AggregateUsage obj) GHC.Base.<> ((Data.Aeson..=) "amount" (lineItemPlan'Amount obj) GHC.Base.<> ((Data.Aeson..=) "amount_decimal" (lineItemPlan'AmountDecimal obj) GHC.Base.<> ((Data.Aeson..=) "billing_scheme" (lineItemPlan'BillingScheme obj) GHC.Base.<> ((Data.Aeson..=) "created" (lineItemPlan'Created obj) GHC.Base.<> ((Data.Aeson..=) "currency" (lineItemPlan'Currency obj) GHC.Base.<> ((Data.Aeson..=) "id" (lineItemPlan'Id obj) GHC.Base.<> ((Data.Aeson..=) "interval" (lineItemPlan'Interval obj) GHC.Base.<> ((Data.Aeson..=) "interval_count" (lineItemPlan'IntervalCount obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (lineItemPlan'Livemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (lineItemPlan'Metadata obj) GHC.Base.<> ((Data.Aeson..=) "nickname" (lineItemPlan'Nickname obj) GHC.Base.<> ((Data.Aeson..=) "object" (lineItemPlan'Object obj) GHC.Base.<> ((Data.Aeson..=) "product" (lineItemPlan'Product obj) GHC.Base.<> ((Data.Aeson..=) "tiers" (lineItemPlan'Tiers obj) GHC.Base.<> ((Data.Aeson..=) "tiers_mode" (lineItemPlan'TiersMode obj) GHC.Base.<> ((Data.Aeson..=) "transform_usage" (lineItemPlan'TransformUsage obj) GHC.Base.<> ((Data.Aeson..=) "trial_period_days" (lineItemPlan'TrialPeriodDays obj) GHC.Base.<> (Data.Aeson..=) "usage_type" (lineItemPlan'UsageType obj))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON LineItemPlan' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "LineItemPlan'" (\obj -> (((((((((((((((((((GHC.Base.pure LineItemPlan' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "active")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "aggregate_usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount_decimal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_scheme")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "interval")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "interval_count")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "nickname")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "product")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tiers")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tiers_mode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transform_usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "trial_period_days")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "usage_type"))

-- | Defines the enum schema line_itemPlan\'Aggregate_usage\'
--
-- Specifies a usage aggregation strategy for plans of \`usage_type=metered\`. Allowed values are \`sum\` for summing up all usage during a period, \`last_during_period\` for using the last usage record reported within a period, \`last_ever\` for using the last usage record ever (across period bounds) or \`max\` which uses the usage record with the maximum reported usage during a period. Defaults to \`sum\`.
data LineItemPlan'AggregateUsage'
  = LineItemPlan'AggregateUsage'EnumOther Data.Aeson.Types.Internal.Value
  | LineItemPlan'AggregateUsage'EnumTyped Data.Text.Internal.Text
  | LineItemPlan'AggregateUsage'EnumStringLastDuringPeriod
  | LineItemPlan'AggregateUsage'EnumStringLastEver
  | LineItemPlan'AggregateUsage'EnumStringMax
  | LineItemPlan'AggregateUsage'EnumStringSum
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON LineItemPlan'AggregateUsage' where
  toJSON (LineItemPlan'AggregateUsage'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemPlan'AggregateUsage'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemPlan'AggregateUsage'EnumStringLastDuringPeriod) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_during_period"
  toJSON (LineItemPlan'AggregateUsage'EnumStringLastEver) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_ever"
  toJSON (LineItemPlan'AggregateUsage'EnumStringMax) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "max"
  toJSON (LineItemPlan'AggregateUsage'EnumStringSum) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sum"

instance Data.Aeson.FromJSON LineItemPlan'AggregateUsage' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_during_period")
          then LineItemPlan'AggregateUsage'EnumStringLastDuringPeriod
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_ever")
              then LineItemPlan'AggregateUsage'EnumStringLastEver
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "max")
                  then LineItemPlan'AggregateUsage'EnumStringMax
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sum")
                      then LineItemPlan'AggregateUsage'EnumStringSum
                      else LineItemPlan'AggregateUsage'EnumOther val
      )

-- | Defines the enum schema line_itemPlan\'Billing_scheme\'
--
-- Describes how to compute the price per period. Either \`per_unit\` or \`tiered\`. \`per_unit\` indicates that the fixed amount (specified in \`amount\`) will be charged per unit in \`quantity\` (for plans with \`usage_type=licensed\`), or per unit of total usage (for plans with \`usage_type=metered\`). \`tiered\` indicates that the unit pricing will be computed using a tiering strategy as defined using the \`tiers\` and \`tiers_mode\` attributes.
data LineItemPlan'BillingScheme'
  = LineItemPlan'BillingScheme'EnumOther Data.Aeson.Types.Internal.Value
  | LineItemPlan'BillingScheme'EnumTyped Data.Text.Internal.Text
  | LineItemPlan'BillingScheme'EnumStringPerUnit
  | LineItemPlan'BillingScheme'EnumStringTiered
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON LineItemPlan'BillingScheme' where
  toJSON (LineItemPlan'BillingScheme'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemPlan'BillingScheme'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemPlan'BillingScheme'EnumStringPerUnit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "per_unit"
  toJSON (LineItemPlan'BillingScheme'EnumStringTiered) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tiered"

instance Data.Aeson.FromJSON LineItemPlan'BillingScheme' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "per_unit")
          then LineItemPlan'BillingScheme'EnumStringPerUnit
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tiered")
              then LineItemPlan'BillingScheme'EnumStringTiered
              else LineItemPlan'BillingScheme'EnumOther val
      )

-- | Defines the enum schema line_itemPlan\'Interval\'
--
-- The frequency at which a subscription is billed. One of \`day\`, \`week\`, \`month\` or \`year\`.
data LineItemPlan'Interval'
  = LineItemPlan'Interval'EnumOther Data.Aeson.Types.Internal.Value
  | LineItemPlan'Interval'EnumTyped Data.Text.Internal.Text
  | LineItemPlan'Interval'EnumStringDay
  | LineItemPlan'Interval'EnumStringMonth
  | LineItemPlan'Interval'EnumStringWeek
  | LineItemPlan'Interval'EnumStringYear
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON LineItemPlan'Interval' where
  toJSON (LineItemPlan'Interval'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemPlan'Interval'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemPlan'Interval'EnumStringDay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "day"
  toJSON (LineItemPlan'Interval'EnumStringMonth) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month"
  toJSON (LineItemPlan'Interval'EnumStringWeek) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "week"
  toJSON (LineItemPlan'Interval'EnumStringYear) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "year"

instance Data.Aeson.FromJSON LineItemPlan'Interval' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "day")
          then LineItemPlan'Interval'EnumStringDay
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month")
              then LineItemPlan'Interval'EnumStringMonth
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "week")
                  then LineItemPlan'Interval'EnumStringWeek
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "year")
                      then LineItemPlan'Interval'EnumStringYear
                      else LineItemPlan'Interval'EnumOther val
      )

-- | Defines the data type for the schema line_itemPlan\'Metadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data LineItemPlan'Metadata'
  = LineItemPlan'Metadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON LineItemPlan'Metadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON LineItemPlan'Metadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "LineItemPlan'Metadata'" (\obj -> GHC.Base.pure LineItemPlan'Metadata')

-- | Defines the enum schema line_itemPlan\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data LineItemPlan'Object'
  = LineItemPlan'Object'EnumOther Data.Aeson.Types.Internal.Value
  | LineItemPlan'Object'EnumTyped Data.Text.Internal.Text
  | LineItemPlan'Object'EnumStringPlan
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON LineItemPlan'Object' where
  toJSON (LineItemPlan'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemPlan'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemPlan'Object'EnumStringPlan) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plan"

instance Data.Aeson.FromJSON LineItemPlan'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plan")
          then LineItemPlan'Object'EnumStringPlan
          else LineItemPlan'Object'EnumOther val
      )

-- | Define the one-of schema line_itemPlan\'Product\'
--
-- The product whose pricing this plan determines.
data LineItemPlan'Product'Variants
  = LineItemPlan'Product'DeletedProduct DeletedProduct
  | LineItemPlan'Product'Product Product
  | LineItemPlan'Product'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON LineItemPlan'Product'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON LineItemPlan'Product'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema line_itemPlan\'Tiers_mode\'
--
-- Defines if the tiering price should be \`graduated\` or \`volume\` based. In \`volume\`-based tiering, the maximum quantity within a period determines the per unit price. In \`graduated\` tiering, pricing can change as the quantity grows.
data LineItemPlan'TiersMode'
  = LineItemPlan'TiersMode'EnumOther Data.Aeson.Types.Internal.Value
  | LineItemPlan'TiersMode'EnumTyped Data.Text.Internal.Text
  | LineItemPlan'TiersMode'EnumStringGraduated
  | LineItemPlan'TiersMode'EnumStringVolume
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON LineItemPlan'TiersMode' where
  toJSON (LineItemPlan'TiersMode'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemPlan'TiersMode'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemPlan'TiersMode'EnumStringGraduated) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "graduated"
  toJSON (LineItemPlan'TiersMode'EnumStringVolume) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "volume"

instance Data.Aeson.FromJSON LineItemPlan'TiersMode' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "graduated")
          then LineItemPlan'TiersMode'EnumStringGraduated
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "volume")
              then LineItemPlan'TiersMode'EnumStringVolume
              else LineItemPlan'TiersMode'EnumOther val
      )

-- | Defines the data type for the schema line_itemPlan\'Transform_usage\'
--
-- Apply a transformation to the reported usage or set quantity before computing the amount billed. Cannot be combined with \\\`tiers\\\`.
data LineItemPlan'TransformUsage'
  = LineItemPlan'TransformUsage'
      { -- | divide_by: Divide usage by this number.
        lineItemPlan'TransformUsage'DivideBy :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | round: After division, either round the result \`up\` or \`down\`.
        lineItemPlan'TransformUsage'Round :: (GHC.Maybe.Maybe LineItemPlan'TransformUsage'Round')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON LineItemPlan'TransformUsage' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "divide_by" (lineItemPlan'TransformUsage'DivideBy obj) : (Data.Aeson..=) "round" (lineItemPlan'TransformUsage'Round obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "divide_by" (lineItemPlan'TransformUsage'DivideBy obj) GHC.Base.<> (Data.Aeson..=) "round" (lineItemPlan'TransformUsage'Round obj))

instance Data.Aeson.Types.FromJSON.FromJSON LineItemPlan'TransformUsage' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "LineItemPlan'TransformUsage'" (\obj -> (GHC.Base.pure LineItemPlan'TransformUsage' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "divide_by")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "round"))

-- | Defines the enum schema line_itemPlan\'Transform_usage\'Round\'
--
-- After division, either round the result \`up\` or \`down\`.
data LineItemPlan'TransformUsage'Round'
  = LineItemPlan'TransformUsage'Round'EnumOther Data.Aeson.Types.Internal.Value
  | LineItemPlan'TransformUsage'Round'EnumTyped Data.Text.Internal.Text
  | LineItemPlan'TransformUsage'Round'EnumStringDown
  | LineItemPlan'TransformUsage'Round'EnumStringUp
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON LineItemPlan'TransformUsage'Round' where
  toJSON (LineItemPlan'TransformUsage'Round'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemPlan'TransformUsage'Round'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemPlan'TransformUsage'Round'EnumStringDown) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "down"
  toJSON (LineItemPlan'TransformUsage'Round'EnumStringUp) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "up"

instance Data.Aeson.FromJSON LineItemPlan'TransformUsage'Round' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "down")
          then LineItemPlan'TransformUsage'Round'EnumStringDown
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "up")
              then LineItemPlan'TransformUsage'Round'EnumStringUp
              else LineItemPlan'TransformUsage'Round'EnumOther val
      )

-- | Defines the enum schema line_itemPlan\'Usage_type\'
--
-- Configures how the quantity per period should be determined. Can be either \`metered\` or \`licensed\`. \`licensed\` automatically bills the \`quantity\` set when adding it to a subscription. \`metered\` aggregates the total usage based on usage records. Defaults to \`licensed\`.
data LineItemPlan'UsageType'
  = LineItemPlan'UsageType'EnumOther Data.Aeson.Types.Internal.Value
  | LineItemPlan'UsageType'EnumTyped Data.Text.Internal.Text
  | LineItemPlan'UsageType'EnumStringLicensed
  | LineItemPlan'UsageType'EnumStringMetered
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON LineItemPlan'UsageType' where
  toJSON (LineItemPlan'UsageType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemPlan'UsageType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemPlan'UsageType'EnumStringLicensed) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "licensed"
  toJSON (LineItemPlan'UsageType'EnumStringMetered) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metered"

instance Data.Aeson.FromJSON LineItemPlan'UsageType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "licensed")
          then LineItemPlan'UsageType'EnumStringLicensed
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metered")
              then LineItemPlan'UsageType'EnumStringMetered
              else LineItemPlan'UsageType'EnumOther val
      )

-- | Defines the enum schema line_itemType\'
--
-- A string identifying the type of the source of this line item, either an \`invoiceitem\` or a \`subscription\`.
data LineItemType'
  = LineItemType'EnumOther Data.Aeson.Types.Internal.Value
  | LineItemType'EnumTyped Data.Text.Internal.Text
  | LineItemType'EnumStringInvoiceitem
  | LineItemType'EnumStringSubscription
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON LineItemType' where
  toJSON (LineItemType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (LineItemType'EnumStringInvoiceitem) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invoiceitem"
  toJSON (LineItemType'EnumStringSubscription) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription"

instance Data.Aeson.FromJSON LineItemType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invoiceitem")
          then LineItemType'EnumStringInvoiceitem
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription")
              then LineItemType'EnumStringSubscription
              else LineItemType'EnumOther val
      )

-- | Defines the data type for the schema mandate
--
-- A Mandate is a record of the permission a customer has given you to debit their payment method.
data Mandate
  = Mandate
      { -- | customer_acceptance:
        mandateCustomerAcceptance :: CustomerAcceptance,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        mandateId :: 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.
        mandateLivemode :: GHC.Types.Bool,
        -- | multi_use:
        mandateMultiUse :: (GHC.Maybe.Maybe MandateMultiUse),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        mandateObject :: MandateObject',
        -- | payment_method: ID of the payment method associated with this mandate.
        mandatePaymentMethod :: MandatePaymentMethod'Variants,
        -- | payment_method_details:
        mandatePaymentMethodDetails :: MandatePaymentMethodDetails,
        -- | single_use:
        mandateSingleUse :: (GHC.Maybe.Maybe MandateSingleUse),
        -- | status: The status of the Mandate, one of \`pending\`, \`inactive\`, or \`active\`. The Mandate can be used to initiate a payment only if status=active.
        mandateStatus :: MandateStatus',
        -- | type: The type of the mandate, one of \`single_use\` or \`multi_use\`
        mandateType :: MandateType'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Mandate where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "customer_acceptance" (mandateCustomerAcceptance obj) : (Data.Aeson..=) "id" (mandateId obj) : (Data.Aeson..=) "livemode" (mandateLivemode obj) : (Data.Aeson..=) "multi_use" (mandateMultiUse obj) : (Data.Aeson..=) "object" (mandateObject obj) : (Data.Aeson..=) "payment_method" (mandatePaymentMethod obj) : (Data.Aeson..=) "payment_method_details" (mandatePaymentMethodDetails obj) : (Data.Aeson..=) "single_use" (mandateSingleUse obj) : (Data.Aeson..=) "status" (mandateStatus obj) : (Data.Aeson..=) "type" (mandateType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "customer_acceptance" (mandateCustomerAcceptance obj) GHC.Base.<> ((Data.Aeson..=) "id" (mandateId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (mandateLivemode obj) GHC.Base.<> ((Data.Aeson..=) "multi_use" (mandateMultiUse obj) GHC.Base.<> ((Data.Aeson..=) "object" (mandateObject obj) GHC.Base.<> ((Data.Aeson..=) "payment_method" (mandatePaymentMethod obj) GHC.Base.<> ((Data.Aeson..=) "payment_method_details" (mandatePaymentMethodDetails obj) GHC.Base.<> ((Data.Aeson..=) "single_use" (mandateSingleUse obj) GHC.Base.<> ((Data.Aeson..=) "status" (mandateStatus obj) GHC.Base.<> (Data.Aeson..=) "type" (mandateType obj))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Mandate where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Mandate" (\obj -> (((((((((GHC.Base.pure Mandate GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "customer_acceptance")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "multi_use")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "payment_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "payment_method_details")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "single_use")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type"))

-- | Defines the enum schema mandateObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data MandateObject'
  = MandateObject'EnumOther Data.Aeson.Types.Internal.Value
  | MandateObject'EnumTyped Data.Text.Internal.Text
  | MandateObject'EnumStringMandate
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON MandateObject' where
  toJSON (MandateObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (MandateObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (MandateObject'EnumStringMandate) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mandate"

instance Data.Aeson.FromJSON MandateObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mandate")
          then MandateObject'EnumStringMandate
          else MandateObject'EnumOther val
      )

-- | Define the one-of schema mandatePayment_method\'
--
-- ID of the payment method associated with this mandate.
data MandatePaymentMethod'Variants
  = MandatePaymentMethod'PaymentMethod PaymentMethod
  | MandatePaymentMethod'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON MandatePaymentMethod'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON MandatePaymentMethod'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema mandateStatus\'
--
-- The status of the Mandate, one of \`pending\`, \`inactive\`, or \`active\`. The Mandate can be used to initiate a payment only if status=active.
data MandateStatus'
  = MandateStatus'EnumOther Data.Aeson.Types.Internal.Value
  | MandateStatus'EnumTyped Data.Text.Internal.Text
  | MandateStatus'EnumStringActive
  | MandateStatus'EnumStringInactive
  | MandateStatus'EnumStringPending
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON MandateStatus' where
  toJSON (MandateStatus'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (MandateStatus'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (MandateStatus'EnumStringActive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active"
  toJSON (MandateStatus'EnumStringInactive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "inactive"
  toJSON (MandateStatus'EnumStringPending) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pending"

instance Data.Aeson.FromJSON MandateStatus' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active")
          then MandateStatus'EnumStringActive
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "inactive")
              then MandateStatus'EnumStringInactive
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pending")
                  then MandateStatus'EnumStringPending
                  else MandateStatus'EnumOther val
      )

-- | Defines the enum schema mandateType\'
--
-- The type of the mandate, one of \`single_use\` or \`multi_use\`
data MandateType'
  = MandateType'EnumOther Data.Aeson.Types.Internal.Value
  | MandateType'EnumTyped Data.Text.Internal.Text
  | MandateType'EnumStringMultiUse
  | MandateType'EnumStringSingleUse
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON MandateType' where
  toJSON (MandateType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (MandateType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (MandateType'EnumStringMultiUse) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "multi_use"
  toJSON (MandateType'EnumStringSingleUse) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "single_use"

instance Data.Aeson.FromJSON MandateType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "multi_use")
          then MandateType'EnumStringMultiUse
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "single_use")
              then MandateType'EnumStringSingleUse
              else MandateType'EnumOther val
      )

-- | Defines the data type for the schema order
--
-- Order objects are created to handle end customers\' purchases of previously
-- defined [products](https:\/\/stripe.com\/docs\/api\#products). You can create, retrieve, and pay individual orders, as well
-- as list all orders. Orders are identified by a unique, random ID.
--
-- Related guide: [Tax, Shipping, and Inventory](https:\/\/stripe.com\/docs\/orders).
data Order
  = Order
      { -- | amount: A positive integer in the smallest currency unit (that is, 100 cents for \$1.00, or 1 for ¥1, Japanese Yen being a zero-decimal currency) representing the total amount for the order.
        orderAmount :: GHC.Integer.Type.Integer,
        -- | amount_returned: The total amount that was returned to the customer.
        orderAmountReturned :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | application: ID of the Connect Application that created the order.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderApplication :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | application_fee: A fee in cents that will be applied to the order and transferred to the application owner’s Stripe account. The request must be made with an OAuth key or the Stripe-Account header in order to take an application fee. For more information, see the application fees documentation.
        orderApplicationFee :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | charge: The ID of the payment used to pay for the order. Present if the order status is \`paid\`, \`fulfilled\`, or \`refunded\`.
        orderCharge :: (GHC.Maybe.Maybe OrderCharge'Variants),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        orderCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        orderCurrency :: Data.Text.Internal.Text,
        -- | customer: The customer used for the order.
        orderCustomer :: (GHC.Maybe.Maybe OrderCustomer'Variants),
        -- | email: The email address of the customer placing the order.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | external_coupon_code: External coupon code to load for this order.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderExternalCouponCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderId :: Data.Text.Internal.Text,
        -- | items: List of items constituting the order. An order can have up to 25 items.
        orderItems :: ([] OrderItem),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        orderLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        orderMetadata :: OrderMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        orderObject :: OrderObject',
        -- | returns: A list of returns that have taken place for this order.
        orderReturns :: (GHC.Maybe.Maybe OrderReturns'),
        -- | selected_shipping_method: The shipping method that is currently selected for this order, if any. If present, it is equal to one of the \`id\`s of shipping methods in the \`shipping_methods\` array. At order creation time, if there are multiple shipping methods, Stripe will automatically selected the first method.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderSelectedShippingMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | shipping: The shipping address for the order. Present if the order is for goods to be shipped.
        orderShipping :: (GHC.Maybe.Maybe OrderShipping'),
        -- | shipping_methods: A list of supported shipping methods for this order. The desired shipping method can be specified either by updating the order, or when paying it.
        orderShippingMethods :: (GHC.Maybe.Maybe ([] ShippingMethod)),
        -- | status: Current order status. One of \`created\`, \`paid\`, \`canceled\`, \`fulfilled\`, or \`returned\`. More details in the [Orders Guide](https:\/\/stripe.com\/docs\/orders\/guide\#understanding-order-statuses).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderStatus :: Data.Text.Internal.Text,
        -- | status_transitions: The timestamps at which the order status was updated.
        orderStatusTransitions :: (GHC.Maybe.Maybe OrderStatusTransitions'),
        -- | updated: Time at which the object was last updated. Measured in seconds since the Unix epoch.
        orderUpdated :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | upstream_id: The user\'s order ID if it is different from the Stripe order ID.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderUpstreamId :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Order where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (orderAmount obj) : (Data.Aeson..=) "amount_returned" (orderAmountReturned obj) : (Data.Aeson..=) "application" (orderApplication obj) : (Data.Aeson..=) "application_fee" (orderApplicationFee obj) : (Data.Aeson..=) "charge" (orderCharge obj) : (Data.Aeson..=) "created" (orderCreated obj) : (Data.Aeson..=) "currency" (orderCurrency obj) : (Data.Aeson..=) "customer" (orderCustomer obj) : (Data.Aeson..=) "email" (orderEmail obj) : (Data.Aeson..=) "external_coupon_code" (orderExternalCouponCode obj) : (Data.Aeson..=) "id" (orderId obj) : (Data.Aeson..=) "items" (orderItems obj) : (Data.Aeson..=) "livemode" (orderLivemode obj) : (Data.Aeson..=) "metadata" (orderMetadata obj) : (Data.Aeson..=) "object" (orderObject obj) : (Data.Aeson..=) "returns" (orderReturns obj) : (Data.Aeson..=) "selected_shipping_method" (orderSelectedShippingMethod obj) : (Data.Aeson..=) "shipping" (orderShipping obj) : (Data.Aeson..=) "shipping_methods" (orderShippingMethods obj) : (Data.Aeson..=) "status" (orderStatus obj) : (Data.Aeson..=) "status_transitions" (orderStatusTransitions obj) : (Data.Aeson..=) "updated" (orderUpdated obj) : (Data.Aeson..=) "upstream_id" (orderUpstreamId obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (orderAmount obj) GHC.Base.<> ((Data.Aeson..=) "amount_returned" (orderAmountReturned obj) GHC.Base.<> ((Data.Aeson..=) "application" (orderApplication obj) GHC.Base.<> ((Data.Aeson..=) "application_fee" (orderApplicationFee obj) GHC.Base.<> ((Data.Aeson..=) "charge" (orderCharge obj) GHC.Base.<> ((Data.Aeson..=) "created" (orderCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (orderCurrency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (orderCustomer obj) GHC.Base.<> ((Data.Aeson..=) "email" (orderEmail obj) GHC.Base.<> ((Data.Aeson..=) "external_coupon_code" (orderExternalCouponCode obj) GHC.Base.<> ((Data.Aeson..=) "id" (orderId obj) GHC.Base.<> ((Data.Aeson..=) "items" (orderItems obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (orderLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (orderMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (orderObject obj) GHC.Base.<> ((Data.Aeson..=) "returns" (orderReturns obj) GHC.Base.<> ((Data.Aeson..=) "selected_shipping_method" (orderSelectedShippingMethod obj) GHC.Base.<> ((Data.Aeson..=) "shipping" (orderShipping obj) GHC.Base.<> ((Data.Aeson..=) "shipping_methods" (orderShippingMethods obj) GHC.Base.<> ((Data.Aeson..=) "status" (orderStatus obj) GHC.Base.<> ((Data.Aeson..=) "status_transitions" (orderStatusTransitions obj) GHC.Base.<> ((Data.Aeson..=) "updated" (orderUpdated obj) GHC.Base.<> (Data.Aeson..=) "upstream_id" (orderUpstreamId obj)))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Order where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Order" (\obj -> ((((((((((((((((((((((GHC.Base.pure Order GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount_returned")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "application")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "application_fee")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "charge")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "external_coupon_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "items")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "returns")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "selected_shipping_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping_methods")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status_transitions")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "updated")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "upstream_id"))

-- | Define the one-of schema orderCharge\'
--
-- The ID of the payment used to pay for the order. Present if the order status is \`paid\`, \`fulfilled\`, or \`refunded\`.
data OrderCharge'Variants
  = OrderCharge'Charge Charge
  | OrderCharge'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON OrderCharge'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON OrderCharge'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema orderCustomer\'
--
-- The customer used for the order.
data OrderCustomer'Variants
  = OrderCustomer'Customer Customer
  | OrderCustomer'DeletedCustomer DeletedCustomer
  | OrderCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON OrderCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON OrderCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema orderMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data OrderMetadata'
  = OrderMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON OrderMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON OrderMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "OrderMetadata'" (\obj -> GHC.Base.pure OrderMetadata')

-- | Defines the enum schema orderObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data OrderObject'
  = OrderObject'EnumOther Data.Aeson.Types.Internal.Value
  | OrderObject'EnumTyped Data.Text.Internal.Text
  | OrderObject'EnumStringOrder
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON OrderObject' where
  toJSON (OrderObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (OrderObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (OrderObject'EnumStringOrder) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "order"

instance Data.Aeson.FromJSON OrderObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "order")
          then OrderObject'EnumStringOrder
          else OrderObject'EnumOther val
      )

-- | Defines the data type for the schema orderReturns\'
--
-- A list of returns that have taken place for this order.
data OrderReturns'
  = OrderReturns'
      { -- | data: Details about each object.
        orderReturns'Data :: ([] OrderReturn),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        orderReturns'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        orderReturns'Object :: OrderReturns'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderReturns'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON OrderReturns' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (orderReturns'Data obj) : (Data.Aeson..=) "has_more" (orderReturns'HasMore obj) : (Data.Aeson..=) "object" (orderReturns'Object obj) : (Data.Aeson..=) "url" (orderReturns'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (orderReturns'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (orderReturns'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (orderReturns'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (orderReturns'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON OrderReturns' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "OrderReturns'" (\obj -> (((GHC.Base.pure OrderReturns' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema orderReturns\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data OrderReturns'Object'
  = OrderReturns'Object'EnumOther Data.Aeson.Types.Internal.Value
  | OrderReturns'Object'EnumTyped Data.Text.Internal.Text
  | OrderReturns'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON OrderReturns'Object' where
  toJSON (OrderReturns'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (OrderReturns'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (OrderReturns'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON OrderReturns'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then OrderReturns'Object'EnumStringList
          else OrderReturns'Object'EnumOther val
      )

-- | Defines the data type for the schema orderShipping\'
--
-- The shipping address for the order. Present if the order is for goods to be shipped.
data OrderShipping'
  = OrderShipping'
      { -- | address:
        orderShipping'Address :: (GHC.Maybe.Maybe Address),
        -- | carrier: The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderShipping'Carrier :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Recipient name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderShipping'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | phone: Recipient phone (including extension).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderShipping'Phone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | tracking_number: The tracking number for a physical product, obtained from the delivery service. If multiple tracking numbers were generated for this purchase, please separate them with commas.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderShipping'TrackingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON OrderShipping' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (orderShipping'Address obj) : (Data.Aeson..=) "carrier" (orderShipping'Carrier obj) : (Data.Aeson..=) "name" (orderShipping'Name obj) : (Data.Aeson..=) "phone" (orderShipping'Phone obj) : (Data.Aeson..=) "tracking_number" (orderShipping'TrackingNumber obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (orderShipping'Address obj) GHC.Base.<> ((Data.Aeson..=) "carrier" (orderShipping'Carrier obj) GHC.Base.<> ((Data.Aeson..=) "name" (orderShipping'Name obj) GHC.Base.<> ((Data.Aeson..=) "phone" (orderShipping'Phone obj) GHC.Base.<> (Data.Aeson..=) "tracking_number" (orderShipping'TrackingNumber obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON OrderShipping' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "OrderShipping'" (\obj -> ((((GHC.Base.pure OrderShipping' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "carrier")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tracking_number"))

-- | Defines the data type for the schema orderStatus_transitions\'
--
-- The timestamps at which the order status was updated.
data OrderStatusTransitions'
  = OrderStatusTransitions'
      { -- | canceled: The time that the order was canceled.
        orderStatusTransitions'Canceled :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | fulfiled: The time that the order was fulfilled.
        orderStatusTransitions'Fulfiled :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | paid: The time that the order was paid.
        orderStatusTransitions'Paid :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | returned: The time that the order was returned.
        orderStatusTransitions'Returned :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON OrderStatusTransitions' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "canceled" (orderStatusTransitions'Canceled obj) : (Data.Aeson..=) "fulfiled" (orderStatusTransitions'Fulfiled obj) : (Data.Aeson..=) "paid" (orderStatusTransitions'Paid obj) : (Data.Aeson..=) "returned" (orderStatusTransitions'Returned obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "canceled" (orderStatusTransitions'Canceled obj) GHC.Base.<> ((Data.Aeson..=) "fulfiled" (orderStatusTransitions'Fulfiled obj) GHC.Base.<> ((Data.Aeson..=) "paid" (orderStatusTransitions'Paid obj) GHC.Base.<> (Data.Aeson..=) "returned" (orderStatusTransitions'Returned obj))))

instance Data.Aeson.Types.FromJSON.FromJSON OrderStatusTransitions' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "OrderStatusTransitions'" (\obj -> (((GHC.Base.pure OrderStatusTransitions' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "canceled")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fulfiled")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "paid")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "returned"))

-- | Defines the data type for the schema order_item
--
-- A representation of the constituent items of any given order. Can be used to
-- represent [SKUs](https:\/\/stripe.com\/docs\/api\#skus), shipping costs, or taxes owed on the order.
--
-- Related guide: [Orders](https:\/\/stripe.com\/docs\/orders\/guide).
data OrderItem
  = OrderItem
      { -- | amount: A positive integer in the smallest currency unit (that is, 100 cents for \$1.00, or 1 for ¥1, Japanese Yen being a zero-decimal currency) representing the total amount for the line item.
        orderItemAmount :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        orderItemCurrency :: Data.Text.Internal.Text,
        -- | description: Description of the line item, meant to be displayable to the user (e.g., \`\"Express shipping\"\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderItemDescription :: Data.Text.Internal.Text,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        orderItemObject :: OrderItemObject',
        -- | parent: The ID of the associated object for this line item. Expandable if not null (e.g., expandable to a SKU).
        orderItemParent :: (GHC.Maybe.Maybe OrderItemParent'Variants),
        -- | quantity: A positive integer representing the number of instances of \`parent\` that are included in this order item. Applicable\/present only if \`type\` is \`sku\`.
        orderItemQuantity :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | type: The type of line item. One of \`sku\`, \`tax\`, \`shipping\`, or \`discount\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderItemType :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON OrderItem where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (orderItemAmount obj) : (Data.Aeson..=) "currency" (orderItemCurrency obj) : (Data.Aeson..=) "description" (orderItemDescription obj) : (Data.Aeson..=) "object" (orderItemObject obj) : (Data.Aeson..=) "parent" (orderItemParent obj) : (Data.Aeson..=) "quantity" (orderItemQuantity obj) : (Data.Aeson..=) "type" (orderItemType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (orderItemAmount obj) GHC.Base.<> ((Data.Aeson..=) "currency" (orderItemCurrency obj) GHC.Base.<> ((Data.Aeson..=) "description" (orderItemDescription obj) GHC.Base.<> ((Data.Aeson..=) "object" (orderItemObject obj) GHC.Base.<> ((Data.Aeson..=) "parent" (orderItemParent obj) GHC.Base.<> ((Data.Aeson..=) "quantity" (orderItemQuantity obj) GHC.Base.<> (Data.Aeson..=) "type" (orderItemType obj)))))))

instance Data.Aeson.Types.FromJSON.FromJSON OrderItem where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "OrderItem" (\obj -> ((((((GHC.Base.pure OrderItem GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "parent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "quantity")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type"))

-- | Defines the enum schema order_itemObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data OrderItemObject'
  = OrderItemObject'EnumOther Data.Aeson.Types.Internal.Value
  | OrderItemObject'EnumTyped Data.Text.Internal.Text
  | OrderItemObject'EnumStringOrderItem
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON OrderItemObject' where
  toJSON (OrderItemObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (OrderItemObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (OrderItemObject'EnumStringOrderItem) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "order_item"

instance Data.Aeson.FromJSON OrderItemObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "order_item")
          then OrderItemObject'EnumStringOrderItem
          else OrderItemObject'EnumOther val
      )

-- | Define the one-of schema order_itemParent\'
--
-- The ID of the associated object for this line item. Expandable if not null (e.g., expandable to a SKU).
data OrderItemParent'Variants
  = OrderItemParent'Sku Sku
  | OrderItemParent'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON OrderItemParent'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON OrderItemParent'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema order_return
--
-- A return represents the full or partial return of a number of [order items](https:\/\/stripe.com\/docs\/api\#order_items).
-- Returns always belong to an order, and may optionally contain a refund.
--
-- Related guide: [Handling Returns](https:\/\/stripe.com\/docs\/orders\/guide\#handling-returns).
data OrderReturn
  = OrderReturn
      { -- | amount: A positive integer in the smallest currency unit (that is, 100 cents for \$1.00, or 1 for ¥1, Japanese Yen being a zero-decimal currency) representing the total amount for the returned line item.
        orderReturnAmount :: GHC.Integer.Type.Integer,
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        orderReturnCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        orderReturnCurrency :: Data.Text.Internal.Text,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        orderReturnId :: Data.Text.Internal.Text,
        -- | items: The items included in this order return.
        orderReturnItems :: ([] OrderItem),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        orderReturnLivemode :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        orderReturnObject :: OrderReturnObject',
        -- | order: The order that this return includes items from.
        orderReturnOrder :: (GHC.Maybe.Maybe OrderReturnOrder'Variants),
        -- | refund: The ID of the refund issued for this return.
        orderReturnRefund :: (GHC.Maybe.Maybe OrderReturnRefund'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON OrderReturn where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (orderReturnAmount obj) : (Data.Aeson..=) "created" (orderReturnCreated obj) : (Data.Aeson..=) "currency" (orderReturnCurrency obj) : (Data.Aeson..=) "id" (orderReturnId obj) : (Data.Aeson..=) "items" (orderReturnItems obj) : (Data.Aeson..=) "livemode" (orderReturnLivemode obj) : (Data.Aeson..=) "object" (orderReturnObject obj) : (Data.Aeson..=) "order" (orderReturnOrder obj) : (Data.Aeson..=) "refund" (orderReturnRefund obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (orderReturnAmount obj) GHC.Base.<> ((Data.Aeson..=) "created" (orderReturnCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (orderReturnCurrency obj) GHC.Base.<> ((Data.Aeson..=) "id" (orderReturnId obj) GHC.Base.<> ((Data.Aeson..=) "items" (orderReturnItems obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (orderReturnLivemode obj) GHC.Base.<> ((Data.Aeson..=) "object" (orderReturnObject obj) GHC.Base.<> ((Data.Aeson..=) "order" (orderReturnOrder obj) GHC.Base.<> (Data.Aeson..=) "refund" (orderReturnRefund obj)))))))))

instance Data.Aeson.Types.FromJSON.FromJSON OrderReturn where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "OrderReturn" (\obj -> ((((((((GHC.Base.pure OrderReturn GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "items")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "order")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "refund"))

-- | Defines the enum schema order_returnObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data OrderReturnObject'
  = OrderReturnObject'EnumOther Data.Aeson.Types.Internal.Value
  | OrderReturnObject'EnumTyped Data.Text.Internal.Text
  | OrderReturnObject'EnumStringOrderReturn
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON OrderReturnObject' where
  toJSON (OrderReturnObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (OrderReturnObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (OrderReturnObject'EnumStringOrderReturn) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "order_return"

instance Data.Aeson.FromJSON OrderReturnObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "order_return")
          then OrderReturnObject'EnumStringOrderReturn
          else OrderReturnObject'EnumOther val
      )

-- | Define the one-of schema order_returnOrder\'
--
-- The order that this return includes items from.
data OrderReturnOrder'Variants
  = OrderReturnOrder'Order Order
  | OrderReturnOrder'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON OrderReturnOrder'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON OrderReturnOrder'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema order_returnRefund\'
--
-- The ID of the refund issued for this return.
data OrderReturnRefund'Variants
  = OrderReturnRefund'Refund Refund
  | OrderReturnRefund'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON OrderReturnRefund'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON OrderReturnRefund'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema payment_intent
--
-- A PaymentIntent guides you through the process of collecting a payment from your customer.
-- We recommend that you create exactly one PaymentIntent for each order or
-- customer session in your system. You can reference the PaymentIntent later to
-- see the history of payment attempts for a particular session.
--
-- A PaymentIntent transitions through
-- [multiple statuses](https:\/\/stripe.com\/docs\/payments\/intents\#intent-statuses)
-- throughout its lifetime as it interfaces with Stripe.js to perform
-- authentication flows and ultimately creates at most one successful charge.
--
-- Related guide: [Payment Intents API](https:\/\/stripe.com\/docs\/payments\/payment-intents\/creating-payment-intents).
data PaymentIntent
  = PaymentIntent
      { -- | amount: Amount intended to be collected by this PaymentIntent. A positive integer representing how much to charge in the [smallest currency unit](https:\/\/stripe.com\/docs\/currencies\#zero-decimal) (e.g., 100 cents to charge \$1.00 or 100 to charge ¥100, a zero-decimal currency). The minimum amount is \$0.50 US or [equivalent in charge currency](https:\/\/stripe.com\/docs\/currencies\#minimum-and-maximum-charge-amounts). The amount value supports up to eight digits (e.g., a value of 99999999 for a USD charge of \$999,999.99).
        paymentIntentAmount :: GHC.Integer.Type.Integer,
        -- | amount_capturable: Amount that can be captured from this PaymentIntent.
        paymentIntentAmountCapturable :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | amount_received: Amount that was collected by this PaymentIntent.
        paymentIntentAmountReceived :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | application: ID of the Connect application that created the PaymentIntent.
        paymentIntentApplication :: (GHC.Maybe.Maybe PaymentIntentApplication'Variants),
        -- | application_fee_amount: The amount of the application fee (if any) for the resulting payment. See the PaymentIntents [use case for connected accounts](https:\/\/stripe.com\/docs\/payments\/connected-accounts) for details.
        paymentIntentApplicationFeeAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | canceled_at: Populated when \`status\` is \`canceled\`, this is the time at which the PaymentIntent was canceled. Measured in seconds since the Unix epoch.
        paymentIntentCanceledAt :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | cancellation_reason: Reason for cancellation of this PaymentIntent, either user-provided (\`duplicate\`, \`fraudulent\`, \`requested_by_customer\`, or \`abandoned\`) or generated by Stripe internally (\`failed_invoice\`, \`void_invoice\`, or \`automatic\`).
        paymentIntentCancellationReason :: (GHC.Maybe.Maybe PaymentIntentCancellationReason'),
        -- | capture_method: Controls when the funds will be captured from the customer\'s account.
        paymentIntentCaptureMethod :: PaymentIntentCaptureMethod',
        -- | charges: Charges that were created by this PaymentIntent, if any.
        paymentIntentCharges :: (GHC.Maybe.Maybe PaymentIntentCharges'),
        -- | client_secret: The client secret of this PaymentIntent. Used for client-side retrieval using a publishable key.
        --
        -- The client secret can be used to complete a payment from your frontend. It should not be stored, logged, embedded in URLs, or exposed to anyone other than the customer. Make sure that you have TLS enabled on any page that includes the client secret.
        --
        -- Refer to our docs to [accept a payment](https:\/\/stripe.com\/docs\/payments\/accept-a-payment) and learn about how \`client_secret\` should be handled.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentClientSecret :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | confirmation_method
        paymentIntentConfirmationMethod :: PaymentIntentConfirmationMethod',
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        paymentIntentCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        paymentIntentCurrency :: Data.Text.Internal.Text,
        -- | customer: ID of the Customer this PaymentIntent belongs to, if one exists.
        --
        -- If present, payment methods used with this PaymentIntent can only be attached to this Customer, and payment methods attached to other Customers cannot be used with this PaymentIntent.
        paymentIntentCustomer :: (GHC.Maybe.Maybe PaymentIntentCustomer'Variants),
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentId :: Data.Text.Internal.Text,
        -- | invoice: ID of the invoice that created this PaymentIntent, if it exists.
        paymentIntentInvoice :: (GHC.Maybe.Maybe PaymentIntentInvoice'Variants),
        -- | last_payment_error: The payment error encountered in the previous PaymentIntent confirmation. It will be cleared if the PaymentIntent is later updated for any reason.
        paymentIntentLastPaymentError :: (GHC.Maybe.Maybe PaymentIntentLastPaymentError'),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        paymentIntentLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. For more information, see the [documentation](https:\/\/stripe.com\/docs\/payments\/payment-intents\/creating-payment-intents\#storing-information-in-metadata).
        paymentIntentMetadata :: (GHC.Maybe.Maybe PaymentIntentMetadata'),
        -- | next_action: If present, this property tells you what actions you need to take in order for your customer to fulfill a payment using the provided source.
        paymentIntentNextAction :: (GHC.Maybe.Maybe PaymentIntentNextAction'),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        paymentIntentObject :: PaymentIntentObject',
        -- | on_behalf_of: The account (if any) for which the funds of the PaymentIntent are intended. See the PaymentIntents [use case for connected accounts](https:\/\/stripe.com\/docs\/payments\/connected-accounts) for details.
        paymentIntentOnBehalfOf :: (GHC.Maybe.Maybe PaymentIntentOnBehalfOf'Variants),
        -- | payment_method: ID of the payment method used in this PaymentIntent.
        paymentIntentPaymentMethod :: (GHC.Maybe.Maybe PaymentIntentPaymentMethod'Variants),
        -- | payment_method_options: Payment-method-specific configuration for this PaymentIntent.
        paymentIntentPaymentMethodOptions :: (GHC.Maybe.Maybe PaymentIntentPaymentMethodOptions'),
        -- | payment_method_types: The list of payment method types (e.g. card) that this PaymentIntent is allowed to use.
        paymentIntentPaymentMethodTypes :: ([] Data.Text.Internal.Text),
        -- | receipt_email: Email address that the receipt for the resulting payment will be sent to.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentReceiptEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | review: ID of the review associated with this PaymentIntent, if any.
        paymentIntentReview :: (GHC.Maybe.Maybe PaymentIntentReview'Variants),
        -- | setup_future_usage: Indicates that you intend to make future payments with this PaymentIntent\'s payment method.
        --
        -- If present, the payment method used with this PaymentIntent can be [attached](https:\/\/stripe.com\/docs\/api\/payment_methods\/attach) to a Customer, even after the transaction completes.
        --
        -- For more, learn to [save card details during payment](https:\/\/stripe.com\/docs\/payments\/save-during-payment).
        --
        -- Stripe uses \`setup_future_usage\` to dynamically optimize your payment flow and comply with regional legislation and network rules. For example, if your customer is impacted by [SCA](https:\/\/stripe.com\/docs\/strong-customer-authentication), using \`off_session\` will ensure that they are authenticated while processing this PaymentIntent. You will then be able to collect [off-session payments](https:\/\/stripe.com\/docs\/payments\/cards\/charging-saved-cards\#off-session-payments-with-saved-cards) for this customer.
        paymentIntentSetupFutureUsage :: (GHC.Maybe.Maybe PaymentIntentSetupFutureUsage'),
        -- | shipping: Shipping information for this PaymentIntent.
        paymentIntentShipping :: (GHC.Maybe.Maybe PaymentIntentShipping'),
        -- | statement_descriptor: For non-card charges, you can use this value as the complete description that appears on your customers’ statements. Must contain at least one letter, maximum 22 characters.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentStatementDescriptor :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | statement_descriptor_suffix: Provides information about a card payment that customers see on their statements. Concatenated with the prefix (shortened descriptor) or statement descriptor that’s set on the account to form the complete statement descriptor. Maximum 22 characters for the concatenated descriptor.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentStatementDescriptorSuffix :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: Status of this PaymentIntent, one of \`requires_payment_method\`, \`requires_confirmation\`, \`requires_action\`, \`processing\`, \`requires_capture\`, \`canceled\`, or \`succeeded\`. Read more about each PaymentIntent [status](https:\/\/stripe.com\/docs\/payments\/intents\#intent-statuses).
        paymentIntentStatus :: PaymentIntentStatus',
        -- | transfer_data: The data with which to automatically create a Transfer when the payment is finalized. See the PaymentIntents [use case for connected accounts](https:\/\/stripe.com\/docs\/payments\/connected-accounts) for details.
        paymentIntentTransferData :: (GHC.Maybe.Maybe PaymentIntentTransferData'),
        -- | transfer_group: A string that identifies the resulting payment as part of a group. See the PaymentIntents [use case for connected accounts](https:\/\/stripe.com\/docs\/payments\/connected-accounts) for details.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentTransferGroup :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntent where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (paymentIntentAmount obj) : (Data.Aeson..=) "amount_capturable" (paymentIntentAmountCapturable obj) : (Data.Aeson..=) "amount_received" (paymentIntentAmountReceived obj) : (Data.Aeson..=) "application" (paymentIntentApplication obj) : (Data.Aeson..=) "application_fee_amount" (paymentIntentApplicationFeeAmount obj) : (Data.Aeson..=) "canceled_at" (paymentIntentCanceledAt obj) : (Data.Aeson..=) "cancellation_reason" (paymentIntentCancellationReason obj) : (Data.Aeson..=) "capture_method" (paymentIntentCaptureMethod obj) : (Data.Aeson..=) "charges" (paymentIntentCharges obj) : (Data.Aeson..=) "client_secret" (paymentIntentClientSecret obj) : (Data.Aeson..=) "confirmation_method" (paymentIntentConfirmationMethod obj) : (Data.Aeson..=) "created" (paymentIntentCreated obj) : (Data.Aeson..=) "currency" (paymentIntentCurrency obj) : (Data.Aeson..=) "customer" (paymentIntentCustomer obj) : (Data.Aeson..=) "description" (paymentIntentDescription obj) : (Data.Aeson..=) "id" (paymentIntentId obj) : (Data.Aeson..=) "invoice" (paymentIntentInvoice obj) : (Data.Aeson..=) "last_payment_error" (paymentIntentLastPaymentError obj) : (Data.Aeson..=) "livemode" (paymentIntentLivemode obj) : (Data.Aeson..=) "metadata" (paymentIntentMetadata obj) : (Data.Aeson..=) "next_action" (paymentIntentNextAction obj) : (Data.Aeson..=) "object" (paymentIntentObject obj) : (Data.Aeson..=) "on_behalf_of" (paymentIntentOnBehalfOf obj) : (Data.Aeson..=) "payment_method" (paymentIntentPaymentMethod obj) : (Data.Aeson..=) "payment_method_options" (paymentIntentPaymentMethodOptions obj) : (Data.Aeson..=) "payment_method_types" (paymentIntentPaymentMethodTypes obj) : (Data.Aeson..=) "receipt_email" (paymentIntentReceiptEmail obj) : (Data.Aeson..=) "review" (paymentIntentReview obj) : (Data.Aeson..=) "setup_future_usage" (paymentIntentSetupFutureUsage obj) : (Data.Aeson..=) "shipping" (paymentIntentShipping obj) : (Data.Aeson..=) "statement_descriptor" (paymentIntentStatementDescriptor obj) : (Data.Aeson..=) "statement_descriptor_suffix" (paymentIntentStatementDescriptorSuffix obj) : (Data.Aeson..=) "status" (paymentIntentStatus obj) : (Data.Aeson..=) "transfer_data" (paymentIntentTransferData obj) : (Data.Aeson..=) "transfer_group" (paymentIntentTransferGroup obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (paymentIntentAmount obj) GHC.Base.<> ((Data.Aeson..=) "amount_capturable" (paymentIntentAmountCapturable obj) GHC.Base.<> ((Data.Aeson..=) "amount_received" (paymentIntentAmountReceived obj) GHC.Base.<> ((Data.Aeson..=) "application" (paymentIntentApplication obj) GHC.Base.<> ((Data.Aeson..=) "application_fee_amount" (paymentIntentApplicationFeeAmount obj) GHC.Base.<> ((Data.Aeson..=) "canceled_at" (paymentIntentCanceledAt obj) GHC.Base.<> ((Data.Aeson..=) "cancellation_reason" (paymentIntentCancellationReason obj) GHC.Base.<> ((Data.Aeson..=) "capture_method" (paymentIntentCaptureMethod obj) GHC.Base.<> ((Data.Aeson..=) "charges" (paymentIntentCharges obj) GHC.Base.<> ((Data.Aeson..=) "client_secret" (paymentIntentClientSecret obj) GHC.Base.<> ((Data.Aeson..=) "confirmation_method" (paymentIntentConfirmationMethod obj) GHC.Base.<> ((Data.Aeson..=) "created" (paymentIntentCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (paymentIntentCurrency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (paymentIntentCustomer obj) GHC.Base.<> ((Data.Aeson..=) "description" (paymentIntentDescription obj) GHC.Base.<> ((Data.Aeson..=) "id" (paymentIntentId obj) GHC.Base.<> ((Data.Aeson..=) "invoice" (paymentIntentInvoice obj) GHC.Base.<> ((Data.Aeson..=) "last_payment_error" (paymentIntentLastPaymentError obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (paymentIntentLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (paymentIntentMetadata obj) GHC.Base.<> ((Data.Aeson..=) "next_action" (paymentIntentNextAction obj) GHC.Base.<> ((Data.Aeson..=) "object" (paymentIntentObject obj) GHC.Base.<> ((Data.Aeson..=) "on_behalf_of" (paymentIntentOnBehalfOf obj) GHC.Base.<> ((Data.Aeson..=) "payment_method" (paymentIntentPaymentMethod obj) GHC.Base.<> ((Data.Aeson..=) "payment_method_options" (paymentIntentPaymentMethodOptions obj) GHC.Base.<> ((Data.Aeson..=) "payment_method_types" (paymentIntentPaymentMethodTypes obj) GHC.Base.<> ((Data.Aeson..=) "receipt_email" (paymentIntentReceiptEmail obj) GHC.Base.<> ((Data.Aeson..=) "review" (paymentIntentReview obj) GHC.Base.<> ((Data.Aeson..=) "setup_future_usage" (paymentIntentSetupFutureUsage obj) GHC.Base.<> ((Data.Aeson..=) "shipping" (paymentIntentShipping obj) GHC.Base.<> ((Data.Aeson..=) "statement_descriptor" (paymentIntentStatementDescriptor obj) GHC.Base.<> ((Data.Aeson..=) "statement_descriptor_suffix" (paymentIntentStatementDescriptorSuffix obj) GHC.Base.<> ((Data.Aeson..=) "status" (paymentIntentStatus obj) GHC.Base.<> ((Data.Aeson..=) "transfer_data" (paymentIntentTransferData obj) GHC.Base.<> (Data.Aeson..=) "transfer_group" (paymentIntentTransferGroup obj)))))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntent where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntent" (\obj -> ((((((((((((((((((((((((((((((((((GHC.Base.pure PaymentIntent GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount_capturable")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount_received")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "application")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "application_fee_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "canceled_at")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cancellation_reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "capture_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "charges")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "client_secret")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "confirmation_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "invoice")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last_payment_error")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "next_action")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "on_behalf_of")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_method_options")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "payment_method_types")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "receipt_email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "review")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "setup_future_usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "statement_descriptor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "statement_descriptor_suffix")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transfer_data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transfer_group"))

-- | Define the one-of schema payment_intentApplication\'
--
-- ID of the Connect application that created the PaymentIntent.
data PaymentIntentApplication'Variants
  = PaymentIntentApplication'Application Application
  | PaymentIntentApplication'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentIntentApplication'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentIntentApplication'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema payment_intentCancellation_reason\'
--
-- Reason for cancellation of this PaymentIntent, either user-provided (\`duplicate\`, \`fraudulent\`, \`requested_by_customer\`, or \`abandoned\`) or generated by Stripe internally (\`failed_invoice\`, \`void_invoice\`, or \`automatic\`).
data PaymentIntentCancellationReason'
  = PaymentIntentCancellationReason'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentIntentCancellationReason'EnumTyped Data.Text.Internal.Text
  | PaymentIntentCancellationReason'EnumStringAbandoned
  | PaymentIntentCancellationReason'EnumStringAutomatic
  | PaymentIntentCancellationReason'EnumStringDuplicate
  | PaymentIntentCancellationReason'EnumStringFailedInvoice
  | PaymentIntentCancellationReason'EnumStringFraudulent
  | PaymentIntentCancellationReason'EnumStringRequestedByCustomer
  | PaymentIntentCancellationReason'EnumStringVoidInvoice
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentIntentCancellationReason' where
  toJSON (PaymentIntentCancellationReason'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentCancellationReason'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentCancellationReason'EnumStringAbandoned) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "abandoned"
  toJSON (PaymentIntentCancellationReason'EnumStringAutomatic) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automatic"
  toJSON (PaymentIntentCancellationReason'EnumStringDuplicate) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "duplicate"
  toJSON (PaymentIntentCancellationReason'EnumStringFailedInvoice) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "failed_invoice"
  toJSON (PaymentIntentCancellationReason'EnumStringFraudulent) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fraudulent"
  toJSON (PaymentIntentCancellationReason'EnumStringRequestedByCustomer) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requested_by_customer"
  toJSON (PaymentIntentCancellationReason'EnumStringVoidInvoice) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "void_invoice"

instance Data.Aeson.FromJSON PaymentIntentCancellationReason' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "abandoned")
          then PaymentIntentCancellationReason'EnumStringAbandoned
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automatic")
              then PaymentIntentCancellationReason'EnumStringAutomatic
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "duplicate")
                  then PaymentIntentCancellationReason'EnumStringDuplicate
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "failed_invoice")
                      then PaymentIntentCancellationReason'EnumStringFailedInvoice
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fraudulent")
                          then PaymentIntentCancellationReason'EnumStringFraudulent
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requested_by_customer")
                              then PaymentIntentCancellationReason'EnumStringRequestedByCustomer
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "void_invoice")
                                  then PaymentIntentCancellationReason'EnumStringVoidInvoice
                                  else PaymentIntentCancellationReason'EnumOther val
      )

-- | Defines the enum schema payment_intentCapture_method\'
--
-- Controls when the funds will be captured from the customer\'s account.
data PaymentIntentCaptureMethod'
  = PaymentIntentCaptureMethod'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentIntentCaptureMethod'EnumTyped Data.Text.Internal.Text
  | PaymentIntentCaptureMethod'EnumStringAutomatic
  | PaymentIntentCaptureMethod'EnumStringManual
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentIntentCaptureMethod' where
  toJSON (PaymentIntentCaptureMethod'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentCaptureMethod'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentCaptureMethod'EnumStringAutomatic) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automatic"
  toJSON (PaymentIntentCaptureMethod'EnumStringManual) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual"

instance Data.Aeson.FromJSON PaymentIntentCaptureMethod' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automatic")
          then PaymentIntentCaptureMethod'EnumStringAutomatic
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual")
              then PaymentIntentCaptureMethod'EnumStringManual
              else PaymentIntentCaptureMethod'EnumOther val
      )

-- | Defines the data type for the schema payment_intentCharges\'
--
-- Charges that were created by this PaymentIntent, if any.
data PaymentIntentCharges'
  = PaymentIntentCharges'
      { -- | data: This list only contains the latest charge, even if there were previously multiple unsuccessful charges. To view all previous charges for a PaymentIntent, you can filter the charges list using the \`payment_intent\` [parameter](https:\/\/stripe.com\/docs\/api\/charges\/list\#list_charges-payment_intent).
        paymentIntentCharges'Data :: ([] Charge),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        paymentIntentCharges'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        paymentIntentCharges'Object :: PaymentIntentCharges'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentCharges'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentCharges' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (paymentIntentCharges'Data obj) : (Data.Aeson..=) "has_more" (paymentIntentCharges'HasMore obj) : (Data.Aeson..=) "object" (paymentIntentCharges'Object obj) : (Data.Aeson..=) "url" (paymentIntentCharges'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (paymentIntentCharges'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (paymentIntentCharges'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (paymentIntentCharges'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (paymentIntentCharges'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentCharges' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentCharges'" (\obj -> (((GHC.Base.pure PaymentIntentCharges' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema payment_intentCharges\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data PaymentIntentCharges'Object'
  = PaymentIntentCharges'Object'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentIntentCharges'Object'EnumTyped Data.Text.Internal.Text
  | PaymentIntentCharges'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentIntentCharges'Object' where
  toJSON (PaymentIntentCharges'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentCharges'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentCharges'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON PaymentIntentCharges'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then PaymentIntentCharges'Object'EnumStringList
          else PaymentIntentCharges'Object'EnumOther val
      )

-- | Defines the enum schema payment_intentConfirmation_method\'
data PaymentIntentConfirmationMethod'
  = PaymentIntentConfirmationMethod'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentIntentConfirmationMethod'EnumTyped Data.Text.Internal.Text
  | PaymentIntentConfirmationMethod'EnumStringAutomatic
  | PaymentIntentConfirmationMethod'EnumStringManual
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentIntentConfirmationMethod' where
  toJSON (PaymentIntentConfirmationMethod'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentConfirmationMethod'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentConfirmationMethod'EnumStringAutomatic) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automatic"
  toJSON (PaymentIntentConfirmationMethod'EnumStringManual) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual"

instance Data.Aeson.FromJSON PaymentIntentConfirmationMethod' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automatic")
          then PaymentIntentConfirmationMethod'EnumStringAutomatic
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual")
              then PaymentIntentConfirmationMethod'EnumStringManual
              else PaymentIntentConfirmationMethod'EnumOther val
      )

-- | Define the one-of schema payment_intentCustomer\'
--
-- ID of the Customer this PaymentIntent belongs to, if one exists.
--
-- If present, payment methods used with this PaymentIntent can only be attached to this Customer, and payment methods attached to other Customers cannot be used with this PaymentIntent.
data PaymentIntentCustomer'Variants
  = PaymentIntentCustomer'Customer Customer
  | PaymentIntentCustomer'DeletedCustomer DeletedCustomer
  | PaymentIntentCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentIntentCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentIntentCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema payment_intentInvoice\'
--
-- ID of the invoice that created this PaymentIntent, if it exists.
data PaymentIntentInvoice'Variants
  = PaymentIntentInvoice'Invoice Invoice
  | PaymentIntentInvoice'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentIntentInvoice'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentIntentInvoice'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema payment_intentLast_payment_error\'
--
-- The payment error encountered in the previous PaymentIntent confirmation. It will be cleared if the PaymentIntent is later updated for any reason.
data PaymentIntentLastPaymentError'
  = PaymentIntentLastPaymentError'
      { -- | charge: For card errors, the ID of the failed charge.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Charge :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | code: For some errors that could be handled programmatically, a short string indicating the [error code](https:\/\/stripe.com\/docs\/error-codes) reported.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Code :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | decline_code: For card errors resulting from a card issuer decline, a short string indicating the [card issuer\'s reason for the decline](https:\/\/stripe.com\/docs\/declines\#issuer-declines) if they provide one.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'DeclineCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | doc_url: A URL to more information about the [error code](https:\/\/stripe.com\/docs\/error-codes) reported.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'DocUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | message: A human-readable message providing more details about the error. For card errors, these messages can be shown to your users.
        --
        -- Constraints:
        --
        -- * Maximum length of 40000
        paymentIntentLastPaymentError'Message :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | param: If the error is parameter-specific, the parameter related to the error. For example, you can use this to display a message near the correct form field.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Param :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | payment_intent: A PaymentIntent guides you through the process of collecting a payment from your customer.
        -- We recommend that you create exactly one PaymentIntent for each order or
        -- customer session in your system. You can reference the PaymentIntent later to
        -- see the history of payment attempts for a particular session.
        --
        -- A PaymentIntent transitions through
        -- [multiple statuses](https:\/\/stripe.com\/docs\/payments\/intents\#intent-statuses)
        -- throughout its lifetime as it interfaces with Stripe.js to perform
        -- authentication flows and ultimately creates at most one successful charge.
        --
        -- Related guide: [Payment Intents API](https:\/\/stripe.com\/docs\/payments\/payment-intents\/creating-payment-intents).
        paymentIntentLastPaymentError'PaymentIntent :: (GHC.Maybe.Maybe PaymentIntent),
        -- | payment_method: PaymentMethod objects represent your customer\'s payment instruments.
        -- They can be used with [PaymentIntents](https:\/\/stripe.com\/docs\/payments\/payment-intents) to collect payments or saved to
        -- Customer objects to store instrument details for future payments.
        --
        -- Related guides: [Payment Methods](https:\/\/stripe.com\/docs\/payments\/payment-methods) and [More Payment Scenarios](https:\/\/stripe.com\/docs\/payments\/more-payment-scenarios).
        paymentIntentLastPaymentError'PaymentMethod :: (GHC.Maybe.Maybe PaymentMethod),
        -- | setup_intent: A SetupIntent guides you through the process of setting up a customer\'s payment credentials for future payments.
        -- For example, you could use a SetupIntent to set up your customer\'s card without immediately collecting a payment.
        -- Later, you can use [PaymentIntents](https:\/\/stripe.com\/docs\/api\#payment_intents) to drive the payment flow.
        --
        -- Create a SetupIntent as soon as you\'re ready to collect your customer\'s payment credentials.
        -- Do not maintain long-lived, unconfirmed SetupIntents as they may no longer be valid.
        -- The SetupIntent then transitions through multiple [statuses](https:\/\/stripe.com\/docs\/payments\/intents\#intent-statuses) as it guides
        -- you through the setup process.
        --
        -- Successful SetupIntents result in payment credentials that are optimized for future payments.
        -- For example, cardholders in [certain regions](\/guides\/strong-customer-authentication) may need to be run through
        -- [Strong Customer Authentication](https:\/\/stripe.com\/docs\/strong-customer-authentication) at the time of payment method collection
        -- in order to streamline later [off-session payments](https:\/\/stripe.com\/docs\/payments\/setup-intents).
        --
        -- By using SetupIntents, you ensure that your customers experience the minimum set of required friction,
        -- even as regulations change over time.
        paymentIntentLastPaymentError'SetupIntent :: (GHC.Maybe.Maybe SetupIntent),
        -- | source: The source object for errors returned on a request involving a source.
        paymentIntentLastPaymentError'Source :: (GHC.Maybe.Maybe PaymentIntentLastPaymentError'Source'),
        -- | type: The type of error returned. One of \`api_connection_error\`, \`api_error\`, \`authentication_error\`, \`card_error\`, \`idempotency_error\`, \`invalid_request_error\`, or \`rate_limit_error\`
        paymentIntentLastPaymentError'Type :: (GHC.Maybe.Maybe PaymentIntentLastPaymentError'Type')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentLastPaymentError' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "charge" (paymentIntentLastPaymentError'Charge obj) : (Data.Aeson..=) "code" (paymentIntentLastPaymentError'Code obj) : (Data.Aeson..=) "decline_code" (paymentIntentLastPaymentError'DeclineCode obj) : (Data.Aeson..=) "doc_url" (paymentIntentLastPaymentError'DocUrl obj) : (Data.Aeson..=) "message" (paymentIntentLastPaymentError'Message obj) : (Data.Aeson..=) "param" (paymentIntentLastPaymentError'Param obj) : (Data.Aeson..=) "payment_intent" (paymentIntentLastPaymentError'PaymentIntent obj) : (Data.Aeson..=) "payment_method" (paymentIntentLastPaymentError'PaymentMethod obj) : (Data.Aeson..=) "setup_intent" (paymentIntentLastPaymentError'SetupIntent obj) : (Data.Aeson..=) "source" (paymentIntentLastPaymentError'Source obj) : (Data.Aeson..=) "type" (paymentIntentLastPaymentError'Type obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "charge" (paymentIntentLastPaymentError'Charge obj) GHC.Base.<> ((Data.Aeson..=) "code" (paymentIntentLastPaymentError'Code obj) GHC.Base.<> ((Data.Aeson..=) "decline_code" (paymentIntentLastPaymentError'DeclineCode obj) GHC.Base.<> ((Data.Aeson..=) "doc_url" (paymentIntentLastPaymentError'DocUrl obj) GHC.Base.<> ((Data.Aeson..=) "message" (paymentIntentLastPaymentError'Message obj) GHC.Base.<> ((Data.Aeson..=) "param" (paymentIntentLastPaymentError'Param obj) GHC.Base.<> ((Data.Aeson..=) "payment_intent" (paymentIntentLastPaymentError'PaymentIntent obj) GHC.Base.<> ((Data.Aeson..=) "payment_method" (paymentIntentLastPaymentError'PaymentMethod obj) GHC.Base.<> ((Data.Aeson..=) "setup_intent" (paymentIntentLastPaymentError'SetupIntent obj) GHC.Base.<> ((Data.Aeson..=) "source" (paymentIntentLastPaymentError'Source obj) GHC.Base.<> (Data.Aeson..=) "type" (paymentIntentLastPaymentError'Type obj)))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentLastPaymentError' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentLastPaymentError'" (\obj -> ((((((((((GHC.Base.pure PaymentIntentLastPaymentError' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "charge")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "decline_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "doc_url")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "message")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "param")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_intent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "setup_intent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type"))

-- | Defines the data type for the schema payment_intentLast_payment_error\'Source\'
--
-- The source object for errors returned on a request involving a source.
data PaymentIntentLastPaymentError'Source'
  = PaymentIntentLastPaymentError'Source'
      { -- | account: The ID of the account that the bank account is associated with.
        paymentIntentLastPaymentError'Source'Account :: (GHC.Maybe.Maybe PaymentIntentLastPaymentError'Source'Account'Variants),
        -- | account_holder_name: The name of the person or business that owns the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'AccountHolderName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | account_holder_type: The type of entity that holds the account. This can be either \`individual\` or \`company\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'AccountHolderType :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | ach_credit_transfer
        paymentIntentLastPaymentError'Source'AchCreditTransfer :: (GHC.Maybe.Maybe SourceTypeAchCreditTransfer),
        -- | ach_debit
        paymentIntentLastPaymentError'Source'AchDebit :: (GHC.Maybe.Maybe SourceTypeAchDebit),
        -- | address_city: City\/District\/Suburb\/Town\/Village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'AddressCity :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_country: Billing address country, if provided when creating card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'AddressCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1: Address line 1 (Street address\/PO Box\/Company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'AddressLine1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1_check: If \`address_line1\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'AddressLine1Check :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line2: Address line 2 (Apartment\/Suite\/Unit\/Building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'AddressLine2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_state: State\/County\/Province\/Region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'AddressState :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'AddressZip :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip_check: If \`address_zip\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'AddressZipCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | alipay
        paymentIntentLastPaymentError'Source'Alipay :: (GHC.Maybe.Maybe SourceTypeAlipay),
        -- | amount: A positive integer in the smallest currency unit (that is, 100 cents for \$1.00, or 1 for ¥1, Japanese Yen being a zero-decimal currency) representing the total amount associated with the source. This is the amount for which the source will be chargeable once ready. Required for \`single_use\` sources.
        paymentIntentLastPaymentError'Source'Amount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | available_payout_methods: A set of available payout methods for this card. Will be either \`[\"standard\"]\` or \`[\"standard\", \"instant\"]\`. Only values from this set should be passed as the \`method\` when creating a transfer.
        paymentIntentLastPaymentError'Source'AvailablePayoutMethods :: (GHC.Maybe.Maybe ([] PaymentIntentLastPaymentError'Source'AvailablePayoutMethods')),
        -- | bancontact
        paymentIntentLastPaymentError'Source'Bancontact :: (GHC.Maybe.Maybe SourceTypeBancontact),
        -- | bank_name: Name of the bank associated with the routing number (e.g., \`WELLS FARGO\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'BankName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | brand: Card brand. Can be \`American Express\`, \`Diners Club\`, \`Discover\`, \`JCB\`, \`MasterCard\`, \`UnionPay\`, \`Visa\`, or \`Unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Brand :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | card
        paymentIntentLastPaymentError'Source'Card :: (GHC.Maybe.Maybe SourceTypeCard),
        -- | card_present
        paymentIntentLastPaymentError'Source'CardPresent :: (GHC.Maybe.Maybe SourceTypeCardPresent),
        -- | client_secret: The client secret of the source. Used for client-side retrieval using a publishable key.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'ClientSecret :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | code_verification:
        paymentIntentLastPaymentError'Source'CodeVerification :: (GHC.Maybe.Maybe SourceCodeVerificationFlow),
        -- | country: Two-letter ISO code representing the country the bank account is located in.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        paymentIntentLastPaymentError'Source'Created :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/payouts) paid out to the bank account.
        paymentIntentLastPaymentError'Source'Currency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer: The ID of the customer that the bank account is associated with.
        paymentIntentLastPaymentError'Source'Customer :: (GHC.Maybe.Maybe PaymentIntentLastPaymentError'Source'Customer'Variants),
        -- | cvc_check: If a CVC was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'CvcCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | default_for_currency: Whether this bank account is the default external account for its currency.
        paymentIntentLastPaymentError'Source'DefaultForCurrency :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'DynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | eps
        paymentIntentLastPaymentError'Source'Eps :: (GHC.Maybe.Maybe SourceTypeEps),
        -- | exp_month: Two-digit number representing the card\'s expiration month.
        paymentIntentLastPaymentError'Source'ExpMonth :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | exp_year: Four-digit number representing the card\'s expiration year.
        paymentIntentLastPaymentError'Source'ExpYear :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | fingerprint: Uniquely identifies this particular bank account. You can use this attribute to check whether two bank accounts are the same.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Fingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | flow: The authentication \`flow\` of the source. \`flow\` is one of \`redirect\`, \`receiver\`, \`code_verification\`, \`none\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Flow :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Funding :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | giropay
        paymentIntentLastPaymentError'Source'Giropay :: (GHC.Maybe.Maybe SourceTypeGiropay),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | ideal
        paymentIntentLastPaymentError'Source'Ideal :: (GHC.Maybe.Maybe SourceTypeIdeal),
        -- | klarna
        paymentIntentLastPaymentError'Source'Klarna :: (GHC.Maybe.Maybe SourceTypeKlarna),
        -- | last4: The last four digits of the bank account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Last4 :: (GHC.Maybe.Maybe 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.
        paymentIntentLastPaymentError'Source'Livemode :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        paymentIntentLastPaymentError'Source'Metadata :: (GHC.Maybe.Maybe PaymentIntentLastPaymentError'Source'Metadata'),
        -- | multibanco
        paymentIntentLastPaymentError'Source'Multibanco :: (GHC.Maybe.Maybe SourceTypeMultibanco),
        -- | name: Cardholder name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        paymentIntentLastPaymentError'Source'Object :: (GHC.Maybe.Maybe PaymentIntentLastPaymentError'Source'Object'),
        -- | owner: Information about the owner of the payment instrument that may be used or required by particular source types.
        paymentIntentLastPaymentError'Source'Owner :: (GHC.Maybe.Maybe PaymentIntentLastPaymentError'Source'Owner'),
        -- | p24
        paymentIntentLastPaymentError'Source'P24 :: (GHC.Maybe.Maybe SourceTypeP24),
        -- | receiver:
        paymentIntentLastPaymentError'Source'Receiver :: (GHC.Maybe.Maybe SourceReceiverFlow),
        -- | recipient: The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
        paymentIntentLastPaymentError'Source'Recipient :: (GHC.Maybe.Maybe PaymentIntentLastPaymentError'Source'Recipient'Variants),
        -- | redirect:
        paymentIntentLastPaymentError'Source'Redirect :: (GHC.Maybe.Maybe SourceRedirectFlow),
        -- | routing_number: The routing transit number for the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'RoutingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | sepa_debit
        paymentIntentLastPaymentError'Source'SepaDebit :: (GHC.Maybe.Maybe SourceTypeSepaDebit),
        -- | sofort
        paymentIntentLastPaymentError'Source'Sofort :: (GHC.Maybe.Maybe SourceTypeSofort),
        -- | source_order:
        paymentIntentLastPaymentError'Source'SourceOrder :: (GHC.Maybe.Maybe SourceOrder),
        -- | statement_descriptor: Extra information about a source. This will appear on your customer\'s statement every time you charge the source.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'StatementDescriptor :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: For bank accounts, possible values are \`new\`, \`validated\`, \`verified\`, \`verification_failed\`, or \`errored\`. A bank account that hasn\'t had any activity or validation performed is \`new\`. If Stripe can determine that the bank account exists, its status will be \`validated\`. Note that there often isn’t enough information to know (e.g., for smaller credit unions), and the validation is not always run. If customer bank account verification has succeeded, the bank account status will be \`verified\`. If the verification failed for any reason, such as microdeposit failure, the status will be \`verification_failed\`. If a transfer sent to this bank account fails, we\'ll set the status to \`errored\` and will not continue to send transfers until the bank details are updated.
        --
        -- For external accounts, possible values are \`new\` and \`errored\`. Validations aren\'t run against external accounts because they\'re only used for payouts. This means the other statuses don\'t apply. If a transfer fails, the status is set to \`errored\` and transfers are stopped until account details are updated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Status :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | three_d_secure
        paymentIntentLastPaymentError'Source'ThreeDSecure :: (GHC.Maybe.Maybe SourceTypeThreeDSecure),
        -- | tokenization_method: If the card number is tokenized, this is the method that was used. Can be \`amex_express_checkout\`, \`android_pay\` (includes Google Pay), \`apple_pay\`, \`masterpass\`, \`visa_checkout\`, or null.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'TokenizationMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | type: The \`type\` of the source. The \`type\` is a payment method, one of \`ach_credit_transfer\`, \`ach_debit\`, \`alipay\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`multibanco\`, \`klarna\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`three_d_secure\`, or \`wechat\`. An additional hash is included on the source with a name matching this value. It contains additional information specific to the [payment method](https:\/\/stripe.com\/docs\/sources) used.
        paymentIntentLastPaymentError'Source'Type :: (GHC.Maybe.Maybe PaymentIntentLastPaymentError'Source'Type'),
        -- | usage: Either \`reusable\` or \`single_use\`. Whether this source should be reusable or not. Some source types may or may not be reusable by construction, while others may leave the option at creation. If an incompatible value is passed, an error will be returned.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Usage :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | wechat
        paymentIntentLastPaymentError'Source'Wechat :: (GHC.Maybe.Maybe SourceTypeWechat)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentLastPaymentError'Source' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (paymentIntentLastPaymentError'Source'Account obj) : (Data.Aeson..=) "account_holder_name" (paymentIntentLastPaymentError'Source'AccountHolderName obj) : (Data.Aeson..=) "account_holder_type" (paymentIntentLastPaymentError'Source'AccountHolderType obj) : (Data.Aeson..=) "ach_credit_transfer" (paymentIntentLastPaymentError'Source'AchCreditTransfer obj) : (Data.Aeson..=) "ach_debit" (paymentIntentLastPaymentError'Source'AchDebit obj) : (Data.Aeson..=) "address_city" (paymentIntentLastPaymentError'Source'AddressCity obj) : (Data.Aeson..=) "address_country" (paymentIntentLastPaymentError'Source'AddressCountry obj) : (Data.Aeson..=) "address_line1" (paymentIntentLastPaymentError'Source'AddressLine1 obj) : (Data.Aeson..=) "address_line1_check" (paymentIntentLastPaymentError'Source'AddressLine1Check obj) : (Data.Aeson..=) "address_line2" (paymentIntentLastPaymentError'Source'AddressLine2 obj) : (Data.Aeson..=) "address_state" (paymentIntentLastPaymentError'Source'AddressState obj) : (Data.Aeson..=) "address_zip" (paymentIntentLastPaymentError'Source'AddressZip obj) : (Data.Aeson..=) "address_zip_check" (paymentIntentLastPaymentError'Source'AddressZipCheck obj) : (Data.Aeson..=) "alipay" (paymentIntentLastPaymentError'Source'Alipay obj) : (Data.Aeson..=) "amount" (paymentIntentLastPaymentError'Source'Amount obj) : (Data.Aeson..=) "available_payout_methods" (paymentIntentLastPaymentError'Source'AvailablePayoutMethods obj) : (Data.Aeson..=) "bancontact" (paymentIntentLastPaymentError'Source'Bancontact obj) : (Data.Aeson..=) "bank_name" (paymentIntentLastPaymentError'Source'BankName obj) : (Data.Aeson..=) "brand" (paymentIntentLastPaymentError'Source'Brand obj) : (Data.Aeson..=) "card" (paymentIntentLastPaymentError'Source'Card obj) : (Data.Aeson..=) "card_present" (paymentIntentLastPaymentError'Source'CardPresent obj) : (Data.Aeson..=) "client_secret" (paymentIntentLastPaymentError'Source'ClientSecret obj) : (Data.Aeson..=) "code_verification" (paymentIntentLastPaymentError'Source'CodeVerification obj) : (Data.Aeson..=) "country" (paymentIntentLastPaymentError'Source'Country obj) : (Data.Aeson..=) "created" (paymentIntentLastPaymentError'Source'Created obj) : (Data.Aeson..=) "currency" (paymentIntentLastPaymentError'Source'Currency obj) : (Data.Aeson..=) "customer" (paymentIntentLastPaymentError'Source'Customer obj) : (Data.Aeson..=) "cvc_check" (paymentIntentLastPaymentError'Source'CvcCheck obj) : (Data.Aeson..=) "default_for_currency" (paymentIntentLastPaymentError'Source'DefaultForCurrency obj) : (Data.Aeson..=) "dynamic_last4" (paymentIntentLastPaymentError'Source'DynamicLast4 obj) : (Data.Aeson..=) "eps" (paymentIntentLastPaymentError'Source'Eps obj) : (Data.Aeson..=) "exp_month" (paymentIntentLastPaymentError'Source'ExpMonth obj) : (Data.Aeson..=) "exp_year" (paymentIntentLastPaymentError'Source'ExpYear obj) : (Data.Aeson..=) "fingerprint" (paymentIntentLastPaymentError'Source'Fingerprint obj) : (Data.Aeson..=) "flow" (paymentIntentLastPaymentError'Source'Flow obj) : (Data.Aeson..=) "funding" (paymentIntentLastPaymentError'Source'Funding obj) : (Data.Aeson..=) "giropay" (paymentIntentLastPaymentError'Source'Giropay obj) : (Data.Aeson..=) "id" (paymentIntentLastPaymentError'Source'Id obj) : (Data.Aeson..=) "ideal" (paymentIntentLastPaymentError'Source'Ideal obj) : (Data.Aeson..=) "klarna" (paymentIntentLastPaymentError'Source'Klarna obj) : (Data.Aeson..=) "last4" (paymentIntentLastPaymentError'Source'Last4 obj) : (Data.Aeson..=) "livemode" (paymentIntentLastPaymentError'Source'Livemode obj) : (Data.Aeson..=) "metadata" (paymentIntentLastPaymentError'Source'Metadata obj) : (Data.Aeson..=) "multibanco" (paymentIntentLastPaymentError'Source'Multibanco obj) : (Data.Aeson..=) "name" (paymentIntentLastPaymentError'Source'Name obj) : (Data.Aeson..=) "object" (paymentIntentLastPaymentError'Source'Object obj) : (Data.Aeson..=) "owner" (paymentIntentLastPaymentError'Source'Owner obj) : (Data.Aeson..=) "p24" (paymentIntentLastPaymentError'Source'P24 obj) : (Data.Aeson..=) "receiver" (paymentIntentLastPaymentError'Source'Receiver obj) : (Data.Aeson..=) "recipient" (paymentIntentLastPaymentError'Source'Recipient obj) : (Data.Aeson..=) "redirect" (paymentIntentLastPaymentError'Source'Redirect obj) : (Data.Aeson..=) "routing_number" (paymentIntentLastPaymentError'Source'RoutingNumber obj) : (Data.Aeson..=) "sepa_debit" (paymentIntentLastPaymentError'Source'SepaDebit obj) : (Data.Aeson..=) "sofort" (paymentIntentLastPaymentError'Source'Sofort obj) : (Data.Aeson..=) "source_order" (paymentIntentLastPaymentError'Source'SourceOrder obj) : (Data.Aeson..=) "statement_descriptor" (paymentIntentLastPaymentError'Source'StatementDescriptor obj) : (Data.Aeson..=) "status" (paymentIntentLastPaymentError'Source'Status obj) : (Data.Aeson..=) "three_d_secure" (paymentIntentLastPaymentError'Source'ThreeDSecure obj) : (Data.Aeson..=) "tokenization_method" (paymentIntentLastPaymentError'Source'TokenizationMethod obj) : (Data.Aeson..=) "type" (paymentIntentLastPaymentError'Source'Type obj) : (Data.Aeson..=) "usage" (paymentIntentLastPaymentError'Source'Usage obj) : (Data.Aeson..=) "wechat" (paymentIntentLastPaymentError'Source'Wechat obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (paymentIntentLastPaymentError'Source'Account obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_name" (paymentIntentLastPaymentError'Source'AccountHolderName obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_type" (paymentIntentLastPaymentError'Source'AccountHolderType obj) GHC.Base.<> ((Data.Aeson..=) "ach_credit_transfer" (paymentIntentLastPaymentError'Source'AchCreditTransfer obj) GHC.Base.<> ((Data.Aeson..=) "ach_debit" (paymentIntentLastPaymentError'Source'AchDebit obj) GHC.Base.<> ((Data.Aeson..=) "address_city" (paymentIntentLastPaymentError'Source'AddressCity obj) GHC.Base.<> ((Data.Aeson..=) "address_country" (paymentIntentLastPaymentError'Source'AddressCountry obj) GHC.Base.<> ((Data.Aeson..=) "address_line1" (paymentIntentLastPaymentError'Source'AddressLine1 obj) GHC.Base.<> ((Data.Aeson..=) "address_line1_check" (paymentIntentLastPaymentError'Source'AddressLine1Check obj) GHC.Base.<> ((Data.Aeson..=) "address_line2" (paymentIntentLastPaymentError'Source'AddressLine2 obj) GHC.Base.<> ((Data.Aeson..=) "address_state" (paymentIntentLastPaymentError'Source'AddressState obj) GHC.Base.<> ((Data.Aeson..=) "address_zip" (paymentIntentLastPaymentError'Source'AddressZip obj) GHC.Base.<> ((Data.Aeson..=) "address_zip_check" (paymentIntentLastPaymentError'Source'AddressZipCheck obj) GHC.Base.<> ((Data.Aeson..=) "alipay" (paymentIntentLastPaymentError'Source'Alipay obj) GHC.Base.<> ((Data.Aeson..=) "amount" (paymentIntentLastPaymentError'Source'Amount obj) GHC.Base.<> ((Data.Aeson..=) "available_payout_methods" (paymentIntentLastPaymentError'Source'AvailablePayoutMethods obj) GHC.Base.<> ((Data.Aeson..=) "bancontact" (paymentIntentLastPaymentError'Source'Bancontact obj) GHC.Base.<> ((Data.Aeson..=) "bank_name" (paymentIntentLastPaymentError'Source'BankName obj) GHC.Base.<> ((Data.Aeson..=) "brand" (paymentIntentLastPaymentError'Source'Brand obj) GHC.Base.<> ((Data.Aeson..=) "card" (paymentIntentLastPaymentError'Source'Card obj) GHC.Base.<> ((Data.Aeson..=) "card_present" (paymentIntentLastPaymentError'Source'CardPresent obj) GHC.Base.<> ((Data.Aeson..=) "client_secret" (paymentIntentLastPaymentError'Source'ClientSecret obj) GHC.Base.<> ((Data.Aeson..=) "code_verification" (paymentIntentLastPaymentError'Source'CodeVerification obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentIntentLastPaymentError'Source'Country obj) GHC.Base.<> ((Data.Aeson..=) "created" (paymentIntentLastPaymentError'Source'Created obj) GHC.Base.<> ((Data.Aeson..=) "currency" (paymentIntentLastPaymentError'Source'Currency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (paymentIntentLastPaymentError'Source'Customer obj) GHC.Base.<> ((Data.Aeson..=) "cvc_check" (paymentIntentLastPaymentError'Source'CvcCheck obj) GHC.Base.<> ((Data.Aeson..=) "default_for_currency" (paymentIntentLastPaymentError'Source'DefaultForCurrency obj) GHC.Base.<> ((Data.Aeson..=) "dynamic_last4" (paymentIntentLastPaymentError'Source'DynamicLast4 obj) GHC.Base.<> ((Data.Aeson..=) "eps" (paymentIntentLastPaymentError'Source'Eps obj) GHC.Base.<> ((Data.Aeson..=) "exp_month" (paymentIntentLastPaymentError'Source'ExpMonth obj) GHC.Base.<> ((Data.Aeson..=) "exp_year" (paymentIntentLastPaymentError'Source'ExpYear obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (paymentIntentLastPaymentError'Source'Fingerprint obj) GHC.Base.<> ((Data.Aeson..=) "flow" (paymentIntentLastPaymentError'Source'Flow obj) GHC.Base.<> ((Data.Aeson..=) "funding" (paymentIntentLastPaymentError'Source'Funding obj) GHC.Base.<> ((Data.Aeson..=) "giropay" (paymentIntentLastPaymentError'Source'Giropay obj) GHC.Base.<> ((Data.Aeson..=) "id" (paymentIntentLastPaymentError'Source'Id obj) GHC.Base.<> ((Data.Aeson..=) "ideal" (paymentIntentLastPaymentError'Source'Ideal obj) GHC.Base.<> ((Data.Aeson..=) "klarna" (paymentIntentLastPaymentError'Source'Klarna obj) GHC.Base.<> ((Data.Aeson..=) "last4" (paymentIntentLastPaymentError'Source'Last4 obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (paymentIntentLastPaymentError'Source'Livemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (paymentIntentLastPaymentError'Source'Metadata obj) GHC.Base.<> ((Data.Aeson..=) "multibanco" (paymentIntentLastPaymentError'Source'Multibanco obj) GHC.Base.<> ((Data.Aeson..=) "name" (paymentIntentLastPaymentError'Source'Name obj) GHC.Base.<> ((Data.Aeson..=) "object" (paymentIntentLastPaymentError'Source'Object obj) GHC.Base.<> ((Data.Aeson..=) "owner" (paymentIntentLastPaymentError'Source'Owner obj) GHC.Base.<> ((Data.Aeson..=) "p24" (paymentIntentLastPaymentError'Source'P24 obj) GHC.Base.<> ((Data.Aeson..=) "receiver" (paymentIntentLastPaymentError'Source'Receiver obj) GHC.Base.<> ((Data.Aeson..=) "recipient" (paymentIntentLastPaymentError'Source'Recipient obj) GHC.Base.<> ((Data.Aeson..=) "redirect" (paymentIntentLastPaymentError'Source'Redirect obj) GHC.Base.<> ((Data.Aeson..=) "routing_number" (paymentIntentLastPaymentError'Source'RoutingNumber obj) GHC.Base.<> ((Data.Aeson..=) "sepa_debit" (paymentIntentLastPaymentError'Source'SepaDebit obj) GHC.Base.<> ((Data.Aeson..=) "sofort" (paymentIntentLastPaymentError'Source'Sofort obj) GHC.Base.<> ((Data.Aeson..=) "source_order" (paymentIntentLastPaymentError'Source'SourceOrder obj) GHC.Base.<> ((Data.Aeson..=) "statement_descriptor" (paymentIntentLastPaymentError'Source'StatementDescriptor obj) GHC.Base.<> ((Data.Aeson..=) "status" (paymentIntentLastPaymentError'Source'Status obj) GHC.Base.<> ((Data.Aeson..=) "three_d_secure" (paymentIntentLastPaymentError'Source'ThreeDSecure obj) GHC.Base.<> ((Data.Aeson..=) "tokenization_method" (paymentIntentLastPaymentError'Source'TokenizationMethod obj) GHC.Base.<> ((Data.Aeson..=) "type" (paymentIntentLastPaymentError'Source'Type obj) GHC.Base.<> ((Data.Aeson..=) "usage" (paymentIntentLastPaymentError'Source'Usage obj) GHC.Base.<> (Data.Aeson..=) "wechat" (paymentIntentLastPaymentError'Source'Wechat obj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentLastPaymentError'Source' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentLastPaymentError'Source'" (\obj -> (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((GHC.Base.pure PaymentIntentLastPaymentError'Source' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_credit_transfer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_state")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "alipay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "available_payout_methods")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bancontact")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bank_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "brand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card_present")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "client_secret")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "code_verification")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cvc_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_for_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dynamic_last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "eps")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "flow")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "funding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "giropay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ideal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "klarna")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "multibanco")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "owner")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "p24")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "receiver")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "recipient")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "redirect")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "routing_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sepa_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sofort")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source_order")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "statement_descriptor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "three_d_secure")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tokenization_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "wechat"))

-- | Define the one-of schema payment_intentLast_payment_error\'Source\'Account\'
--
-- The ID of the account that the bank account is associated with.
data PaymentIntentLastPaymentError'Source'Account'Variants
  = PaymentIntentLastPaymentError'Source'Account'Account Account
  | PaymentIntentLastPaymentError'Source'Account'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentIntentLastPaymentError'Source'Account'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentIntentLastPaymentError'Source'Account'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema payment_intentLast_payment_error\'Source\'Available_payout_methods\'
data PaymentIntentLastPaymentError'Source'AvailablePayoutMethods'
  = PaymentIntentLastPaymentError'Source'AvailablePayoutMethods'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentIntentLastPaymentError'Source'AvailablePayoutMethods'EnumTyped Data.Text.Internal.Text
  | PaymentIntentLastPaymentError'Source'AvailablePayoutMethods'EnumStringInstant
  | PaymentIntentLastPaymentError'Source'AvailablePayoutMethods'EnumStringStandard
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentIntentLastPaymentError'Source'AvailablePayoutMethods' where
  toJSON (PaymentIntentLastPaymentError'Source'AvailablePayoutMethods'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentLastPaymentError'Source'AvailablePayoutMethods'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentLastPaymentError'Source'AvailablePayoutMethods'EnumStringInstant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant"
  toJSON (PaymentIntentLastPaymentError'Source'AvailablePayoutMethods'EnumStringStandard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard"

instance Data.Aeson.FromJSON PaymentIntentLastPaymentError'Source'AvailablePayoutMethods' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant")
          then PaymentIntentLastPaymentError'Source'AvailablePayoutMethods'EnumStringInstant
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard")
              then PaymentIntentLastPaymentError'Source'AvailablePayoutMethods'EnumStringStandard
              else PaymentIntentLastPaymentError'Source'AvailablePayoutMethods'EnumOther val
      )

-- | Define the one-of schema payment_intentLast_payment_error\'Source\'Customer\'
--
-- The ID of the customer that the bank account is associated with.
data PaymentIntentLastPaymentError'Source'Customer'Variants
  = PaymentIntentLastPaymentError'Source'Customer'Customer Customer
  | PaymentIntentLastPaymentError'Source'Customer'DeletedCustomer DeletedCustomer
  | PaymentIntentLastPaymentError'Source'Customer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentIntentLastPaymentError'Source'Customer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentIntentLastPaymentError'Source'Customer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema payment_intentLast_payment_error\'Source\'Metadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data PaymentIntentLastPaymentError'Source'Metadata'
  = PaymentIntentLastPaymentError'Source'Metadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentLastPaymentError'Source'Metadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentLastPaymentError'Source'Metadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentLastPaymentError'Source'Metadata'" (\obj -> GHC.Base.pure PaymentIntentLastPaymentError'Source'Metadata')

-- | Defines the enum schema payment_intentLast_payment_error\'Source\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data PaymentIntentLastPaymentError'Source'Object'
  = PaymentIntentLastPaymentError'Source'Object'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentIntentLastPaymentError'Source'Object'EnumTyped Data.Text.Internal.Text
  | PaymentIntentLastPaymentError'Source'Object'EnumStringBankAccount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentIntentLastPaymentError'Source'Object' where
  toJSON (PaymentIntentLastPaymentError'Source'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentLastPaymentError'Source'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentLastPaymentError'Source'Object'EnumStringBankAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account"

instance Data.Aeson.FromJSON PaymentIntentLastPaymentError'Source'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account")
          then PaymentIntentLastPaymentError'Source'Object'EnumStringBankAccount
          else PaymentIntentLastPaymentError'Source'Object'EnumOther val
      )

-- | Defines the data type for the schema payment_intentLast_payment_error\'Source\'Owner\'
--
-- Information about the owner of the payment instrument that may be used or required by particular source types.
data PaymentIntentLastPaymentError'Source'Owner'
  = PaymentIntentLastPaymentError'Source'Owner'
      { -- | address: Owner\'s address.
        paymentIntentLastPaymentError'Source'Owner'Address :: (GHC.Maybe.Maybe PaymentIntentLastPaymentError'Source'Owner'Address'),
        -- | email: Owner\'s email address.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'Email :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Owner\'s full name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | phone: Owner\'s phone number (including extension).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'Phone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_address: Verified owner\'s address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        paymentIntentLastPaymentError'Source'Owner'VerifiedAddress :: (GHC.Maybe.Maybe PaymentIntentLastPaymentError'Source'Owner'VerifiedAddress'),
        -- | verified_email: Verified owner\'s email address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'VerifiedEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_name: Verified owner\'s full name. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'VerifiedName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_phone: Verified owner\'s phone number (including extension). Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'VerifiedPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentLastPaymentError'Source'Owner' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (paymentIntentLastPaymentError'Source'Owner'Address obj) : (Data.Aeson..=) "email" (paymentIntentLastPaymentError'Source'Owner'Email obj) : (Data.Aeson..=) "name" (paymentIntentLastPaymentError'Source'Owner'Name obj) : (Data.Aeson..=) "phone" (paymentIntentLastPaymentError'Source'Owner'Phone obj) : (Data.Aeson..=) "verified_address" (paymentIntentLastPaymentError'Source'Owner'VerifiedAddress obj) : (Data.Aeson..=) "verified_email" (paymentIntentLastPaymentError'Source'Owner'VerifiedEmail obj) : (Data.Aeson..=) "verified_name" (paymentIntentLastPaymentError'Source'Owner'VerifiedName obj) : (Data.Aeson..=) "verified_phone" (paymentIntentLastPaymentError'Source'Owner'VerifiedPhone obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (paymentIntentLastPaymentError'Source'Owner'Address obj) GHC.Base.<> ((Data.Aeson..=) "email" (paymentIntentLastPaymentError'Source'Owner'Email obj) GHC.Base.<> ((Data.Aeson..=) "name" (paymentIntentLastPaymentError'Source'Owner'Name obj) GHC.Base.<> ((Data.Aeson..=) "phone" (paymentIntentLastPaymentError'Source'Owner'Phone obj) GHC.Base.<> ((Data.Aeson..=) "verified_address" (paymentIntentLastPaymentError'Source'Owner'VerifiedAddress obj) GHC.Base.<> ((Data.Aeson..=) "verified_email" (paymentIntentLastPaymentError'Source'Owner'VerifiedEmail obj) GHC.Base.<> ((Data.Aeson..=) "verified_name" (paymentIntentLastPaymentError'Source'Owner'VerifiedName obj) GHC.Base.<> (Data.Aeson..=) "verified_phone" (paymentIntentLastPaymentError'Source'Owner'VerifiedPhone obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentLastPaymentError'Source'Owner' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentLastPaymentError'Source'Owner'" (\obj -> (((((((GHC.Base.pure PaymentIntentLastPaymentError'Source'Owner' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_phone"))

-- | Defines the data type for the schema payment_intentLast_payment_error\'Source\'Owner\'Address\'
--
-- Owner\\\'s address.
data PaymentIntentLastPaymentError'Source'Owner'Address'
  = PaymentIntentLastPaymentError'Source'Owner'Address'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'Address'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'Address'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'Address'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'Address'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'Address'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'Address'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentLastPaymentError'Source'Owner'Address' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (paymentIntentLastPaymentError'Source'Owner'Address'City obj) : (Data.Aeson..=) "country" (paymentIntentLastPaymentError'Source'Owner'Address'Country obj) : (Data.Aeson..=) "line1" (paymentIntentLastPaymentError'Source'Owner'Address'Line1 obj) : (Data.Aeson..=) "line2" (paymentIntentLastPaymentError'Source'Owner'Address'Line2 obj) : (Data.Aeson..=) "postal_code" (paymentIntentLastPaymentError'Source'Owner'Address'PostalCode obj) : (Data.Aeson..=) "state" (paymentIntentLastPaymentError'Source'Owner'Address'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (paymentIntentLastPaymentError'Source'Owner'Address'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentIntentLastPaymentError'Source'Owner'Address'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (paymentIntentLastPaymentError'Source'Owner'Address'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (paymentIntentLastPaymentError'Source'Owner'Address'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (paymentIntentLastPaymentError'Source'Owner'Address'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (paymentIntentLastPaymentError'Source'Owner'Address'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentLastPaymentError'Source'Owner'Address' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentLastPaymentError'Source'Owner'Address'" (\obj -> (((((GHC.Base.pure PaymentIntentLastPaymentError'Source'Owner'Address' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema payment_intentLast_payment_error\'Source\'Owner\'Verified_address\'
--
-- Verified owner\\\'s address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
data PaymentIntentLastPaymentError'Source'Owner'VerifiedAddress'
  = PaymentIntentLastPaymentError'Source'Owner'VerifiedAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentLastPaymentError'Source'Owner'VerifiedAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'City obj) : (Data.Aeson..=) "country" (paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'Country obj) : (Data.Aeson..=) "line1" (paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'Line1 obj) : (Data.Aeson..=) "line2" (paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'PostalCode obj) : (Data.Aeson..=) "state" (paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (paymentIntentLastPaymentError'Source'Owner'VerifiedAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentLastPaymentError'Source'Owner'VerifiedAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentLastPaymentError'Source'Owner'VerifiedAddress'" (\obj -> (((((GHC.Base.pure PaymentIntentLastPaymentError'Source'Owner'VerifiedAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Define the one-of schema payment_intentLast_payment_error\'Source\'Recipient\'
--
-- The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
data PaymentIntentLastPaymentError'Source'Recipient'Variants
  = PaymentIntentLastPaymentError'Source'Recipient'Recipient Recipient
  | PaymentIntentLastPaymentError'Source'Recipient'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentIntentLastPaymentError'Source'Recipient'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentIntentLastPaymentError'Source'Recipient'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema payment_intentLast_payment_error\'Source\'Type\'
--
-- The \`type\` of the source. The \`type\` is a payment method, one of \`ach_credit_transfer\`, \`ach_debit\`, \`alipay\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`multibanco\`, \`klarna\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`three_d_secure\`, or \`wechat\`. An additional hash is included on the source with a name matching this value. It contains additional information specific to the [payment method](https:\/\/stripe.com\/docs\/sources) used.
data PaymentIntentLastPaymentError'Source'Type'
  = PaymentIntentLastPaymentError'Source'Type'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentIntentLastPaymentError'Source'Type'EnumTyped Data.Text.Internal.Text
  | PaymentIntentLastPaymentError'Source'Type'EnumStringAchCreditTransfer
  | PaymentIntentLastPaymentError'Source'Type'EnumStringAchDebit
  | PaymentIntentLastPaymentError'Source'Type'EnumStringAlipay
  | PaymentIntentLastPaymentError'Source'Type'EnumStringBancontact
  | PaymentIntentLastPaymentError'Source'Type'EnumStringCard
  | PaymentIntentLastPaymentError'Source'Type'EnumStringCardPresent
  | PaymentIntentLastPaymentError'Source'Type'EnumStringEps
  | PaymentIntentLastPaymentError'Source'Type'EnumStringGiropay
  | PaymentIntentLastPaymentError'Source'Type'EnumStringIdeal
  | PaymentIntentLastPaymentError'Source'Type'EnumStringKlarna
  | PaymentIntentLastPaymentError'Source'Type'EnumStringMultibanco
  | PaymentIntentLastPaymentError'Source'Type'EnumStringP24
  | PaymentIntentLastPaymentError'Source'Type'EnumStringSepaDebit
  | PaymentIntentLastPaymentError'Source'Type'EnumStringSofort
  | PaymentIntentLastPaymentError'Source'Type'EnumStringThreeDSecure
  | PaymentIntentLastPaymentError'Source'Type'EnumStringWechat
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentIntentLastPaymentError'Source'Type' where
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringAchCreditTransfer) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_credit_transfer"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringAchDebit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_debit"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringAlipay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringBancontact) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bancontact"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringCard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringCardPresent) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_present"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringEps) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eps"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringGiropay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "giropay"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringIdeal) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ideal"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringKlarna) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "klarna"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringMultibanco) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "multibanco"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringP24) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "p24"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringSepaDebit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sepa_debit"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringSofort) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sofort"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringThreeDSecure) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "three_d_secure"
  toJSON (PaymentIntentLastPaymentError'Source'Type'EnumStringWechat) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wechat"

instance Data.Aeson.FromJSON PaymentIntentLastPaymentError'Source'Type' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_credit_transfer")
          then PaymentIntentLastPaymentError'Source'Type'EnumStringAchCreditTransfer
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_debit")
              then PaymentIntentLastPaymentError'Source'Type'EnumStringAchDebit
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay")
                  then PaymentIntentLastPaymentError'Source'Type'EnumStringAlipay
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bancontact")
                      then PaymentIntentLastPaymentError'Source'Type'EnumStringBancontact
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card")
                          then PaymentIntentLastPaymentError'Source'Type'EnumStringCard
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_present")
                              then PaymentIntentLastPaymentError'Source'Type'EnumStringCardPresent
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eps")
                                  then PaymentIntentLastPaymentError'Source'Type'EnumStringEps
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "giropay")
                                      then PaymentIntentLastPaymentError'Source'Type'EnumStringGiropay
                                      else
                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ideal")
                                          then PaymentIntentLastPaymentError'Source'Type'EnumStringIdeal
                                          else
                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "klarna")
                                              then PaymentIntentLastPaymentError'Source'Type'EnumStringKlarna
                                              else
                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "multibanco")
                                                  then PaymentIntentLastPaymentError'Source'Type'EnumStringMultibanco
                                                  else
                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "p24")
                                                      then PaymentIntentLastPaymentError'Source'Type'EnumStringP24
                                                      else
                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sepa_debit")
                                                          then PaymentIntentLastPaymentError'Source'Type'EnumStringSepaDebit
                                                          else
                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sofort")
                                                              then PaymentIntentLastPaymentError'Source'Type'EnumStringSofort
                                                              else
                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "three_d_secure")
                                                                  then PaymentIntentLastPaymentError'Source'Type'EnumStringThreeDSecure
                                                                  else
                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wechat")
                                                                      then PaymentIntentLastPaymentError'Source'Type'EnumStringWechat
                                                                      else PaymentIntentLastPaymentError'Source'Type'EnumOther val
      )

-- | Defines the enum schema payment_intentLast_payment_error\'Type\'
--
-- The type of error returned. One of \`api_connection_error\`, \`api_error\`, \`authentication_error\`, \`card_error\`, \`idempotency_error\`, \`invalid_request_error\`, or \`rate_limit_error\`
data PaymentIntentLastPaymentError'Type'
  = PaymentIntentLastPaymentError'Type'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentIntentLastPaymentError'Type'EnumTyped Data.Text.Internal.Text
  | PaymentIntentLastPaymentError'Type'EnumStringApiConnectionError
  | PaymentIntentLastPaymentError'Type'EnumStringApiError
  | PaymentIntentLastPaymentError'Type'EnumStringAuthenticationError
  | PaymentIntentLastPaymentError'Type'EnumStringCardError
  | PaymentIntentLastPaymentError'Type'EnumStringIdempotencyError
  | PaymentIntentLastPaymentError'Type'EnumStringInvalidRequestError
  | PaymentIntentLastPaymentError'Type'EnumStringRateLimitError
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentIntentLastPaymentError'Type' where
  toJSON (PaymentIntentLastPaymentError'Type'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentLastPaymentError'Type'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentLastPaymentError'Type'EnumStringApiConnectionError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "api_connection_error"
  toJSON (PaymentIntentLastPaymentError'Type'EnumStringApiError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "api_error"
  toJSON (PaymentIntentLastPaymentError'Type'EnumStringAuthenticationError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "authentication_error"
  toJSON (PaymentIntentLastPaymentError'Type'EnumStringCardError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_error"
  toJSON (PaymentIntentLastPaymentError'Type'EnumStringIdempotencyError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "idempotency_error"
  toJSON (PaymentIntentLastPaymentError'Type'EnumStringInvalidRequestError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invalid_request_error"
  toJSON (PaymentIntentLastPaymentError'Type'EnumStringRateLimitError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "rate_limit_error"

instance Data.Aeson.FromJSON PaymentIntentLastPaymentError'Type' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "api_connection_error")
          then PaymentIntentLastPaymentError'Type'EnumStringApiConnectionError
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "api_error")
              then PaymentIntentLastPaymentError'Type'EnumStringApiError
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "authentication_error")
                  then PaymentIntentLastPaymentError'Type'EnumStringAuthenticationError
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_error")
                      then PaymentIntentLastPaymentError'Type'EnumStringCardError
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "idempotency_error")
                          then PaymentIntentLastPaymentError'Type'EnumStringIdempotencyError
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invalid_request_error")
                              then PaymentIntentLastPaymentError'Type'EnumStringInvalidRequestError
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "rate_limit_error")
                                  then PaymentIntentLastPaymentError'Type'EnumStringRateLimitError
                                  else PaymentIntentLastPaymentError'Type'EnumOther val
      )

-- | Defines the data type for the schema payment_intentMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. For more information, see the [documentation](https:\/\/stripe.com\/docs\/payments\/payment-intents\/creating-payment-intents\#storing-information-in-metadata).
data PaymentIntentMetadata'
  = PaymentIntentMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentMetadata'" (\obj -> GHC.Base.pure PaymentIntentMetadata')

-- | Defines the data type for the schema payment_intentNext_action\'
--
-- If present, this property tells you what actions you need to take in order for your customer to fulfill a payment using the provided source.
data PaymentIntentNextAction'
  = PaymentIntentNextAction'
      { -- | redirect_to_url:
        paymentIntentNextAction'RedirectToUrl :: (GHC.Maybe.Maybe PaymentIntentNextActionRedirectToUrl),
        -- | type: Type of the next action to perform, one of \`redirect_to_url\` or \`use_stripe_sdk\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentNextAction'Type :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | use_stripe_sdk: When confirming a PaymentIntent with Stripe.js, Stripe.js depends on the contents of this dictionary to invoke authentication flows. The shape of the contents is subject to change and is only intended to be used by Stripe.js.
        paymentIntentNextAction'UseStripeSdk :: (GHC.Maybe.Maybe PaymentIntentNextAction'UseStripeSdk')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentNextAction' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "redirect_to_url" (paymentIntentNextAction'RedirectToUrl obj) : (Data.Aeson..=) "type" (paymentIntentNextAction'Type obj) : (Data.Aeson..=) "use_stripe_sdk" (paymentIntentNextAction'UseStripeSdk obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "redirect_to_url" (paymentIntentNextAction'RedirectToUrl obj) GHC.Base.<> ((Data.Aeson..=) "type" (paymentIntentNextAction'Type obj) GHC.Base.<> (Data.Aeson..=) "use_stripe_sdk" (paymentIntentNextAction'UseStripeSdk obj)))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentNextAction' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentNextAction'" (\obj -> ((GHC.Base.pure PaymentIntentNextAction' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "redirect_to_url")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "use_stripe_sdk"))

-- | Defines the data type for the schema payment_intentNext_action\'Use_stripe_sdk\'
--
-- When confirming a PaymentIntent with Stripe.js, Stripe.js depends on the contents of this dictionary to invoke authentication flows. The shape of the contents is subject to change and is only intended to be used by Stripe.js.
data PaymentIntentNextAction'UseStripeSdk'
  = PaymentIntentNextAction'UseStripeSdk'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentNextAction'UseStripeSdk' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentNextAction'UseStripeSdk' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentNextAction'UseStripeSdk'" (\obj -> GHC.Base.pure PaymentIntentNextAction'UseStripeSdk')

-- | Defines the enum schema payment_intentObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data PaymentIntentObject'
  = PaymentIntentObject'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentIntentObject'EnumTyped Data.Text.Internal.Text
  | PaymentIntentObject'EnumStringPaymentIntent
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentIntentObject' where
  toJSON (PaymentIntentObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentObject'EnumStringPaymentIntent) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payment_intent"

instance Data.Aeson.FromJSON PaymentIntentObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payment_intent")
          then PaymentIntentObject'EnumStringPaymentIntent
          else PaymentIntentObject'EnumOther val
      )

-- | Define the one-of schema payment_intentOn_behalf_of\'
--
-- The account (if any) for which the funds of the PaymentIntent are intended. See the PaymentIntents [use case for connected accounts](https:\/\/stripe.com\/docs\/payments\/connected-accounts) for details.
data PaymentIntentOnBehalfOf'Variants
  = PaymentIntentOnBehalfOf'Account Account
  | PaymentIntentOnBehalfOf'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentIntentOnBehalfOf'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentIntentOnBehalfOf'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema payment_intentPayment_method\'
--
-- ID of the payment method used in this PaymentIntent.
data PaymentIntentPaymentMethod'Variants
  = PaymentIntentPaymentMethod'PaymentMethod PaymentMethod
  | PaymentIntentPaymentMethod'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentIntentPaymentMethod'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentIntentPaymentMethod'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema payment_intentPayment_method_options\'
--
-- Payment-method-specific configuration for this PaymentIntent.
data PaymentIntentPaymentMethodOptions'
  = PaymentIntentPaymentMethodOptions'
      { -- | card:
        paymentIntentPaymentMethodOptions'Card :: (GHC.Maybe.Maybe PaymentIntentPaymentMethodOptionsCard)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentPaymentMethodOptions' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "card" (paymentIntentPaymentMethodOptions'Card obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "card" (paymentIntentPaymentMethodOptions'Card obj))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentPaymentMethodOptions' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentPaymentMethodOptions'" (\obj -> GHC.Base.pure PaymentIntentPaymentMethodOptions' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card"))

-- | Define the one-of schema payment_intentReview\'
--
-- ID of the review associated with this PaymentIntent, if any.
data PaymentIntentReview'Variants
  = PaymentIntentReview'Review Review
  | PaymentIntentReview'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentIntentReview'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentIntentReview'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema payment_intentSetup_future_usage\'
--
-- Indicates that you intend to make future payments with this PaymentIntent\'s payment method.
--
-- If present, the payment method used with this PaymentIntent can be [attached](https:\/\/stripe.com\/docs\/api\/payment_methods\/attach) to a Customer, even after the transaction completes.
--
-- For more, learn to [save card details during payment](https:\/\/stripe.com\/docs\/payments\/save-during-payment).
--
-- Stripe uses \`setup_future_usage\` to dynamically optimize your payment flow and comply with regional legislation and network rules. For example, if your customer is impacted by [SCA](https:\/\/stripe.com\/docs\/strong-customer-authentication), using \`off_session\` will ensure that they are authenticated while processing this PaymentIntent. You will then be able to collect [off-session payments](https:\/\/stripe.com\/docs\/payments\/cards\/charging-saved-cards\#off-session-payments-with-saved-cards) for this customer.
data PaymentIntentSetupFutureUsage'
  = PaymentIntentSetupFutureUsage'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentIntentSetupFutureUsage'EnumTyped Data.Text.Internal.Text
  | PaymentIntentSetupFutureUsage'EnumStringOffSession
  | PaymentIntentSetupFutureUsage'EnumStringOnSession
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentIntentSetupFutureUsage' where
  toJSON (PaymentIntentSetupFutureUsage'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentSetupFutureUsage'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentSetupFutureUsage'EnumStringOffSession) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "off_session"
  toJSON (PaymentIntentSetupFutureUsage'EnumStringOnSession) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "on_session"

instance Data.Aeson.FromJSON PaymentIntentSetupFutureUsage' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "off_session")
          then PaymentIntentSetupFutureUsage'EnumStringOffSession
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "on_session")
              then PaymentIntentSetupFutureUsage'EnumStringOnSession
              else PaymentIntentSetupFutureUsage'EnumOther val
      )

-- | Defines the data type for the schema payment_intentShipping\'
--
-- Shipping information for this PaymentIntent.
data PaymentIntentShipping'
  = PaymentIntentShipping'
      { -- | address:
        paymentIntentShipping'Address :: (GHC.Maybe.Maybe Address),
        -- | carrier: The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentShipping'Carrier :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Recipient name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentShipping'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | phone: Recipient phone (including extension).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentShipping'Phone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | tracking_number: The tracking number for a physical product, obtained from the delivery service. If multiple tracking numbers were generated for this purchase, please separate them with commas.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentIntentShipping'TrackingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentShipping' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (paymentIntentShipping'Address obj) : (Data.Aeson..=) "carrier" (paymentIntentShipping'Carrier obj) : (Data.Aeson..=) "name" (paymentIntentShipping'Name obj) : (Data.Aeson..=) "phone" (paymentIntentShipping'Phone obj) : (Data.Aeson..=) "tracking_number" (paymentIntentShipping'TrackingNumber obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (paymentIntentShipping'Address obj) GHC.Base.<> ((Data.Aeson..=) "carrier" (paymentIntentShipping'Carrier obj) GHC.Base.<> ((Data.Aeson..=) "name" (paymentIntentShipping'Name obj) GHC.Base.<> ((Data.Aeson..=) "phone" (paymentIntentShipping'Phone obj) GHC.Base.<> (Data.Aeson..=) "tracking_number" (paymentIntentShipping'TrackingNumber obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentShipping' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentShipping'" (\obj -> ((((GHC.Base.pure PaymentIntentShipping' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "carrier")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tracking_number"))

-- | Defines the enum schema payment_intentStatus\'
--
-- Status of this PaymentIntent, one of \`requires_payment_method\`, \`requires_confirmation\`, \`requires_action\`, \`processing\`, \`requires_capture\`, \`canceled\`, or \`succeeded\`. Read more about each PaymentIntent [status](https:\/\/stripe.com\/docs\/payments\/intents\#intent-statuses).
data PaymentIntentStatus'
  = PaymentIntentStatus'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentIntentStatus'EnumTyped Data.Text.Internal.Text
  | PaymentIntentStatus'EnumStringCanceled
  | PaymentIntentStatus'EnumStringProcessing
  | PaymentIntentStatus'EnumStringRequiresAction
  | PaymentIntentStatus'EnumStringRequiresCapture
  | PaymentIntentStatus'EnumStringRequiresConfirmation
  | PaymentIntentStatus'EnumStringRequiresPaymentMethod
  | PaymentIntentStatus'EnumStringSucceeded
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentIntentStatus' where
  toJSON (PaymentIntentStatus'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentStatus'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentStatus'EnumStringCanceled) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "canceled"
  toJSON (PaymentIntentStatus'EnumStringProcessing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "processing"
  toJSON (PaymentIntentStatus'EnumStringRequiresAction) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requires_action"
  toJSON (PaymentIntentStatus'EnumStringRequiresCapture) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requires_capture"
  toJSON (PaymentIntentStatus'EnumStringRequiresConfirmation) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requires_confirmation"
  toJSON (PaymentIntentStatus'EnumStringRequiresPaymentMethod) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requires_payment_method"
  toJSON (PaymentIntentStatus'EnumStringSucceeded) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "succeeded"

instance Data.Aeson.FromJSON PaymentIntentStatus' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "canceled")
          then PaymentIntentStatus'EnumStringCanceled
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "processing")
              then PaymentIntentStatus'EnumStringProcessing
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requires_action")
                  then PaymentIntentStatus'EnumStringRequiresAction
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requires_capture")
                      then PaymentIntentStatus'EnumStringRequiresCapture
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requires_confirmation")
                          then PaymentIntentStatus'EnumStringRequiresConfirmation
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requires_payment_method")
                              then PaymentIntentStatus'EnumStringRequiresPaymentMethod
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "succeeded")
                                  then PaymentIntentStatus'EnumStringSucceeded
                                  else PaymentIntentStatus'EnumOther val
      )

-- | Defines the data type for the schema payment_intentTransfer_data\'
--
-- The data with which to automatically create a Transfer when the payment is finalized. See the PaymentIntents [use case for connected accounts](https:\\\/\\\/stripe.com\\\/docs\\\/payments\\\/connected-accounts) for details.
data PaymentIntentTransferData'
  = PaymentIntentTransferData'
      { -- | amount: Amount intended to be collected by this PaymentIntent. A positive integer representing how much to charge in the [smallest currency unit](https:\/\/stripe.com\/docs\/currencies\#zero-decimal) (e.g., 100 cents to charge \$1.00 or 100 to charge ¥100, a zero-decimal currency). The minimum amount is \$0.50 US or [equivalent in charge currency](https:\/\/stripe.com\/docs\/currencies\#minimum-and-maximum-charge-amounts). The amount value supports up to eight digits (e.g., a value of 99999999 for a USD charge of \$999,999.99).
        paymentIntentTransferData'Amount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | destination: The account (if any) the payment will be attributed to for tax
        -- reporting, and where funds from the payment will be transferred to upon
        -- payment success.
        paymentIntentTransferData'Destination :: (GHC.Maybe.Maybe PaymentIntentTransferData'Destination'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentTransferData' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (paymentIntentTransferData'Amount obj) : (Data.Aeson..=) "destination" (paymentIntentTransferData'Destination obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (paymentIntentTransferData'Amount obj) GHC.Base.<> (Data.Aeson..=) "destination" (paymentIntentTransferData'Destination obj))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentTransferData' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentTransferData'" (\obj -> (GHC.Base.pure PaymentIntentTransferData' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "destination"))

-- | Define the one-of schema payment_intentTransfer_data\'Destination\'
--
-- The account (if any) the payment will be attributed to for tax
-- reporting, and where funds from the payment will be transferred to upon
-- payment success.
data PaymentIntentTransferData'Destination'Variants
  = PaymentIntentTransferData'Destination'Account Account
  | PaymentIntentTransferData'Destination'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentIntentTransferData'Destination'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentIntentTransferData'Destination'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema payment_intent_payment_method_options
data PaymentIntentPaymentMethodOptions
  = PaymentIntentPaymentMethodOptions
      { -- | card:
        paymentIntentPaymentMethodOptionsCard :: (GHC.Maybe.Maybe PaymentIntentPaymentMethodOptionsCard)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentPaymentMethodOptions where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "card" (paymentIntentPaymentMethodOptionsCard obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "card" (paymentIntentPaymentMethodOptionsCard obj))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentPaymentMethodOptions where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentPaymentMethodOptions" (\obj -> GHC.Base.pure PaymentIntentPaymentMethodOptions GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card"))

-- | Defines the data type for the schema payment_intent_payment_method_options_card
data PaymentIntentPaymentMethodOptionsCard
  = PaymentIntentPaymentMethodOptionsCard
      { -- | installments: Installment details for this payment (Mexico only).
        --
        -- For more information, see the [installments integration guide](https:\/\/stripe.com\/docs\/payments\/installments).
        paymentIntentPaymentMethodOptionsCardInstallments :: (GHC.Maybe.Maybe PaymentIntentPaymentMethodOptionsCardInstallments'),
        -- | request_three_d_secure: We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https:\/\/stripe.com\/docs\/strong-customer-authentication). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. Permitted values include: \`automatic\` or \`any\`. If not provided, defaults to \`automatic\`. Read our guide on [manually requesting 3D Secure](https:\/\/stripe.com\/docs\/payments\/3d-secure\#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine.
        paymentIntentPaymentMethodOptionsCardRequestThreeDSecure :: (GHC.Maybe.Maybe PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentPaymentMethodOptionsCard where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "installments" (paymentIntentPaymentMethodOptionsCardInstallments obj) : (Data.Aeson..=) "request_three_d_secure" (paymentIntentPaymentMethodOptionsCardRequestThreeDSecure obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "installments" (paymentIntentPaymentMethodOptionsCardInstallments obj) GHC.Base.<> (Data.Aeson..=) "request_three_d_secure" (paymentIntentPaymentMethodOptionsCardRequestThreeDSecure obj))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentPaymentMethodOptionsCard where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentPaymentMethodOptionsCard" (\obj -> (GHC.Base.pure PaymentIntentPaymentMethodOptionsCard GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "installments")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "request_three_d_secure"))

-- | Defines the data type for the schema payment_intent_payment_method_options_cardInstallments\'
--
-- Installment details for this payment (Mexico only).
--
-- For more information, see the [installments integration guide](https:\\\/\\\/stripe.com\\\/docs\\\/payments\\\/installments).
data PaymentIntentPaymentMethodOptionsCardInstallments'
  = PaymentIntentPaymentMethodOptionsCardInstallments'
      { -- | available_plans: Installment plans that may be selected for this PaymentIntent.
        paymentIntentPaymentMethodOptionsCardInstallments'AvailablePlans :: (GHC.Maybe.Maybe ([] PaymentMethodDetailsCardInstallmentsPlan)),
        -- | enabled: Whether Installments are enabled for this PaymentIntent.
        paymentIntentPaymentMethodOptionsCardInstallments'Enabled :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | plan: Installment plan selected for this PaymentIntent.
        paymentIntentPaymentMethodOptionsCardInstallments'Plan :: (GHC.Maybe.Maybe PaymentIntentPaymentMethodOptionsCardInstallments'Plan')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentPaymentMethodOptionsCardInstallments' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "available_plans" (paymentIntentPaymentMethodOptionsCardInstallments'AvailablePlans obj) : (Data.Aeson..=) "enabled" (paymentIntentPaymentMethodOptionsCardInstallments'Enabled obj) : (Data.Aeson..=) "plan" (paymentIntentPaymentMethodOptionsCardInstallments'Plan obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "available_plans" (paymentIntentPaymentMethodOptionsCardInstallments'AvailablePlans obj) GHC.Base.<> ((Data.Aeson..=) "enabled" (paymentIntentPaymentMethodOptionsCardInstallments'Enabled obj) GHC.Base.<> (Data.Aeson..=) "plan" (paymentIntentPaymentMethodOptionsCardInstallments'Plan obj)))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentPaymentMethodOptionsCardInstallments' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentPaymentMethodOptionsCardInstallments'" (\obj -> ((GHC.Base.pure PaymentIntentPaymentMethodOptionsCardInstallments' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "available_plans")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "enabled")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "plan"))

-- | Defines the data type for the schema payment_intent_payment_method_options_cardInstallments\'Plan\'
--
-- Installment plan selected for this PaymentIntent.
data PaymentIntentPaymentMethodOptionsCardInstallments'Plan'
  = PaymentIntentPaymentMethodOptionsCardInstallments'Plan'
      { -- | count: For \`fixed_count\` installment plans, this is the number of installment payments your customer will make to their credit card.
        paymentIntentPaymentMethodOptionsCardInstallments'Plan'Count :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | interval: For \`fixed_count\` installment plans, this is the interval between installment payments your customer will make to their credit card.
        -- One of \`month\`.
        paymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval :: (GHC.Maybe.Maybe PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval'),
        -- | type: Type of installment plan, one of \`fixed_count\`.
        paymentIntentPaymentMethodOptionsCardInstallments'Plan'Type :: (GHC.Maybe.Maybe PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Type')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentIntentPaymentMethodOptionsCardInstallments'Plan' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "count" (paymentIntentPaymentMethodOptionsCardInstallments'Plan'Count obj) : (Data.Aeson..=) "interval" (paymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval obj) : (Data.Aeson..=) "type" (paymentIntentPaymentMethodOptionsCardInstallments'Plan'Type obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "count" (paymentIntentPaymentMethodOptionsCardInstallments'Plan'Count obj) GHC.Base.<> ((Data.Aeson..=) "interval" (paymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval obj) GHC.Base.<> (Data.Aeson..=) "type" (paymentIntentPaymentMethodOptionsCardInstallments'Plan'Type obj)))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentIntentPaymentMethodOptionsCardInstallments'Plan' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentIntentPaymentMethodOptionsCardInstallments'Plan'" (\obj -> ((GHC.Base.pure PaymentIntentPaymentMethodOptionsCardInstallments'Plan' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "count")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "interval")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type"))

-- | Defines the enum schema payment_intent_payment_method_options_cardInstallments\'Plan\'Interval\'
--
-- For \`fixed_count\` installment plans, this is the interval between installment payments your customer will make to their credit card.
-- One of \`month\`.
data PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval'
  = PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval'EnumTyped Data.Text.Internal.Text
  | PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval'EnumStringMonth
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval' where
  toJSON (PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval'EnumStringMonth) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month"

instance Data.Aeson.FromJSON PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month")
          then PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval'EnumStringMonth
          else PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Interval'EnumOther val
      )

-- | Defines the enum schema payment_intent_payment_method_options_cardInstallments\'Plan\'Type\'
--
-- Type of installment plan, one of \`fixed_count\`.
data PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Type'
  = PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Type'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Type'EnumTyped Data.Text.Internal.Text
  | PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Type'EnumStringFixedCount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Type' where
  toJSON (PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Type'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Type'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Type'EnumStringFixedCount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fixed_count"

instance Data.Aeson.FromJSON PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Type' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fixed_count")
          then PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Type'EnumStringFixedCount
          else PaymentIntentPaymentMethodOptionsCardInstallments'Plan'Type'EnumOther val
      )

-- | Defines the enum schema payment_intent_payment_method_options_cardRequest_three_d_secure\'
--
-- We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https:\/\/stripe.com\/docs\/strong-customer-authentication). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. Permitted values include: \`automatic\` or \`any\`. If not provided, defaults to \`automatic\`. Read our guide on [manually requesting 3D Secure](https:\/\/stripe.com\/docs\/payments\/3d-secure\#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine.
data PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'
  = PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'EnumTyped Data.Text.Internal.Text
  | PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'EnumStringAny
  | PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'EnumStringAutomatic
  | PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'EnumStringChallengeOnly
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure' where
  toJSON (PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'EnumStringAny) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "any"
  toJSON (PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'EnumStringAutomatic) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automatic"
  toJSON (PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'EnumStringChallengeOnly) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "challenge_only"

instance Data.Aeson.FromJSON PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "any")
          then PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'EnumStringAny
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "automatic")
              then PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'EnumStringAutomatic
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "challenge_only")
                  then PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'EnumStringChallengeOnly
                  else PaymentIntentPaymentMethodOptionsCardRequestThreeDSecure'EnumOther val
      )

-- | Defines the data type for the schema payment_method
--
-- PaymentMethod objects represent your customer\'s payment instruments.
-- They can be used with [PaymentIntents](https:\/\/stripe.com\/docs\/payments\/payment-intents) to collect payments or saved to
-- Customer objects to store instrument details for future payments.
--
-- Related guides: [Payment Methods](https:\/\/stripe.com\/docs\/payments\/payment-methods) and [More Payment Scenarios](https:\/\/stripe.com\/docs\/payments\/more-payment-scenarios).
data PaymentMethod
  = PaymentMethod
      { -- | billing_details:
        paymentMethodBillingDetails :: BillingDetails,
        -- | card:
        paymentMethodCard :: (GHC.Maybe.Maybe PaymentMethodCard),
        -- | card_present:
        paymentMethodCardPresent :: (GHC.Maybe.Maybe PaymentMethodCardPresent),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        paymentMethodCreated :: GHC.Integer.Type.Integer,
        -- | customer: The ID of the Customer to which this PaymentMethod is saved. This will not be set when the PaymentMethod has not been saved to a Customer.
        paymentMethodCustomer :: (GHC.Maybe.Maybe PaymentMethodCustomer'Variants),
        -- | fpx:
        paymentMethodFpx :: (GHC.Maybe.Maybe PaymentMethodFpx),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodId :: Data.Text.Internal.Text,
        -- | ideal:
        paymentMethodIdeal :: (GHC.Maybe.Maybe PaymentMethodIdeal),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        paymentMethodLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        paymentMethodMetadata :: PaymentMethodMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        paymentMethodObject :: PaymentMethodObject',
        -- | sepa_debit:
        paymentMethodSepaDebit :: (GHC.Maybe.Maybe PaymentMethodSepaDebit),
        -- | type: The type of the PaymentMethod. An additional hash is included on the PaymentMethod with a name matching this value. It contains additional information specific to the PaymentMethod type.
        paymentMethodType :: PaymentMethodType'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethod where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "billing_details" (paymentMethodBillingDetails obj) : (Data.Aeson..=) "card" (paymentMethodCard obj) : (Data.Aeson..=) "card_present" (paymentMethodCardPresent obj) : (Data.Aeson..=) "created" (paymentMethodCreated obj) : (Data.Aeson..=) "customer" (paymentMethodCustomer obj) : (Data.Aeson..=) "fpx" (paymentMethodFpx obj) : (Data.Aeson..=) "id" (paymentMethodId obj) : (Data.Aeson..=) "ideal" (paymentMethodIdeal obj) : (Data.Aeson..=) "livemode" (paymentMethodLivemode obj) : (Data.Aeson..=) "metadata" (paymentMethodMetadata obj) : (Data.Aeson..=) "object" (paymentMethodObject obj) : (Data.Aeson..=) "sepa_debit" (paymentMethodSepaDebit obj) : (Data.Aeson..=) "type" (paymentMethodType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "billing_details" (paymentMethodBillingDetails obj) GHC.Base.<> ((Data.Aeson..=) "card" (paymentMethodCard obj) GHC.Base.<> ((Data.Aeson..=) "card_present" (paymentMethodCardPresent obj) GHC.Base.<> ((Data.Aeson..=) "created" (paymentMethodCreated obj) GHC.Base.<> ((Data.Aeson..=) "customer" (paymentMethodCustomer obj) GHC.Base.<> ((Data.Aeson..=) "fpx" (paymentMethodFpx obj) GHC.Base.<> ((Data.Aeson..=) "id" (paymentMethodId obj) GHC.Base.<> ((Data.Aeson..=) "ideal" (paymentMethodIdeal obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (paymentMethodLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (paymentMethodMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (paymentMethodObject obj) GHC.Base.<> ((Data.Aeson..=) "sepa_debit" (paymentMethodSepaDebit obj) GHC.Base.<> (Data.Aeson..=) "type" (paymentMethodType obj)))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethod where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethod" (\obj -> ((((((((((((GHC.Base.pure PaymentMethod GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "billing_details")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card_present")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fpx")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ideal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sepa_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type"))

-- | Define the one-of schema payment_methodCustomer\'
--
-- The ID of the Customer to which this PaymentMethod is saved. This will not be set when the PaymentMethod has not been saved to a Customer.
data PaymentMethodCustomer'Variants
  = PaymentMethodCustomer'Customer Customer
  | PaymentMethodCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentMethodCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentMethodCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema payment_methodMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data PaymentMethodMetadata'
  = PaymentMethodMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodMetadata'" (\obj -> GHC.Base.pure PaymentMethodMetadata')

-- | Defines the enum schema payment_methodObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data PaymentMethodObject'
  = PaymentMethodObject'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentMethodObject'EnumTyped Data.Text.Internal.Text
  | PaymentMethodObject'EnumStringPaymentMethod
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentMethodObject' where
  toJSON (PaymentMethodObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodObject'EnumStringPaymentMethod) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payment_method"

instance Data.Aeson.FromJSON PaymentMethodObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payment_method")
          then PaymentMethodObject'EnumStringPaymentMethod
          else PaymentMethodObject'EnumOther val
      )

-- | Defines the enum schema payment_methodType\'
--
-- The type of the PaymentMethod. An additional hash is included on the PaymentMethod with a name matching this value. It contains additional information specific to the PaymentMethod type.
data PaymentMethodType'
  = PaymentMethodType'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentMethodType'EnumTyped Data.Text.Internal.Text
  | PaymentMethodType'EnumStringCard
  | PaymentMethodType'EnumStringFpx
  | PaymentMethodType'EnumStringIdeal
  | PaymentMethodType'EnumStringSepaDebit
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentMethodType' where
  toJSON (PaymentMethodType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodType'EnumStringCard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card"
  toJSON (PaymentMethodType'EnumStringFpx) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fpx"
  toJSON (PaymentMethodType'EnumStringIdeal) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ideal"
  toJSON (PaymentMethodType'EnumStringSepaDebit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sepa_debit"

instance Data.Aeson.FromJSON PaymentMethodType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card")
          then PaymentMethodType'EnumStringCard
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fpx")
              then PaymentMethodType'EnumStringFpx
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ideal")
                  then PaymentMethodType'EnumStringIdeal
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sepa_debit")
                      then PaymentMethodType'EnumStringSepaDebit
                      else PaymentMethodType'EnumOther val
      )

-- | Defines the data type for the schema payment_method_card
data PaymentMethodCard
  = PaymentMethodCard
      { -- | brand: Card brand. Can be \`amex\`, \`diners\`, \`discover\`, \`jcb\`, \`mastercard\`, \`unionpay\`, \`visa\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardBrand :: Data.Text.Internal.Text,
        -- | checks: Checks on Card address and CVC if provided.
        paymentMethodCardChecks :: (GHC.Maybe.Maybe PaymentMethodCardChecks'),
        -- | country: Two-letter ISO code representing the country of the card. You could use this attribute to get a sense of the international breakdown of cards you\'ve collected.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | exp_month: Two-digit number representing the card\'s expiration month.
        paymentMethodCardExpMonth :: GHC.Integer.Type.Integer,
        -- | exp_year: Four-digit number representing the card\'s expiration year.
        paymentMethodCardExpYear :: GHC.Integer.Type.Integer,
        -- | fingerprint: Uniquely identifies this particular card number. You can use this attribute to check whether two customers who\'ve signed up with you are using the same card number, for example.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardFingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardFunding :: Data.Text.Internal.Text,
        -- | generated_from: Details of the original PaymentMethod that created this object.
        paymentMethodCardGeneratedFrom :: (GHC.Maybe.Maybe PaymentMethodCardGeneratedFrom'),
        -- | last4: The last four digits of the card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardLast4 :: Data.Text.Internal.Text,
        -- | three_d_secure_usage: Contains details on how this Card maybe be used for 3D Secure authentication.
        paymentMethodCardThreeDSecureUsage :: (GHC.Maybe.Maybe PaymentMethodCardThreeDSecureUsage'),
        -- | wallet: If this Card is part of a card wallet, this contains the details of the card wallet.
        paymentMethodCardWallet :: (GHC.Maybe.Maybe PaymentMethodCardWallet')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCard where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "brand" (paymentMethodCardBrand obj) : (Data.Aeson..=) "checks" (paymentMethodCardChecks obj) : (Data.Aeson..=) "country" (paymentMethodCardCountry obj) : (Data.Aeson..=) "exp_month" (paymentMethodCardExpMonth obj) : (Data.Aeson..=) "exp_year" (paymentMethodCardExpYear obj) : (Data.Aeson..=) "fingerprint" (paymentMethodCardFingerprint obj) : (Data.Aeson..=) "funding" (paymentMethodCardFunding obj) : (Data.Aeson..=) "generated_from" (paymentMethodCardGeneratedFrom obj) : (Data.Aeson..=) "last4" (paymentMethodCardLast4 obj) : (Data.Aeson..=) "three_d_secure_usage" (paymentMethodCardThreeDSecureUsage obj) : (Data.Aeson..=) "wallet" (paymentMethodCardWallet obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "brand" (paymentMethodCardBrand obj) GHC.Base.<> ((Data.Aeson..=) "checks" (paymentMethodCardChecks obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentMethodCardCountry obj) GHC.Base.<> ((Data.Aeson..=) "exp_month" (paymentMethodCardExpMonth obj) GHC.Base.<> ((Data.Aeson..=) "exp_year" (paymentMethodCardExpYear obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (paymentMethodCardFingerprint obj) GHC.Base.<> ((Data.Aeson..=) "funding" (paymentMethodCardFunding obj) GHC.Base.<> ((Data.Aeson..=) "generated_from" (paymentMethodCardGeneratedFrom obj) GHC.Base.<> ((Data.Aeson..=) "last4" (paymentMethodCardLast4 obj) GHC.Base.<> ((Data.Aeson..=) "three_d_secure_usage" (paymentMethodCardThreeDSecureUsage obj) GHC.Base.<> (Data.Aeson..=) "wallet" (paymentMethodCardWallet obj)))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCard where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCard" (\obj -> ((((((((((GHC.Base.pure PaymentMethodCard GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "brand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "checks")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "funding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "generated_from")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "three_d_secure_usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "wallet"))

-- | Defines the data type for the schema payment_method_cardChecks\'
--
-- Checks on Card address and CVC if provided.
data PaymentMethodCardChecks'
  = PaymentMethodCardChecks'
      { -- | address_line1_check: If a address line1 was provided, results of the check, one of \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardChecks'AddressLine1Check :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_postal_code_check: If a address postal code was provided, results of the check, one of \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardChecks'AddressPostalCodeCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | cvc_check: If a CVC was provided, results of the check, one of \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardChecks'CvcCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCardChecks' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address_line1_check" (paymentMethodCardChecks'AddressLine1Check obj) : (Data.Aeson..=) "address_postal_code_check" (paymentMethodCardChecks'AddressPostalCodeCheck obj) : (Data.Aeson..=) "cvc_check" (paymentMethodCardChecks'CvcCheck obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address_line1_check" (paymentMethodCardChecks'AddressLine1Check obj) GHC.Base.<> ((Data.Aeson..=) "address_postal_code_check" (paymentMethodCardChecks'AddressPostalCodeCheck obj) GHC.Base.<> (Data.Aeson..=) "cvc_check" (paymentMethodCardChecks'CvcCheck obj)))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardChecks' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardChecks'" (\obj -> ((GHC.Base.pure PaymentMethodCardChecks' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_postal_code_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cvc_check"))

-- | Defines the data type for the schema payment_method_cardGenerated_from\'
--
-- Details of the original PaymentMethod that created this object.
data PaymentMethodCardGeneratedFrom'
  = PaymentMethodCardGeneratedFrom'
      { -- | charge: The charge that created this object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardGeneratedFrom'Charge :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | payment_method_details: Transaction-specific details of the payment method used in the payment.
        paymentMethodCardGeneratedFrom'PaymentMethodDetails :: (GHC.Maybe.Maybe PaymentMethodCardGeneratedFrom'PaymentMethodDetails')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCardGeneratedFrom' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "charge" (paymentMethodCardGeneratedFrom'Charge obj) : (Data.Aeson..=) "payment_method_details" (paymentMethodCardGeneratedFrom'PaymentMethodDetails obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "charge" (paymentMethodCardGeneratedFrom'Charge obj) GHC.Base.<> (Data.Aeson..=) "payment_method_details" (paymentMethodCardGeneratedFrom'PaymentMethodDetails obj))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardGeneratedFrom' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardGeneratedFrom'" (\obj -> (GHC.Base.pure PaymentMethodCardGeneratedFrom' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "charge")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_method_details"))

-- | Defines the data type for the schema payment_method_cardGenerated_from\'Payment_method_details\'
--
-- Transaction-specific details of the payment method used in the payment.
data PaymentMethodCardGeneratedFrom'PaymentMethodDetails'
  = PaymentMethodCardGeneratedFrom'PaymentMethodDetails'
      { -- | ach_credit_transfer:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'AchCreditTransfer :: (GHC.Maybe.Maybe PaymentMethodDetailsAchCreditTransfer),
        -- | ach_debit:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'AchDebit :: (GHC.Maybe.Maybe PaymentMethodDetailsAchDebit),
        -- | alipay:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'Alipay :: (GHC.Maybe.Maybe PaymentMethodDetailsAlipay),
        -- | bancontact:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'Bancontact :: (GHC.Maybe.Maybe PaymentMethodDetailsBancontact),
        -- | card:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'Card :: (GHC.Maybe.Maybe PaymentMethodDetailsCard),
        -- | card_present:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'CardPresent :: (GHC.Maybe.Maybe PaymentMethodDetailsCardPresent),
        -- | eps:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'Eps :: (GHC.Maybe.Maybe PaymentMethodDetailsEps),
        -- | fpx:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'Fpx :: (GHC.Maybe.Maybe PaymentMethodDetailsFpx),
        -- | giropay:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'Giropay :: (GHC.Maybe.Maybe PaymentMethodDetailsGiropay),
        -- | ideal:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'Ideal :: (GHC.Maybe.Maybe PaymentMethodDetailsIdeal),
        -- | klarna:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'Klarna :: (GHC.Maybe.Maybe PaymentMethodDetailsKlarna),
        -- | multibanco:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'Multibanco :: (GHC.Maybe.Maybe PaymentMethodDetailsMultibanco),
        -- | p24:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'P24 :: (GHC.Maybe.Maybe PaymentMethodDetailsP24),
        -- | sepa_debit:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'SepaDebit :: (GHC.Maybe.Maybe PaymentMethodDetailsSepaDebit),
        -- | sofort:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'Sofort :: (GHC.Maybe.Maybe PaymentMethodDetailsSofort),
        -- | stripe_account:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'StripeAccount :: (GHC.Maybe.Maybe PaymentMethodDetailsStripeAccount),
        -- | type: The type of transaction-specific details of the payment method used in the payment, one of \`ach_credit_transfer\`, \`ach_debit\`, \`alipay\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`klarna\`, \`multibanco\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`stripe_account\`, or \`wechat\`.
        -- An additional hash is included on \`payment_method_details\` with a name matching this value.
        -- It contains information specific to the payment method.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'Type :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | wechat:
        paymentMethodCardGeneratedFrom'PaymentMethodDetails'Wechat :: (GHC.Maybe.Maybe PaymentMethodDetailsWechat)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCardGeneratedFrom'PaymentMethodDetails' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "ach_credit_transfer" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'AchCreditTransfer obj) : (Data.Aeson..=) "ach_debit" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'AchDebit obj) : (Data.Aeson..=) "alipay" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Alipay obj) : (Data.Aeson..=) "bancontact" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Bancontact obj) : (Data.Aeson..=) "card" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Card obj) : (Data.Aeson..=) "card_present" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'CardPresent obj) : (Data.Aeson..=) "eps" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Eps obj) : (Data.Aeson..=) "fpx" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Fpx obj) : (Data.Aeson..=) "giropay" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Giropay obj) : (Data.Aeson..=) "ideal" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Ideal obj) : (Data.Aeson..=) "klarna" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Klarna obj) : (Data.Aeson..=) "multibanco" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Multibanco obj) : (Data.Aeson..=) "p24" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'P24 obj) : (Data.Aeson..=) "sepa_debit" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'SepaDebit obj) : (Data.Aeson..=) "sofort" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Sofort obj) : (Data.Aeson..=) "stripe_account" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'StripeAccount obj) : (Data.Aeson..=) "type" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Type obj) : (Data.Aeson..=) "wechat" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Wechat obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "ach_credit_transfer" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'AchCreditTransfer obj) GHC.Base.<> ((Data.Aeson..=) "ach_debit" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'AchDebit obj) GHC.Base.<> ((Data.Aeson..=) "alipay" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Alipay obj) GHC.Base.<> ((Data.Aeson..=) "bancontact" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Bancontact obj) GHC.Base.<> ((Data.Aeson..=) "card" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Card obj) GHC.Base.<> ((Data.Aeson..=) "card_present" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'CardPresent obj) GHC.Base.<> ((Data.Aeson..=) "eps" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Eps obj) GHC.Base.<> ((Data.Aeson..=) "fpx" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Fpx obj) GHC.Base.<> ((Data.Aeson..=) "giropay" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Giropay obj) GHC.Base.<> ((Data.Aeson..=) "ideal" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Ideal obj) GHC.Base.<> ((Data.Aeson..=) "klarna" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Klarna obj) GHC.Base.<> ((Data.Aeson..=) "multibanco" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Multibanco obj) GHC.Base.<> ((Data.Aeson..=) "p24" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'P24 obj) GHC.Base.<> ((Data.Aeson..=) "sepa_debit" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'SepaDebit obj) GHC.Base.<> ((Data.Aeson..=) "sofort" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Sofort obj) GHC.Base.<> ((Data.Aeson..=) "stripe_account" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'StripeAccount obj) GHC.Base.<> ((Data.Aeson..=) "type" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Type obj) GHC.Base.<> (Data.Aeson..=) "wechat" (paymentMethodCardGeneratedFrom'PaymentMethodDetails'Wechat obj))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardGeneratedFrom'PaymentMethodDetails' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardGeneratedFrom'PaymentMethodDetails'" (\obj -> (((((((((((((((((GHC.Base.pure PaymentMethodCardGeneratedFrom'PaymentMethodDetails' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_credit_transfer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "alipay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bancontact")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card_present")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "eps")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fpx")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "giropay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ideal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "klarna")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "multibanco")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "p24")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sepa_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sofort")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "stripe_account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "wechat"))

-- | Defines the data type for the schema payment_method_cardThree_d_secure_usage\'
--
-- Contains details on how this Card maybe be used for 3D Secure authentication.
data PaymentMethodCardThreeDSecureUsage'
  = PaymentMethodCardThreeDSecureUsage'
      { -- | supported: Whether 3D Secure is supported on this card.
        paymentMethodCardThreeDSecureUsage'Supported :: (GHC.Maybe.Maybe GHC.Types.Bool)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCardThreeDSecureUsage' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "supported" (paymentMethodCardThreeDSecureUsage'Supported obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "supported" (paymentMethodCardThreeDSecureUsage'Supported obj))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardThreeDSecureUsage' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardThreeDSecureUsage'" (\obj -> GHC.Base.pure PaymentMethodCardThreeDSecureUsage' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "supported"))

-- | Defines the data type for the schema payment_method_cardWallet\'
--
-- If this Card is part of a card wallet, this contains the details of the card wallet.
data PaymentMethodCardWallet'
  = PaymentMethodCardWallet'
      { -- | amex_express_checkout:
        paymentMethodCardWallet'AmexExpressCheckout :: (GHC.Maybe.Maybe PaymentMethodCardWalletAmexExpressCheckout),
        -- | apple_pay:
        paymentMethodCardWallet'ApplePay :: (GHC.Maybe.Maybe PaymentMethodCardWalletApplePay),
        -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWallet'DynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | google_pay:
        paymentMethodCardWallet'GooglePay :: (GHC.Maybe.Maybe PaymentMethodCardWalletGooglePay),
        -- | masterpass:
        paymentMethodCardWallet'Masterpass :: (GHC.Maybe.Maybe PaymentMethodCardWalletMasterpass),
        -- | samsung_pay:
        paymentMethodCardWallet'SamsungPay :: (GHC.Maybe.Maybe PaymentMethodCardWalletSamsungPay),
        -- | type: The type of the card wallet, one of \`amex_express_checkout\`, \`apple_pay\`, \`google_pay\`, \`masterpass\`, \`samsung_pay\`, or \`visa_checkout\`. An additional hash is included on the Wallet subhash with a name matching this value. It contains additional information specific to the card wallet type.
        paymentMethodCardWallet'Type :: (GHC.Maybe.Maybe PaymentMethodCardWallet'Type'),
        -- | visa_checkout:
        paymentMethodCardWallet'VisaCheckout :: (GHC.Maybe.Maybe PaymentMethodCardWalletVisaCheckout)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCardWallet' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amex_express_checkout" (paymentMethodCardWallet'AmexExpressCheckout obj) : (Data.Aeson..=) "apple_pay" (paymentMethodCardWallet'ApplePay obj) : (Data.Aeson..=) "dynamic_last4" (paymentMethodCardWallet'DynamicLast4 obj) : (Data.Aeson..=) "google_pay" (paymentMethodCardWallet'GooglePay obj) : (Data.Aeson..=) "masterpass" (paymentMethodCardWallet'Masterpass obj) : (Data.Aeson..=) "samsung_pay" (paymentMethodCardWallet'SamsungPay obj) : (Data.Aeson..=) "type" (paymentMethodCardWallet'Type obj) : (Data.Aeson..=) "visa_checkout" (paymentMethodCardWallet'VisaCheckout obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amex_express_checkout" (paymentMethodCardWallet'AmexExpressCheckout obj) GHC.Base.<> ((Data.Aeson..=) "apple_pay" (paymentMethodCardWallet'ApplePay obj) GHC.Base.<> ((Data.Aeson..=) "dynamic_last4" (paymentMethodCardWallet'DynamicLast4 obj) GHC.Base.<> ((Data.Aeson..=) "google_pay" (paymentMethodCardWallet'GooglePay obj) GHC.Base.<> ((Data.Aeson..=) "masterpass" (paymentMethodCardWallet'Masterpass obj) GHC.Base.<> ((Data.Aeson..=) "samsung_pay" (paymentMethodCardWallet'SamsungPay obj) GHC.Base.<> ((Data.Aeson..=) "type" (paymentMethodCardWallet'Type obj) GHC.Base.<> (Data.Aeson..=) "visa_checkout" (paymentMethodCardWallet'VisaCheckout obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardWallet' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardWallet'" (\obj -> (((((((GHC.Base.pure PaymentMethodCardWallet' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amex_express_checkout")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "apple_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dynamic_last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "google_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "masterpass")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "samsung_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "visa_checkout"))

-- | Defines the enum schema payment_method_cardWallet\'Type\'
--
-- The type of the card wallet, one of \`amex_express_checkout\`, \`apple_pay\`, \`google_pay\`, \`masterpass\`, \`samsung_pay\`, or \`visa_checkout\`. An additional hash is included on the Wallet subhash with a name matching this value. It contains additional information specific to the card wallet type.
data PaymentMethodCardWallet'Type'
  = PaymentMethodCardWallet'Type'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentMethodCardWallet'Type'EnumTyped Data.Text.Internal.Text
  | PaymentMethodCardWallet'Type'EnumStringAmexExpressCheckout
  | PaymentMethodCardWallet'Type'EnumStringApplePay
  | PaymentMethodCardWallet'Type'EnumStringGooglePay
  | PaymentMethodCardWallet'Type'EnumStringMasterpass
  | PaymentMethodCardWallet'Type'EnumStringSamsungPay
  | PaymentMethodCardWallet'Type'EnumStringVisaCheckout
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentMethodCardWallet'Type' where
  toJSON (PaymentMethodCardWallet'Type'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodCardWallet'Type'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodCardWallet'Type'EnumStringAmexExpressCheckout) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amex_express_checkout"
  toJSON (PaymentMethodCardWallet'Type'EnumStringApplePay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "apple_pay"
  toJSON (PaymentMethodCardWallet'Type'EnumStringGooglePay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "google_pay"
  toJSON (PaymentMethodCardWallet'Type'EnumStringMasterpass) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masterpass"
  toJSON (PaymentMethodCardWallet'Type'EnumStringSamsungPay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "samsung_pay"
  toJSON (PaymentMethodCardWallet'Type'EnumStringVisaCheckout) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "visa_checkout"

instance Data.Aeson.FromJSON PaymentMethodCardWallet'Type' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amex_express_checkout")
          then PaymentMethodCardWallet'Type'EnumStringAmexExpressCheckout
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "apple_pay")
              then PaymentMethodCardWallet'Type'EnumStringApplePay
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "google_pay")
                  then PaymentMethodCardWallet'Type'EnumStringGooglePay
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masterpass")
                      then PaymentMethodCardWallet'Type'EnumStringMasterpass
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "samsung_pay")
                          then PaymentMethodCardWallet'Type'EnumStringSamsungPay
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "visa_checkout")
                              then PaymentMethodCardWallet'Type'EnumStringVisaCheckout
                              else PaymentMethodCardWallet'Type'EnumOther val
      )

-- | Defines the data type for the schema payment_method_card_generated_card
data PaymentMethodCardGeneratedCard
  = PaymentMethodCardGeneratedCard
      { -- | charge: The charge that created this object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardGeneratedCardCharge :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | payment_method_details: Transaction-specific details of the payment method used in the payment.
        paymentMethodCardGeneratedCardPaymentMethodDetails :: (GHC.Maybe.Maybe PaymentMethodCardGeneratedCardPaymentMethodDetails')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCardGeneratedCard where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "charge" (paymentMethodCardGeneratedCardCharge obj) : (Data.Aeson..=) "payment_method_details" (paymentMethodCardGeneratedCardPaymentMethodDetails obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "charge" (paymentMethodCardGeneratedCardCharge obj) GHC.Base.<> (Data.Aeson..=) "payment_method_details" (paymentMethodCardGeneratedCardPaymentMethodDetails obj))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardGeneratedCard where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardGeneratedCard" (\obj -> (GHC.Base.pure PaymentMethodCardGeneratedCard GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "charge")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_method_details"))

-- | Defines the data type for the schema payment_method_card_generated_cardPayment_method_details\'
--
-- Transaction-specific details of the payment method used in the payment.
data PaymentMethodCardGeneratedCardPaymentMethodDetails'
  = PaymentMethodCardGeneratedCardPaymentMethodDetails'
      { -- | ach_credit_transfer:
        paymentMethodCardGeneratedCardPaymentMethodDetails'AchCreditTransfer :: (GHC.Maybe.Maybe PaymentMethodDetailsAchCreditTransfer),
        -- | ach_debit:
        paymentMethodCardGeneratedCardPaymentMethodDetails'AchDebit :: (GHC.Maybe.Maybe PaymentMethodDetailsAchDebit),
        -- | alipay:
        paymentMethodCardGeneratedCardPaymentMethodDetails'Alipay :: (GHC.Maybe.Maybe PaymentMethodDetailsAlipay),
        -- | bancontact:
        paymentMethodCardGeneratedCardPaymentMethodDetails'Bancontact :: (GHC.Maybe.Maybe PaymentMethodDetailsBancontact),
        -- | card:
        paymentMethodCardGeneratedCardPaymentMethodDetails'Card :: (GHC.Maybe.Maybe PaymentMethodDetailsCard),
        -- | card_present:
        paymentMethodCardGeneratedCardPaymentMethodDetails'CardPresent :: (GHC.Maybe.Maybe PaymentMethodDetailsCardPresent),
        -- | eps:
        paymentMethodCardGeneratedCardPaymentMethodDetails'Eps :: (GHC.Maybe.Maybe PaymentMethodDetailsEps),
        -- | fpx:
        paymentMethodCardGeneratedCardPaymentMethodDetails'Fpx :: (GHC.Maybe.Maybe PaymentMethodDetailsFpx),
        -- | giropay:
        paymentMethodCardGeneratedCardPaymentMethodDetails'Giropay :: (GHC.Maybe.Maybe PaymentMethodDetailsGiropay),
        -- | ideal:
        paymentMethodCardGeneratedCardPaymentMethodDetails'Ideal :: (GHC.Maybe.Maybe PaymentMethodDetailsIdeal),
        -- | klarna:
        paymentMethodCardGeneratedCardPaymentMethodDetails'Klarna :: (GHC.Maybe.Maybe PaymentMethodDetailsKlarna),
        -- | multibanco:
        paymentMethodCardGeneratedCardPaymentMethodDetails'Multibanco :: (GHC.Maybe.Maybe PaymentMethodDetailsMultibanco),
        -- | p24:
        paymentMethodCardGeneratedCardPaymentMethodDetails'P24 :: (GHC.Maybe.Maybe PaymentMethodDetailsP24),
        -- | sepa_debit:
        paymentMethodCardGeneratedCardPaymentMethodDetails'SepaDebit :: (GHC.Maybe.Maybe PaymentMethodDetailsSepaDebit),
        -- | sofort:
        paymentMethodCardGeneratedCardPaymentMethodDetails'Sofort :: (GHC.Maybe.Maybe PaymentMethodDetailsSofort),
        -- | stripe_account:
        paymentMethodCardGeneratedCardPaymentMethodDetails'StripeAccount :: (GHC.Maybe.Maybe PaymentMethodDetailsStripeAccount),
        -- | type: The type of transaction-specific details of the payment method used in the payment, one of \`ach_credit_transfer\`, \`ach_debit\`, \`alipay\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`klarna\`, \`multibanco\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`stripe_account\`, or \`wechat\`.
        -- An additional hash is included on \`payment_method_details\` with a name matching this value.
        -- It contains information specific to the payment method.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardGeneratedCardPaymentMethodDetails'Type :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | wechat:
        paymentMethodCardGeneratedCardPaymentMethodDetails'Wechat :: (GHC.Maybe.Maybe PaymentMethodDetailsWechat)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCardGeneratedCardPaymentMethodDetails' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "ach_credit_transfer" (paymentMethodCardGeneratedCardPaymentMethodDetails'AchCreditTransfer obj) : (Data.Aeson..=) "ach_debit" (paymentMethodCardGeneratedCardPaymentMethodDetails'AchDebit obj) : (Data.Aeson..=) "alipay" (paymentMethodCardGeneratedCardPaymentMethodDetails'Alipay obj) : (Data.Aeson..=) "bancontact" (paymentMethodCardGeneratedCardPaymentMethodDetails'Bancontact obj) : (Data.Aeson..=) "card" (paymentMethodCardGeneratedCardPaymentMethodDetails'Card obj) : (Data.Aeson..=) "card_present" (paymentMethodCardGeneratedCardPaymentMethodDetails'CardPresent obj) : (Data.Aeson..=) "eps" (paymentMethodCardGeneratedCardPaymentMethodDetails'Eps obj) : (Data.Aeson..=) "fpx" (paymentMethodCardGeneratedCardPaymentMethodDetails'Fpx obj) : (Data.Aeson..=) "giropay" (paymentMethodCardGeneratedCardPaymentMethodDetails'Giropay obj) : (Data.Aeson..=) "ideal" (paymentMethodCardGeneratedCardPaymentMethodDetails'Ideal obj) : (Data.Aeson..=) "klarna" (paymentMethodCardGeneratedCardPaymentMethodDetails'Klarna obj) : (Data.Aeson..=) "multibanco" (paymentMethodCardGeneratedCardPaymentMethodDetails'Multibanco obj) : (Data.Aeson..=) "p24" (paymentMethodCardGeneratedCardPaymentMethodDetails'P24 obj) : (Data.Aeson..=) "sepa_debit" (paymentMethodCardGeneratedCardPaymentMethodDetails'SepaDebit obj) : (Data.Aeson..=) "sofort" (paymentMethodCardGeneratedCardPaymentMethodDetails'Sofort obj) : (Data.Aeson..=) "stripe_account" (paymentMethodCardGeneratedCardPaymentMethodDetails'StripeAccount obj) : (Data.Aeson..=) "type" (paymentMethodCardGeneratedCardPaymentMethodDetails'Type obj) : (Data.Aeson..=) "wechat" (paymentMethodCardGeneratedCardPaymentMethodDetails'Wechat obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "ach_credit_transfer" (paymentMethodCardGeneratedCardPaymentMethodDetails'AchCreditTransfer obj) GHC.Base.<> ((Data.Aeson..=) "ach_debit" (paymentMethodCardGeneratedCardPaymentMethodDetails'AchDebit obj) GHC.Base.<> ((Data.Aeson..=) "alipay" (paymentMethodCardGeneratedCardPaymentMethodDetails'Alipay obj) GHC.Base.<> ((Data.Aeson..=) "bancontact" (paymentMethodCardGeneratedCardPaymentMethodDetails'Bancontact obj) GHC.Base.<> ((Data.Aeson..=) "card" (paymentMethodCardGeneratedCardPaymentMethodDetails'Card obj) GHC.Base.<> ((Data.Aeson..=) "card_present" (paymentMethodCardGeneratedCardPaymentMethodDetails'CardPresent obj) GHC.Base.<> ((Data.Aeson..=) "eps" (paymentMethodCardGeneratedCardPaymentMethodDetails'Eps obj) GHC.Base.<> ((Data.Aeson..=) "fpx" (paymentMethodCardGeneratedCardPaymentMethodDetails'Fpx obj) GHC.Base.<> ((Data.Aeson..=) "giropay" (paymentMethodCardGeneratedCardPaymentMethodDetails'Giropay obj) GHC.Base.<> ((Data.Aeson..=) "ideal" (paymentMethodCardGeneratedCardPaymentMethodDetails'Ideal obj) GHC.Base.<> ((Data.Aeson..=) "klarna" (paymentMethodCardGeneratedCardPaymentMethodDetails'Klarna obj) GHC.Base.<> ((Data.Aeson..=) "multibanco" (paymentMethodCardGeneratedCardPaymentMethodDetails'Multibanco obj) GHC.Base.<> ((Data.Aeson..=) "p24" (paymentMethodCardGeneratedCardPaymentMethodDetails'P24 obj) GHC.Base.<> ((Data.Aeson..=) "sepa_debit" (paymentMethodCardGeneratedCardPaymentMethodDetails'SepaDebit obj) GHC.Base.<> ((Data.Aeson..=) "sofort" (paymentMethodCardGeneratedCardPaymentMethodDetails'Sofort obj) GHC.Base.<> ((Data.Aeson..=) "stripe_account" (paymentMethodCardGeneratedCardPaymentMethodDetails'StripeAccount obj) GHC.Base.<> ((Data.Aeson..=) "type" (paymentMethodCardGeneratedCardPaymentMethodDetails'Type obj) GHC.Base.<> (Data.Aeson..=) "wechat" (paymentMethodCardGeneratedCardPaymentMethodDetails'Wechat obj))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardGeneratedCardPaymentMethodDetails' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardGeneratedCardPaymentMethodDetails'" (\obj -> (((((((((((((((((GHC.Base.pure PaymentMethodCardGeneratedCardPaymentMethodDetails' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_credit_transfer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "alipay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bancontact")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card_present")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "eps")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fpx")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "giropay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ideal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "klarna")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "multibanco")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "p24")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sepa_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sofort")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "stripe_account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "wechat"))

-- | Defines the data type for the schema payment_method_card_wallet
data PaymentMethodCardWallet
  = PaymentMethodCardWallet
      { -- | amex_express_checkout:
        paymentMethodCardWalletAmexExpressCheckout :: (GHC.Maybe.Maybe PaymentMethodCardWalletAmexExpressCheckout),
        -- | apple_pay:
        paymentMethodCardWalletApplePay :: (GHC.Maybe.Maybe PaymentMethodCardWalletApplePay),
        -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletDynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | google_pay:
        paymentMethodCardWalletGooglePay :: (GHC.Maybe.Maybe PaymentMethodCardWalletGooglePay),
        -- | masterpass:
        paymentMethodCardWalletMasterpass :: (GHC.Maybe.Maybe PaymentMethodCardWalletMasterpass),
        -- | samsung_pay:
        paymentMethodCardWalletSamsungPay :: (GHC.Maybe.Maybe PaymentMethodCardWalletSamsungPay),
        -- | type: The type of the card wallet, one of \`amex_express_checkout\`, \`apple_pay\`, \`google_pay\`, \`masterpass\`, \`samsung_pay\`, or \`visa_checkout\`. An additional hash is included on the Wallet subhash with a name matching this value. It contains additional information specific to the card wallet type.
        paymentMethodCardWalletType :: PaymentMethodCardWalletType',
        -- | visa_checkout:
        paymentMethodCardWalletVisaCheckout :: (GHC.Maybe.Maybe PaymentMethodCardWalletVisaCheckout)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCardWallet where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amex_express_checkout" (paymentMethodCardWalletAmexExpressCheckout obj) : (Data.Aeson..=) "apple_pay" (paymentMethodCardWalletApplePay obj) : (Data.Aeson..=) "dynamic_last4" (paymentMethodCardWalletDynamicLast4 obj) : (Data.Aeson..=) "google_pay" (paymentMethodCardWalletGooglePay obj) : (Data.Aeson..=) "masterpass" (paymentMethodCardWalletMasterpass obj) : (Data.Aeson..=) "samsung_pay" (paymentMethodCardWalletSamsungPay obj) : (Data.Aeson..=) "type" (paymentMethodCardWalletType obj) : (Data.Aeson..=) "visa_checkout" (paymentMethodCardWalletVisaCheckout obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amex_express_checkout" (paymentMethodCardWalletAmexExpressCheckout obj) GHC.Base.<> ((Data.Aeson..=) "apple_pay" (paymentMethodCardWalletApplePay obj) GHC.Base.<> ((Data.Aeson..=) "dynamic_last4" (paymentMethodCardWalletDynamicLast4 obj) GHC.Base.<> ((Data.Aeson..=) "google_pay" (paymentMethodCardWalletGooglePay obj) GHC.Base.<> ((Data.Aeson..=) "masterpass" (paymentMethodCardWalletMasterpass obj) GHC.Base.<> ((Data.Aeson..=) "samsung_pay" (paymentMethodCardWalletSamsungPay obj) GHC.Base.<> ((Data.Aeson..=) "type" (paymentMethodCardWalletType obj) GHC.Base.<> (Data.Aeson..=) "visa_checkout" (paymentMethodCardWalletVisaCheckout obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardWallet where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardWallet" (\obj -> (((((((GHC.Base.pure PaymentMethodCardWallet GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amex_express_checkout")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "apple_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dynamic_last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "google_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "masterpass")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "samsung_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "visa_checkout"))

-- | Defines the enum schema payment_method_card_walletType\'
--
-- The type of the card wallet, one of \`amex_express_checkout\`, \`apple_pay\`, \`google_pay\`, \`masterpass\`, \`samsung_pay\`, or \`visa_checkout\`. An additional hash is included on the Wallet subhash with a name matching this value. It contains additional information specific to the card wallet type.
data PaymentMethodCardWalletType'
  = PaymentMethodCardWalletType'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentMethodCardWalletType'EnumTyped Data.Text.Internal.Text
  | PaymentMethodCardWalletType'EnumStringAmexExpressCheckout
  | PaymentMethodCardWalletType'EnumStringApplePay
  | PaymentMethodCardWalletType'EnumStringGooglePay
  | PaymentMethodCardWalletType'EnumStringMasterpass
  | PaymentMethodCardWalletType'EnumStringSamsungPay
  | PaymentMethodCardWalletType'EnumStringVisaCheckout
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentMethodCardWalletType' where
  toJSON (PaymentMethodCardWalletType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodCardWalletType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodCardWalletType'EnumStringAmexExpressCheckout) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amex_express_checkout"
  toJSON (PaymentMethodCardWalletType'EnumStringApplePay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "apple_pay"
  toJSON (PaymentMethodCardWalletType'EnumStringGooglePay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "google_pay"
  toJSON (PaymentMethodCardWalletType'EnumStringMasterpass) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masterpass"
  toJSON (PaymentMethodCardWalletType'EnumStringSamsungPay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "samsung_pay"
  toJSON (PaymentMethodCardWalletType'EnumStringVisaCheckout) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "visa_checkout"

instance Data.Aeson.FromJSON PaymentMethodCardWalletType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amex_express_checkout")
          then PaymentMethodCardWalletType'EnumStringAmexExpressCheckout
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "apple_pay")
              then PaymentMethodCardWalletType'EnumStringApplePay
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "google_pay")
                  then PaymentMethodCardWalletType'EnumStringGooglePay
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masterpass")
                      then PaymentMethodCardWalletType'EnumStringMasterpass
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "samsung_pay")
                          then PaymentMethodCardWalletType'EnumStringSamsungPay
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "visa_checkout")
                              then PaymentMethodCardWalletType'EnumStringVisaCheckout
                              else PaymentMethodCardWalletType'EnumOther val
      )

-- | Defines the data type for the schema payment_method_card_wallet_masterpass
data PaymentMethodCardWalletMasterpass
  = PaymentMethodCardWalletMasterpass
      { -- | billing_address: Owner\'s verified billing address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        paymentMethodCardWalletMasterpassBillingAddress :: (GHC.Maybe.Maybe PaymentMethodCardWalletMasterpassBillingAddress'),
        -- | email: Owner\'s verified email. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletMasterpassEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Owner\'s verified full name. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletMasterpassName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | shipping_address: Owner\'s verified shipping address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        paymentMethodCardWalletMasterpassShippingAddress :: (GHC.Maybe.Maybe PaymentMethodCardWalletMasterpassShippingAddress')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCardWalletMasterpass where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "billing_address" (paymentMethodCardWalletMasterpassBillingAddress obj) : (Data.Aeson..=) "email" (paymentMethodCardWalletMasterpassEmail obj) : (Data.Aeson..=) "name" (paymentMethodCardWalletMasterpassName obj) : (Data.Aeson..=) "shipping_address" (paymentMethodCardWalletMasterpassShippingAddress obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "billing_address" (paymentMethodCardWalletMasterpassBillingAddress obj) GHC.Base.<> ((Data.Aeson..=) "email" (paymentMethodCardWalletMasterpassEmail obj) GHC.Base.<> ((Data.Aeson..=) "name" (paymentMethodCardWalletMasterpassName obj) GHC.Base.<> (Data.Aeson..=) "shipping_address" (paymentMethodCardWalletMasterpassShippingAddress obj))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardWalletMasterpass where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardWalletMasterpass" (\obj -> (((GHC.Base.pure PaymentMethodCardWalletMasterpass GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping_address"))

-- | Defines the data type for the schema payment_method_card_wallet_masterpassBilling_address\'
--
-- Owner\\\'s verified billing address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
data PaymentMethodCardWalletMasterpassBillingAddress'
  = PaymentMethodCardWalletMasterpassBillingAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletMasterpassBillingAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletMasterpassBillingAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletMasterpassBillingAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletMasterpassBillingAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletMasterpassBillingAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletMasterpassBillingAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCardWalletMasterpassBillingAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (paymentMethodCardWalletMasterpassBillingAddress'City obj) : (Data.Aeson..=) "country" (paymentMethodCardWalletMasterpassBillingAddress'Country obj) : (Data.Aeson..=) "line1" (paymentMethodCardWalletMasterpassBillingAddress'Line1 obj) : (Data.Aeson..=) "line2" (paymentMethodCardWalletMasterpassBillingAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (paymentMethodCardWalletMasterpassBillingAddress'PostalCode obj) : (Data.Aeson..=) "state" (paymentMethodCardWalletMasterpassBillingAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (paymentMethodCardWalletMasterpassBillingAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentMethodCardWalletMasterpassBillingAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (paymentMethodCardWalletMasterpassBillingAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (paymentMethodCardWalletMasterpassBillingAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (paymentMethodCardWalletMasterpassBillingAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (paymentMethodCardWalletMasterpassBillingAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardWalletMasterpassBillingAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardWalletMasterpassBillingAddress'" (\obj -> (((((GHC.Base.pure PaymentMethodCardWalletMasterpassBillingAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema payment_method_card_wallet_masterpassShipping_address\'
--
-- Owner\\\'s verified shipping address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
data PaymentMethodCardWalletMasterpassShippingAddress'
  = PaymentMethodCardWalletMasterpassShippingAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletMasterpassShippingAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletMasterpassShippingAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletMasterpassShippingAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletMasterpassShippingAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletMasterpassShippingAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletMasterpassShippingAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCardWalletMasterpassShippingAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (paymentMethodCardWalletMasterpassShippingAddress'City obj) : (Data.Aeson..=) "country" (paymentMethodCardWalletMasterpassShippingAddress'Country obj) : (Data.Aeson..=) "line1" (paymentMethodCardWalletMasterpassShippingAddress'Line1 obj) : (Data.Aeson..=) "line2" (paymentMethodCardWalletMasterpassShippingAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (paymentMethodCardWalletMasterpassShippingAddress'PostalCode obj) : (Data.Aeson..=) "state" (paymentMethodCardWalletMasterpassShippingAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (paymentMethodCardWalletMasterpassShippingAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentMethodCardWalletMasterpassShippingAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (paymentMethodCardWalletMasterpassShippingAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (paymentMethodCardWalletMasterpassShippingAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (paymentMethodCardWalletMasterpassShippingAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (paymentMethodCardWalletMasterpassShippingAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardWalletMasterpassShippingAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardWalletMasterpassShippingAddress'" (\obj -> (((((GHC.Base.pure PaymentMethodCardWalletMasterpassShippingAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema payment_method_card_wallet_visa_checkout
data PaymentMethodCardWalletVisaCheckout
  = PaymentMethodCardWalletVisaCheckout
      { -- | billing_address: Owner\'s verified billing address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        paymentMethodCardWalletVisaCheckoutBillingAddress :: (GHC.Maybe.Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress'),
        -- | email: Owner\'s verified email. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletVisaCheckoutEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Owner\'s verified full name. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletVisaCheckoutName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | shipping_address: Owner\'s verified shipping address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        paymentMethodCardWalletVisaCheckoutShippingAddress :: (GHC.Maybe.Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCardWalletVisaCheckout where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "billing_address" (paymentMethodCardWalletVisaCheckoutBillingAddress obj) : (Data.Aeson..=) "email" (paymentMethodCardWalletVisaCheckoutEmail obj) : (Data.Aeson..=) "name" (paymentMethodCardWalletVisaCheckoutName obj) : (Data.Aeson..=) "shipping_address" (paymentMethodCardWalletVisaCheckoutShippingAddress obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "billing_address" (paymentMethodCardWalletVisaCheckoutBillingAddress obj) GHC.Base.<> ((Data.Aeson..=) "email" (paymentMethodCardWalletVisaCheckoutEmail obj) GHC.Base.<> ((Data.Aeson..=) "name" (paymentMethodCardWalletVisaCheckoutName obj) GHC.Base.<> (Data.Aeson..=) "shipping_address" (paymentMethodCardWalletVisaCheckoutShippingAddress obj))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardWalletVisaCheckout where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardWalletVisaCheckout" (\obj -> (((GHC.Base.pure PaymentMethodCardWalletVisaCheckout GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping_address"))

-- | Defines the data type for the schema payment_method_card_wallet_visa_checkoutBilling_address\'
--
-- Owner\\\'s verified billing address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
data PaymentMethodCardWalletVisaCheckoutBillingAddress'
  = PaymentMethodCardWalletVisaCheckoutBillingAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletVisaCheckoutBillingAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletVisaCheckoutBillingAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletVisaCheckoutBillingAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletVisaCheckoutBillingAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletVisaCheckoutBillingAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletVisaCheckoutBillingAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCardWalletVisaCheckoutBillingAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (paymentMethodCardWalletVisaCheckoutBillingAddress'City obj) : (Data.Aeson..=) "country" (paymentMethodCardWalletVisaCheckoutBillingAddress'Country obj) : (Data.Aeson..=) "line1" (paymentMethodCardWalletVisaCheckoutBillingAddress'Line1 obj) : (Data.Aeson..=) "line2" (paymentMethodCardWalletVisaCheckoutBillingAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (paymentMethodCardWalletVisaCheckoutBillingAddress'PostalCode obj) : (Data.Aeson..=) "state" (paymentMethodCardWalletVisaCheckoutBillingAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (paymentMethodCardWalletVisaCheckoutBillingAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentMethodCardWalletVisaCheckoutBillingAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (paymentMethodCardWalletVisaCheckoutBillingAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (paymentMethodCardWalletVisaCheckoutBillingAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (paymentMethodCardWalletVisaCheckoutBillingAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (paymentMethodCardWalletVisaCheckoutBillingAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardWalletVisaCheckoutBillingAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardWalletVisaCheckoutBillingAddress'" (\obj -> (((((GHC.Base.pure PaymentMethodCardWalletVisaCheckoutBillingAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema payment_method_card_wallet_visa_checkoutShipping_address\'
--
-- Owner\\\'s verified shipping address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
data PaymentMethodCardWalletVisaCheckoutShippingAddress'
  = PaymentMethodCardWalletVisaCheckoutShippingAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletVisaCheckoutShippingAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletVisaCheckoutShippingAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletVisaCheckoutShippingAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletVisaCheckoutShippingAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletVisaCheckoutShippingAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodCardWalletVisaCheckoutShippingAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodCardWalletVisaCheckoutShippingAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (paymentMethodCardWalletVisaCheckoutShippingAddress'City obj) : (Data.Aeson..=) "country" (paymentMethodCardWalletVisaCheckoutShippingAddress'Country obj) : (Data.Aeson..=) "line1" (paymentMethodCardWalletVisaCheckoutShippingAddress'Line1 obj) : (Data.Aeson..=) "line2" (paymentMethodCardWalletVisaCheckoutShippingAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (paymentMethodCardWalletVisaCheckoutShippingAddress'PostalCode obj) : (Data.Aeson..=) "state" (paymentMethodCardWalletVisaCheckoutShippingAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (paymentMethodCardWalletVisaCheckoutShippingAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentMethodCardWalletVisaCheckoutShippingAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (paymentMethodCardWalletVisaCheckoutShippingAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (paymentMethodCardWalletVisaCheckoutShippingAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (paymentMethodCardWalletVisaCheckoutShippingAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (paymentMethodCardWalletVisaCheckoutShippingAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardWalletVisaCheckoutShippingAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardWalletVisaCheckoutShippingAddress'" (\obj -> (((((GHC.Base.pure PaymentMethodCardWalletVisaCheckoutShippingAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema payment_method_details
data PaymentMethodDetails
  = PaymentMethodDetails
      { -- | ach_credit_transfer:
        paymentMethodDetailsAchCreditTransfer :: (GHC.Maybe.Maybe PaymentMethodDetailsAchCreditTransfer),
        -- | ach_debit:
        paymentMethodDetailsAchDebit :: (GHC.Maybe.Maybe PaymentMethodDetailsAchDebit),
        -- | alipay:
        paymentMethodDetailsAlipay :: (GHC.Maybe.Maybe PaymentMethodDetailsAlipay),
        -- | bancontact:
        paymentMethodDetailsBancontact :: (GHC.Maybe.Maybe PaymentMethodDetailsBancontact),
        -- | card:
        paymentMethodDetailsCard :: (GHC.Maybe.Maybe PaymentMethodDetailsCard),
        -- | card_present:
        paymentMethodDetailsCardPresent :: (GHC.Maybe.Maybe PaymentMethodDetailsCardPresent),
        -- | eps:
        paymentMethodDetailsEps :: (GHC.Maybe.Maybe PaymentMethodDetailsEps),
        -- | fpx:
        paymentMethodDetailsFpx :: (GHC.Maybe.Maybe PaymentMethodDetailsFpx),
        -- | giropay:
        paymentMethodDetailsGiropay :: (GHC.Maybe.Maybe PaymentMethodDetailsGiropay),
        -- | ideal:
        paymentMethodDetailsIdeal :: (GHC.Maybe.Maybe PaymentMethodDetailsIdeal),
        -- | klarna:
        paymentMethodDetailsKlarna :: (GHC.Maybe.Maybe PaymentMethodDetailsKlarna),
        -- | multibanco:
        paymentMethodDetailsMultibanco :: (GHC.Maybe.Maybe PaymentMethodDetailsMultibanco),
        -- | p24:
        paymentMethodDetailsP24 :: (GHC.Maybe.Maybe PaymentMethodDetailsP24),
        -- | sepa_debit:
        paymentMethodDetailsSepaDebit :: (GHC.Maybe.Maybe PaymentMethodDetailsSepaDebit),
        -- | sofort:
        paymentMethodDetailsSofort :: (GHC.Maybe.Maybe PaymentMethodDetailsSofort),
        -- | stripe_account:
        paymentMethodDetailsStripeAccount :: (GHC.Maybe.Maybe PaymentMethodDetailsStripeAccount),
        -- | type: The type of transaction-specific details of the payment method used in the payment, one of \`ach_credit_transfer\`, \`ach_debit\`, \`alipay\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`klarna\`, \`multibanco\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`stripe_account\`, or \`wechat\`.
        -- An additional hash is included on \`payment_method_details\` with a name matching this value.
        -- It contains information specific to the payment method.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsType :: Data.Text.Internal.Text,
        -- | wechat:
        paymentMethodDetailsWechat :: (GHC.Maybe.Maybe PaymentMethodDetailsWechat)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetails where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "ach_credit_transfer" (paymentMethodDetailsAchCreditTransfer obj) : (Data.Aeson..=) "ach_debit" (paymentMethodDetailsAchDebit obj) : (Data.Aeson..=) "alipay" (paymentMethodDetailsAlipay obj) : (Data.Aeson..=) "bancontact" (paymentMethodDetailsBancontact obj) : (Data.Aeson..=) "card" (paymentMethodDetailsCard obj) : (Data.Aeson..=) "card_present" (paymentMethodDetailsCardPresent obj) : (Data.Aeson..=) "eps" (paymentMethodDetailsEps obj) : (Data.Aeson..=) "fpx" (paymentMethodDetailsFpx obj) : (Data.Aeson..=) "giropay" (paymentMethodDetailsGiropay obj) : (Data.Aeson..=) "ideal" (paymentMethodDetailsIdeal obj) : (Data.Aeson..=) "klarna" (paymentMethodDetailsKlarna obj) : (Data.Aeson..=) "multibanco" (paymentMethodDetailsMultibanco obj) : (Data.Aeson..=) "p24" (paymentMethodDetailsP24 obj) : (Data.Aeson..=) "sepa_debit" (paymentMethodDetailsSepaDebit obj) : (Data.Aeson..=) "sofort" (paymentMethodDetailsSofort obj) : (Data.Aeson..=) "stripe_account" (paymentMethodDetailsStripeAccount obj) : (Data.Aeson..=) "type" (paymentMethodDetailsType obj) : (Data.Aeson..=) "wechat" (paymentMethodDetailsWechat obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "ach_credit_transfer" (paymentMethodDetailsAchCreditTransfer obj) GHC.Base.<> ((Data.Aeson..=) "ach_debit" (paymentMethodDetailsAchDebit obj) GHC.Base.<> ((Data.Aeson..=) "alipay" (paymentMethodDetailsAlipay obj) GHC.Base.<> ((Data.Aeson..=) "bancontact" (paymentMethodDetailsBancontact obj) GHC.Base.<> ((Data.Aeson..=) "card" (paymentMethodDetailsCard obj) GHC.Base.<> ((Data.Aeson..=) "card_present" (paymentMethodDetailsCardPresent obj) GHC.Base.<> ((Data.Aeson..=) "eps" (paymentMethodDetailsEps obj) GHC.Base.<> ((Data.Aeson..=) "fpx" (paymentMethodDetailsFpx obj) GHC.Base.<> ((Data.Aeson..=) "giropay" (paymentMethodDetailsGiropay obj) GHC.Base.<> ((Data.Aeson..=) "ideal" (paymentMethodDetailsIdeal obj) GHC.Base.<> ((Data.Aeson..=) "klarna" (paymentMethodDetailsKlarna obj) GHC.Base.<> ((Data.Aeson..=) "multibanco" (paymentMethodDetailsMultibanco obj) GHC.Base.<> ((Data.Aeson..=) "p24" (paymentMethodDetailsP24 obj) GHC.Base.<> ((Data.Aeson..=) "sepa_debit" (paymentMethodDetailsSepaDebit obj) GHC.Base.<> ((Data.Aeson..=) "sofort" (paymentMethodDetailsSofort obj) GHC.Base.<> ((Data.Aeson..=) "stripe_account" (paymentMethodDetailsStripeAccount obj) GHC.Base.<> ((Data.Aeson..=) "type" (paymentMethodDetailsType obj) GHC.Base.<> (Data.Aeson..=) "wechat" (paymentMethodDetailsWechat obj))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetails where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetails" (\obj -> (((((((((((((((((GHC.Base.pure PaymentMethodDetails GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_credit_transfer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "alipay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bancontact")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card_present")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "eps")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fpx")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "giropay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ideal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "klarna")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "multibanco")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "p24")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sepa_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sofort")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "stripe_account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "wechat"))

-- | Defines the data type for the schema payment_method_details_card
data PaymentMethodDetailsCard
  = PaymentMethodDetailsCard
      { -- | brand: Card brand. Can be \`amex\`, \`diners\`, \`discover\`, \`jcb\`, \`mastercard\`, \`unionpay\`, \`visa\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardBrand :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | checks: Check results by Card networks on Card address and CVC at time of payment.
        paymentMethodDetailsCardChecks :: (GHC.Maybe.Maybe PaymentMethodDetailsCardChecks'),
        -- | country: Two-letter ISO code representing the country of the card. You could use this attribute to get a sense of the international breakdown of cards you\'ve collected.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | exp_month: Two-digit number representing the card\'s expiration month.
        paymentMethodDetailsCardExpMonth :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | exp_year: Four-digit number representing the card\'s expiration year.
        paymentMethodDetailsCardExpYear :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | fingerprint: Uniquely identifies this particular card number. You can use this attribute to check whether two customers who\'ve signed up with you are using the same card number, for example.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardFingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardFunding :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | installments: Installment details for this payment (Mexico only).
        --
        -- For more information, see the [installments integration guide](https:\/\/stripe.com\/docs\/payments\/installments).
        paymentMethodDetailsCardInstallments :: (GHC.Maybe.Maybe PaymentMethodDetailsCardInstallments'),
        -- | last4: The last four digits of the card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | network: Identifies which network this charge was processed on. Can be \`amex\`, \`diners\`, \`discover\`, \`interac\`, \`jcb\`, \`mastercard\`, \`unionpay\`, \`visa\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardNetwork :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | three_d_secure: Populated if this transaction used 3D Secure authentication.
        paymentMethodDetailsCardThreeDSecure :: (GHC.Maybe.Maybe PaymentMethodDetailsCardThreeDSecure'),
        -- | wallet: If this Card is part of a card wallet, this contains the details of the card wallet.
        paymentMethodDetailsCardWallet :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWallet')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCard where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "brand" (paymentMethodDetailsCardBrand obj) : (Data.Aeson..=) "checks" (paymentMethodDetailsCardChecks obj) : (Data.Aeson..=) "country" (paymentMethodDetailsCardCountry obj) : (Data.Aeson..=) "exp_month" (paymentMethodDetailsCardExpMonth obj) : (Data.Aeson..=) "exp_year" (paymentMethodDetailsCardExpYear obj) : (Data.Aeson..=) "fingerprint" (paymentMethodDetailsCardFingerprint obj) : (Data.Aeson..=) "funding" (paymentMethodDetailsCardFunding obj) : (Data.Aeson..=) "installments" (paymentMethodDetailsCardInstallments obj) : (Data.Aeson..=) "last4" (paymentMethodDetailsCardLast4 obj) : (Data.Aeson..=) "network" (paymentMethodDetailsCardNetwork obj) : (Data.Aeson..=) "three_d_secure" (paymentMethodDetailsCardThreeDSecure obj) : (Data.Aeson..=) "wallet" (paymentMethodDetailsCardWallet obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "brand" (paymentMethodDetailsCardBrand obj) GHC.Base.<> ((Data.Aeson..=) "checks" (paymentMethodDetailsCardChecks obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentMethodDetailsCardCountry obj) GHC.Base.<> ((Data.Aeson..=) "exp_month" (paymentMethodDetailsCardExpMonth obj) GHC.Base.<> ((Data.Aeson..=) "exp_year" (paymentMethodDetailsCardExpYear obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (paymentMethodDetailsCardFingerprint obj) GHC.Base.<> ((Data.Aeson..=) "funding" (paymentMethodDetailsCardFunding obj) GHC.Base.<> ((Data.Aeson..=) "installments" (paymentMethodDetailsCardInstallments obj) GHC.Base.<> ((Data.Aeson..=) "last4" (paymentMethodDetailsCardLast4 obj) GHC.Base.<> ((Data.Aeson..=) "network" (paymentMethodDetailsCardNetwork obj) GHC.Base.<> ((Data.Aeson..=) "three_d_secure" (paymentMethodDetailsCardThreeDSecure obj) GHC.Base.<> (Data.Aeson..=) "wallet" (paymentMethodDetailsCardWallet obj))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCard where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCard" (\obj -> (((((((((((GHC.Base.pure PaymentMethodDetailsCard GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "brand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "checks")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "funding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "installments")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "network")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "three_d_secure")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "wallet"))

-- | Defines the data type for the schema payment_method_details_cardChecks\'
--
-- Check results by Card networks on Card address and CVC at time of payment.
data PaymentMethodDetailsCardChecks'
  = PaymentMethodDetailsCardChecks'
      { -- | address_line1_check: If a address line1 was provided, results of the check, one of \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardChecks'AddressLine1Check :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_postal_code_check: If a address postal code was provided, results of the check, one of \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardChecks'AddressPostalCodeCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | cvc_check: If a CVC was provided, results of the check, one of \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardChecks'CvcCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardChecks' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address_line1_check" (paymentMethodDetailsCardChecks'AddressLine1Check obj) : (Data.Aeson..=) "address_postal_code_check" (paymentMethodDetailsCardChecks'AddressPostalCodeCheck obj) : (Data.Aeson..=) "cvc_check" (paymentMethodDetailsCardChecks'CvcCheck obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address_line1_check" (paymentMethodDetailsCardChecks'AddressLine1Check obj) GHC.Base.<> ((Data.Aeson..=) "address_postal_code_check" (paymentMethodDetailsCardChecks'AddressPostalCodeCheck obj) GHC.Base.<> (Data.Aeson..=) "cvc_check" (paymentMethodDetailsCardChecks'CvcCheck obj)))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardChecks' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardChecks'" (\obj -> ((GHC.Base.pure PaymentMethodDetailsCardChecks' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_postal_code_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cvc_check"))

-- | Defines the data type for the schema payment_method_details_cardInstallments\'
--
-- Installment details for this payment (Mexico only).
--
-- For more information, see the [installments integration guide](https:\\\/\\\/stripe.com\\\/docs\\\/payments\\\/installments).
data PaymentMethodDetailsCardInstallments'
  = PaymentMethodDetailsCardInstallments'
      { -- | plan: Installment plan selected for the payment.
        paymentMethodDetailsCardInstallments'Plan :: (GHC.Maybe.Maybe PaymentMethodDetailsCardInstallments'Plan')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardInstallments' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "plan" (paymentMethodDetailsCardInstallments'Plan obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "plan" (paymentMethodDetailsCardInstallments'Plan obj))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardInstallments' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardInstallments'" (\obj -> GHC.Base.pure PaymentMethodDetailsCardInstallments' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "plan"))

-- | Defines the data type for the schema payment_method_details_cardInstallments\'Plan\'
--
-- Installment plan selected for the payment.
data PaymentMethodDetailsCardInstallments'Plan'
  = PaymentMethodDetailsCardInstallments'Plan'
      { -- | count: For \`fixed_count\` installment plans, this is the number of installment payments your customer will make to their credit card.
        paymentMethodDetailsCardInstallments'Plan'Count :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | interval: For \`fixed_count\` installment plans, this is the interval between installment payments your customer will make to their credit card.
        -- One of \`month\`.
        paymentMethodDetailsCardInstallments'Plan'Interval :: (GHC.Maybe.Maybe PaymentMethodDetailsCardInstallments'Plan'Interval'),
        -- | type: Type of installment plan, one of \`fixed_count\`.
        paymentMethodDetailsCardInstallments'Plan'Type :: (GHC.Maybe.Maybe PaymentMethodDetailsCardInstallments'Plan'Type')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardInstallments'Plan' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "count" (paymentMethodDetailsCardInstallments'Plan'Count obj) : (Data.Aeson..=) "interval" (paymentMethodDetailsCardInstallments'Plan'Interval obj) : (Data.Aeson..=) "type" (paymentMethodDetailsCardInstallments'Plan'Type obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "count" (paymentMethodDetailsCardInstallments'Plan'Count obj) GHC.Base.<> ((Data.Aeson..=) "interval" (paymentMethodDetailsCardInstallments'Plan'Interval obj) GHC.Base.<> (Data.Aeson..=) "type" (paymentMethodDetailsCardInstallments'Plan'Type obj)))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardInstallments'Plan' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardInstallments'Plan'" (\obj -> ((GHC.Base.pure PaymentMethodDetailsCardInstallments'Plan' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "count")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "interval")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type"))

-- | Defines the enum schema payment_method_details_cardInstallments\'Plan\'Interval\'
--
-- For \`fixed_count\` installment plans, this is the interval between installment payments your customer will make to their credit card.
-- One of \`month\`.
data PaymentMethodDetailsCardInstallments'Plan'Interval'
  = PaymentMethodDetailsCardInstallments'Plan'Interval'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentMethodDetailsCardInstallments'Plan'Interval'EnumTyped Data.Text.Internal.Text
  | PaymentMethodDetailsCardInstallments'Plan'Interval'EnumStringMonth
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentMethodDetailsCardInstallments'Plan'Interval' where
  toJSON (PaymentMethodDetailsCardInstallments'Plan'Interval'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodDetailsCardInstallments'Plan'Interval'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodDetailsCardInstallments'Plan'Interval'EnumStringMonth) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month"

instance Data.Aeson.FromJSON PaymentMethodDetailsCardInstallments'Plan'Interval' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month")
          then PaymentMethodDetailsCardInstallments'Plan'Interval'EnumStringMonth
          else PaymentMethodDetailsCardInstallments'Plan'Interval'EnumOther val
      )

-- | Defines the enum schema payment_method_details_cardInstallments\'Plan\'Type\'
--
-- Type of installment plan, one of \`fixed_count\`.
data PaymentMethodDetailsCardInstallments'Plan'Type'
  = PaymentMethodDetailsCardInstallments'Plan'Type'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentMethodDetailsCardInstallments'Plan'Type'EnumTyped Data.Text.Internal.Text
  | PaymentMethodDetailsCardInstallments'Plan'Type'EnumStringFixedCount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentMethodDetailsCardInstallments'Plan'Type' where
  toJSON (PaymentMethodDetailsCardInstallments'Plan'Type'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodDetailsCardInstallments'Plan'Type'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodDetailsCardInstallments'Plan'Type'EnumStringFixedCount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fixed_count"

instance Data.Aeson.FromJSON PaymentMethodDetailsCardInstallments'Plan'Type' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fixed_count")
          then PaymentMethodDetailsCardInstallments'Plan'Type'EnumStringFixedCount
          else PaymentMethodDetailsCardInstallments'Plan'Type'EnumOther val
      )

-- | Defines the data type for the schema payment_method_details_cardThree_d_secure\'
--
-- Populated if this transaction used 3D Secure authentication.
data PaymentMethodDetailsCardThreeDSecure'
  = PaymentMethodDetailsCardThreeDSecure'
      { -- | authenticated: Whether or not authentication was performed. 3D Secure will succeed without authentication when the card is not enrolled.
        paymentMethodDetailsCardThreeDSecure'Authenticated :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | succeeded: Whether or not 3D Secure succeeded.
        paymentMethodDetailsCardThreeDSecure'Succeeded :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | version: The version of 3D Secure that was used for this payment.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardThreeDSecure'Version :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardThreeDSecure' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "authenticated" (paymentMethodDetailsCardThreeDSecure'Authenticated obj) : (Data.Aeson..=) "succeeded" (paymentMethodDetailsCardThreeDSecure'Succeeded obj) : (Data.Aeson..=) "version" (paymentMethodDetailsCardThreeDSecure'Version obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "authenticated" (paymentMethodDetailsCardThreeDSecure'Authenticated obj) GHC.Base.<> ((Data.Aeson..=) "succeeded" (paymentMethodDetailsCardThreeDSecure'Succeeded obj) GHC.Base.<> (Data.Aeson..=) "version" (paymentMethodDetailsCardThreeDSecure'Version obj)))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardThreeDSecure' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardThreeDSecure'" (\obj -> ((GHC.Base.pure PaymentMethodDetailsCardThreeDSecure' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "authenticated")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "succeeded")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "version"))

-- | Defines the data type for the schema payment_method_details_cardWallet\'
--
-- If this Card is part of a card wallet, this contains the details of the card wallet.
data PaymentMethodDetailsCardWallet'
  = PaymentMethodDetailsCardWallet'
      { -- | amex_express_checkout:
        paymentMethodDetailsCardWallet'AmexExpressCheckout :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletAmexExpressCheckout),
        -- | apple_pay:
        paymentMethodDetailsCardWallet'ApplePay :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletApplePay),
        -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWallet'DynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | google_pay:
        paymentMethodDetailsCardWallet'GooglePay :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletGooglePay),
        -- | masterpass:
        paymentMethodDetailsCardWallet'Masterpass :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletMasterpass),
        -- | samsung_pay:
        paymentMethodDetailsCardWallet'SamsungPay :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletSamsungPay),
        -- | type: The type of the card wallet, one of \`amex_express_checkout\`, \`apple_pay\`, \`google_pay\`, \`masterpass\`, \`samsung_pay\`, or \`visa_checkout\`. An additional hash is included on the Wallet subhash with a name matching this value. It contains additional information specific to the card wallet type.
        paymentMethodDetailsCardWallet'Type :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWallet'Type'),
        -- | visa_checkout:
        paymentMethodDetailsCardWallet'VisaCheckout :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletVisaCheckout)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardWallet' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amex_express_checkout" (paymentMethodDetailsCardWallet'AmexExpressCheckout obj) : (Data.Aeson..=) "apple_pay" (paymentMethodDetailsCardWallet'ApplePay obj) : (Data.Aeson..=) "dynamic_last4" (paymentMethodDetailsCardWallet'DynamicLast4 obj) : (Data.Aeson..=) "google_pay" (paymentMethodDetailsCardWallet'GooglePay obj) : (Data.Aeson..=) "masterpass" (paymentMethodDetailsCardWallet'Masterpass obj) : (Data.Aeson..=) "samsung_pay" (paymentMethodDetailsCardWallet'SamsungPay obj) : (Data.Aeson..=) "type" (paymentMethodDetailsCardWallet'Type obj) : (Data.Aeson..=) "visa_checkout" (paymentMethodDetailsCardWallet'VisaCheckout obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amex_express_checkout" (paymentMethodDetailsCardWallet'AmexExpressCheckout obj) GHC.Base.<> ((Data.Aeson..=) "apple_pay" (paymentMethodDetailsCardWallet'ApplePay obj) GHC.Base.<> ((Data.Aeson..=) "dynamic_last4" (paymentMethodDetailsCardWallet'DynamicLast4 obj) GHC.Base.<> ((Data.Aeson..=) "google_pay" (paymentMethodDetailsCardWallet'GooglePay obj) GHC.Base.<> ((Data.Aeson..=) "masterpass" (paymentMethodDetailsCardWallet'Masterpass obj) GHC.Base.<> ((Data.Aeson..=) "samsung_pay" (paymentMethodDetailsCardWallet'SamsungPay obj) GHC.Base.<> ((Data.Aeson..=) "type" (paymentMethodDetailsCardWallet'Type obj) GHC.Base.<> (Data.Aeson..=) "visa_checkout" (paymentMethodDetailsCardWallet'VisaCheckout obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardWallet' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardWallet'" (\obj -> (((((((GHC.Base.pure PaymentMethodDetailsCardWallet' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amex_express_checkout")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "apple_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dynamic_last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "google_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "masterpass")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "samsung_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "visa_checkout"))

-- | Defines the enum schema payment_method_details_cardWallet\'Type\'
--
-- The type of the card wallet, one of \`amex_express_checkout\`, \`apple_pay\`, \`google_pay\`, \`masterpass\`, \`samsung_pay\`, or \`visa_checkout\`. An additional hash is included on the Wallet subhash with a name matching this value. It contains additional information specific to the card wallet type.
data PaymentMethodDetailsCardWallet'Type'
  = PaymentMethodDetailsCardWallet'Type'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentMethodDetailsCardWallet'Type'EnumTyped Data.Text.Internal.Text
  | PaymentMethodDetailsCardWallet'Type'EnumStringAmexExpressCheckout
  | PaymentMethodDetailsCardWallet'Type'EnumStringApplePay
  | PaymentMethodDetailsCardWallet'Type'EnumStringGooglePay
  | PaymentMethodDetailsCardWallet'Type'EnumStringMasterpass
  | PaymentMethodDetailsCardWallet'Type'EnumStringSamsungPay
  | PaymentMethodDetailsCardWallet'Type'EnumStringVisaCheckout
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentMethodDetailsCardWallet'Type' where
  toJSON (PaymentMethodDetailsCardWallet'Type'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodDetailsCardWallet'Type'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodDetailsCardWallet'Type'EnumStringAmexExpressCheckout) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amex_express_checkout"
  toJSON (PaymentMethodDetailsCardWallet'Type'EnumStringApplePay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "apple_pay"
  toJSON (PaymentMethodDetailsCardWallet'Type'EnumStringGooglePay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "google_pay"
  toJSON (PaymentMethodDetailsCardWallet'Type'EnumStringMasterpass) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masterpass"
  toJSON (PaymentMethodDetailsCardWallet'Type'EnumStringSamsungPay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "samsung_pay"
  toJSON (PaymentMethodDetailsCardWallet'Type'EnumStringVisaCheckout) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "visa_checkout"

instance Data.Aeson.FromJSON PaymentMethodDetailsCardWallet'Type' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amex_express_checkout")
          then PaymentMethodDetailsCardWallet'Type'EnumStringAmexExpressCheckout
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "apple_pay")
              then PaymentMethodDetailsCardWallet'Type'EnumStringApplePay
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "google_pay")
                  then PaymentMethodDetailsCardWallet'Type'EnumStringGooglePay
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masterpass")
                      then PaymentMethodDetailsCardWallet'Type'EnumStringMasterpass
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "samsung_pay")
                          then PaymentMethodDetailsCardWallet'Type'EnumStringSamsungPay
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "visa_checkout")
                              then PaymentMethodDetailsCardWallet'Type'EnumStringVisaCheckout
                              else PaymentMethodDetailsCardWallet'Type'EnumOther val
      )

-- | Defines the data type for the schema payment_method_details_card_installments
data PaymentMethodDetailsCardInstallments
  = PaymentMethodDetailsCardInstallments
      { -- | plan: Installment plan selected for the payment.
        paymentMethodDetailsCardInstallmentsPlan :: (GHC.Maybe.Maybe PaymentMethodDetailsCardInstallmentsPlan')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardInstallments where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "plan" (paymentMethodDetailsCardInstallmentsPlan obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "plan" (paymentMethodDetailsCardInstallmentsPlan obj))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardInstallments where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardInstallments" (\obj -> GHC.Base.pure PaymentMethodDetailsCardInstallments GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "plan"))

-- | Defines the data type for the schema payment_method_details_card_installmentsPlan\'
--
-- Installment plan selected for the payment.
data PaymentMethodDetailsCardInstallmentsPlan'
  = PaymentMethodDetailsCardInstallmentsPlan'
      { -- | count: For \`fixed_count\` installment plans, this is the number of installment payments your customer will make to their credit card.
        paymentMethodDetailsCardInstallmentsPlan'Count :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | interval: For \`fixed_count\` installment plans, this is the interval between installment payments your customer will make to their credit card.
        -- One of \`month\`.
        paymentMethodDetailsCardInstallmentsPlan'Interval :: (GHC.Maybe.Maybe PaymentMethodDetailsCardInstallmentsPlan'Interval'),
        -- | type: Type of installment plan, one of \`fixed_count\`.
        paymentMethodDetailsCardInstallmentsPlan'Type :: (GHC.Maybe.Maybe PaymentMethodDetailsCardInstallmentsPlan'Type')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardInstallmentsPlan' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "count" (paymentMethodDetailsCardInstallmentsPlan'Count obj) : (Data.Aeson..=) "interval" (paymentMethodDetailsCardInstallmentsPlan'Interval obj) : (Data.Aeson..=) "type" (paymentMethodDetailsCardInstallmentsPlan'Type obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "count" (paymentMethodDetailsCardInstallmentsPlan'Count obj) GHC.Base.<> ((Data.Aeson..=) "interval" (paymentMethodDetailsCardInstallmentsPlan'Interval obj) GHC.Base.<> (Data.Aeson..=) "type" (paymentMethodDetailsCardInstallmentsPlan'Type obj)))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardInstallmentsPlan' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardInstallmentsPlan'" (\obj -> ((GHC.Base.pure PaymentMethodDetailsCardInstallmentsPlan' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "count")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "interval")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type"))

-- | Defines the enum schema payment_method_details_card_installmentsPlan\'Interval\'
--
-- For \`fixed_count\` installment plans, this is the interval between installment payments your customer will make to their credit card.
-- One of \`month\`.
data PaymentMethodDetailsCardInstallmentsPlan'Interval'
  = PaymentMethodDetailsCardInstallmentsPlan'Interval'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentMethodDetailsCardInstallmentsPlan'Interval'EnumTyped Data.Text.Internal.Text
  | PaymentMethodDetailsCardInstallmentsPlan'Interval'EnumStringMonth
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentMethodDetailsCardInstallmentsPlan'Interval' where
  toJSON (PaymentMethodDetailsCardInstallmentsPlan'Interval'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodDetailsCardInstallmentsPlan'Interval'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodDetailsCardInstallmentsPlan'Interval'EnumStringMonth) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month"

instance Data.Aeson.FromJSON PaymentMethodDetailsCardInstallmentsPlan'Interval' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month")
          then PaymentMethodDetailsCardInstallmentsPlan'Interval'EnumStringMonth
          else PaymentMethodDetailsCardInstallmentsPlan'Interval'EnumOther val
      )

-- | Defines the enum schema payment_method_details_card_installmentsPlan\'Type\'
--
-- Type of installment plan, one of \`fixed_count\`.
data PaymentMethodDetailsCardInstallmentsPlan'Type'
  = PaymentMethodDetailsCardInstallmentsPlan'Type'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentMethodDetailsCardInstallmentsPlan'Type'EnumTyped Data.Text.Internal.Text
  | PaymentMethodDetailsCardInstallmentsPlan'Type'EnumStringFixedCount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentMethodDetailsCardInstallmentsPlan'Type' where
  toJSON (PaymentMethodDetailsCardInstallmentsPlan'Type'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodDetailsCardInstallmentsPlan'Type'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodDetailsCardInstallmentsPlan'Type'EnumStringFixedCount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fixed_count"

instance Data.Aeson.FromJSON PaymentMethodDetailsCardInstallmentsPlan'Type' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fixed_count")
          then PaymentMethodDetailsCardInstallmentsPlan'Type'EnumStringFixedCount
          else PaymentMethodDetailsCardInstallmentsPlan'Type'EnumOther val
      )

-- | Defines the data type for the schema payment_method_details_card_present
data PaymentMethodDetailsCardPresent
  = PaymentMethodDetailsCardPresent
      { -- | brand: Card brand. Can be \`amex\`, \`diners\`, \`discover\`, \`jcb\`, \`mastercard\`, \`unionpay\`, \`visa\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentBrand :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter ISO code representing the country of the card. You could use this attribute to get a sense of the international breakdown of cards you\'ve collected.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | emv_auth_data: Authorization response cryptogram.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentEmvAuthData :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | exp_month: Two-digit number representing the card\'s expiration month.
        paymentMethodDetailsCardPresentExpMonth :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | exp_year: Four-digit number representing the card\'s expiration year.
        paymentMethodDetailsCardPresentExpYear :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | fingerprint: Uniquely identifies this particular card number. You can use this attribute to check whether two customers who\'ve signed up with you are using the same card number, for example.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentFingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentFunding :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | generated_card: ID of a card PaymentMethod generated from the card_present PaymentMethod that may be attached to a Customer for future transactions. Only present if it was possible to generate a card PaymentMethod.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentGeneratedCard :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | last4: The last four digits of the card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | network: Identifies which network this charge was processed on. Can be \`amex\`, \`diners\`, \`discover\`, \`interac\`, \`jcb\`, \`mastercard\`, \`unionpay\`, \`visa\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentNetwork :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | read_method: How were card details read in this transaction. Can be contact_emv, contactless_emv, magnetic_stripe_fallback, magnetic_stripe_track2, or contactless_magstripe_mode
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentReadMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | receipt: A collection of fields required to be displayed on receipts. Only required for EMV transactions.
        paymentMethodDetailsCardPresentReceipt :: (GHC.Maybe.Maybe PaymentMethodDetailsCardPresentReceipt')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardPresent where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "brand" (paymentMethodDetailsCardPresentBrand obj) : (Data.Aeson..=) "country" (paymentMethodDetailsCardPresentCountry obj) : (Data.Aeson..=) "emv_auth_data" (paymentMethodDetailsCardPresentEmvAuthData obj) : (Data.Aeson..=) "exp_month" (paymentMethodDetailsCardPresentExpMonth obj) : (Data.Aeson..=) "exp_year" (paymentMethodDetailsCardPresentExpYear obj) : (Data.Aeson..=) "fingerprint" (paymentMethodDetailsCardPresentFingerprint obj) : (Data.Aeson..=) "funding" (paymentMethodDetailsCardPresentFunding obj) : (Data.Aeson..=) "generated_card" (paymentMethodDetailsCardPresentGeneratedCard obj) : (Data.Aeson..=) "last4" (paymentMethodDetailsCardPresentLast4 obj) : (Data.Aeson..=) "network" (paymentMethodDetailsCardPresentNetwork obj) : (Data.Aeson..=) "read_method" (paymentMethodDetailsCardPresentReadMethod obj) : (Data.Aeson..=) "receipt" (paymentMethodDetailsCardPresentReceipt obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "brand" (paymentMethodDetailsCardPresentBrand obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentMethodDetailsCardPresentCountry obj) GHC.Base.<> ((Data.Aeson..=) "emv_auth_data" (paymentMethodDetailsCardPresentEmvAuthData obj) GHC.Base.<> ((Data.Aeson..=) "exp_month" (paymentMethodDetailsCardPresentExpMonth obj) GHC.Base.<> ((Data.Aeson..=) "exp_year" (paymentMethodDetailsCardPresentExpYear obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (paymentMethodDetailsCardPresentFingerprint obj) GHC.Base.<> ((Data.Aeson..=) "funding" (paymentMethodDetailsCardPresentFunding obj) GHC.Base.<> ((Data.Aeson..=) "generated_card" (paymentMethodDetailsCardPresentGeneratedCard obj) GHC.Base.<> ((Data.Aeson..=) "last4" (paymentMethodDetailsCardPresentLast4 obj) GHC.Base.<> ((Data.Aeson..=) "network" (paymentMethodDetailsCardPresentNetwork obj) GHC.Base.<> ((Data.Aeson..=) "read_method" (paymentMethodDetailsCardPresentReadMethod obj) GHC.Base.<> (Data.Aeson..=) "receipt" (paymentMethodDetailsCardPresentReceipt obj))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardPresent where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardPresent" (\obj -> (((((((((((GHC.Base.pure PaymentMethodDetailsCardPresent GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "brand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "emv_auth_data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "funding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "generated_card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "network")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "read_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "receipt"))

-- | Defines the data type for the schema payment_method_details_card_presentReceipt\'
--
-- A collection of fields required to be displayed on receipts. Only required for EMV transactions.
data PaymentMethodDetailsCardPresentReceipt'
  = PaymentMethodDetailsCardPresentReceipt'
      { -- | application_cryptogram: EMV tag 9F26, cryptogram generated by the integrated circuit chip.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentReceipt'ApplicationCryptogram :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | application_preferred_name: Mnenomic of the Application Identifier.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentReceipt'ApplicationPreferredName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | authorization_code: Identifier for this transaction.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentReceipt'AuthorizationCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | authorization_response_code: EMV tag 8A. A code returned by the card issuer.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentReceipt'AuthorizationResponseCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | cardholder_verification_method: How the cardholder verified ownership of the card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentReceipt'CardholderVerificationMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | dedicated_file_name: EMV tag 84. Similar to the application identifier stored on the integrated circuit chip.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentReceipt'DedicatedFileName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | terminal_verification_results: The outcome of a series of EMV functions performed by the card reader.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentReceipt'TerminalVerificationResults :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | transaction_status_information: An indication of various EMV functions performed during the transaction.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardPresentReceipt'TransactionStatusInformation :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardPresentReceipt' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "application_cryptogram" (paymentMethodDetailsCardPresentReceipt'ApplicationCryptogram obj) : (Data.Aeson..=) "application_preferred_name" (paymentMethodDetailsCardPresentReceipt'ApplicationPreferredName obj) : (Data.Aeson..=) "authorization_code" (paymentMethodDetailsCardPresentReceipt'AuthorizationCode obj) : (Data.Aeson..=) "authorization_response_code" (paymentMethodDetailsCardPresentReceipt'AuthorizationResponseCode obj) : (Data.Aeson..=) "cardholder_verification_method" (paymentMethodDetailsCardPresentReceipt'CardholderVerificationMethod obj) : (Data.Aeson..=) "dedicated_file_name" (paymentMethodDetailsCardPresentReceipt'DedicatedFileName obj) : (Data.Aeson..=) "terminal_verification_results" (paymentMethodDetailsCardPresentReceipt'TerminalVerificationResults obj) : (Data.Aeson..=) "transaction_status_information" (paymentMethodDetailsCardPresentReceipt'TransactionStatusInformation obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "application_cryptogram" (paymentMethodDetailsCardPresentReceipt'ApplicationCryptogram obj) GHC.Base.<> ((Data.Aeson..=) "application_preferred_name" (paymentMethodDetailsCardPresentReceipt'ApplicationPreferredName obj) GHC.Base.<> ((Data.Aeson..=) "authorization_code" (paymentMethodDetailsCardPresentReceipt'AuthorizationCode obj) GHC.Base.<> ((Data.Aeson..=) "authorization_response_code" (paymentMethodDetailsCardPresentReceipt'AuthorizationResponseCode obj) GHC.Base.<> ((Data.Aeson..=) "cardholder_verification_method" (paymentMethodDetailsCardPresentReceipt'CardholderVerificationMethod obj) GHC.Base.<> ((Data.Aeson..=) "dedicated_file_name" (paymentMethodDetailsCardPresentReceipt'DedicatedFileName obj) GHC.Base.<> ((Data.Aeson..=) "terminal_verification_results" (paymentMethodDetailsCardPresentReceipt'TerminalVerificationResults obj) GHC.Base.<> (Data.Aeson..=) "transaction_status_information" (paymentMethodDetailsCardPresentReceipt'TransactionStatusInformation obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardPresentReceipt' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardPresentReceipt'" (\obj -> (((((((GHC.Base.pure PaymentMethodDetailsCardPresentReceipt' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "application_cryptogram")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "application_preferred_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "authorization_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "authorization_response_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cardholder_verification_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dedicated_file_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "terminal_verification_results")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transaction_status_information"))

-- | Defines the data type for the schema payment_method_details_card_wallet
data PaymentMethodDetailsCardWallet
  = PaymentMethodDetailsCardWallet
      { -- | amex_express_checkout:
        paymentMethodDetailsCardWalletAmexExpressCheckout :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletAmexExpressCheckout),
        -- | apple_pay:
        paymentMethodDetailsCardWalletApplePay :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletApplePay),
        -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletDynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | google_pay:
        paymentMethodDetailsCardWalletGooglePay :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletGooglePay),
        -- | masterpass:
        paymentMethodDetailsCardWalletMasterpass :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletMasterpass),
        -- | samsung_pay:
        paymentMethodDetailsCardWalletSamsungPay :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletSamsungPay),
        -- | type: The type of the card wallet, one of \`amex_express_checkout\`, \`apple_pay\`, \`google_pay\`, \`masterpass\`, \`samsung_pay\`, or \`visa_checkout\`. An additional hash is included on the Wallet subhash with a name matching this value. It contains additional information specific to the card wallet type.
        paymentMethodDetailsCardWalletType :: PaymentMethodDetailsCardWalletType',
        -- | visa_checkout:
        paymentMethodDetailsCardWalletVisaCheckout :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletVisaCheckout)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardWallet where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amex_express_checkout" (paymentMethodDetailsCardWalletAmexExpressCheckout obj) : (Data.Aeson..=) "apple_pay" (paymentMethodDetailsCardWalletApplePay obj) : (Data.Aeson..=) "dynamic_last4" (paymentMethodDetailsCardWalletDynamicLast4 obj) : (Data.Aeson..=) "google_pay" (paymentMethodDetailsCardWalletGooglePay obj) : (Data.Aeson..=) "masterpass" (paymentMethodDetailsCardWalletMasterpass obj) : (Data.Aeson..=) "samsung_pay" (paymentMethodDetailsCardWalletSamsungPay obj) : (Data.Aeson..=) "type" (paymentMethodDetailsCardWalletType obj) : (Data.Aeson..=) "visa_checkout" (paymentMethodDetailsCardWalletVisaCheckout obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amex_express_checkout" (paymentMethodDetailsCardWalletAmexExpressCheckout obj) GHC.Base.<> ((Data.Aeson..=) "apple_pay" (paymentMethodDetailsCardWalletApplePay obj) GHC.Base.<> ((Data.Aeson..=) "dynamic_last4" (paymentMethodDetailsCardWalletDynamicLast4 obj) GHC.Base.<> ((Data.Aeson..=) "google_pay" (paymentMethodDetailsCardWalletGooglePay obj) GHC.Base.<> ((Data.Aeson..=) "masterpass" (paymentMethodDetailsCardWalletMasterpass obj) GHC.Base.<> ((Data.Aeson..=) "samsung_pay" (paymentMethodDetailsCardWalletSamsungPay obj) GHC.Base.<> ((Data.Aeson..=) "type" (paymentMethodDetailsCardWalletType obj) GHC.Base.<> (Data.Aeson..=) "visa_checkout" (paymentMethodDetailsCardWalletVisaCheckout obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardWallet where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardWallet" (\obj -> (((((((GHC.Base.pure PaymentMethodDetailsCardWallet GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amex_express_checkout")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "apple_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dynamic_last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "google_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "masterpass")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "samsung_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "visa_checkout"))

-- | Defines the enum schema payment_method_details_card_walletType\'
--
-- The type of the card wallet, one of \`amex_express_checkout\`, \`apple_pay\`, \`google_pay\`, \`masterpass\`, \`samsung_pay\`, or \`visa_checkout\`. An additional hash is included on the Wallet subhash with a name matching this value. It contains additional information specific to the card wallet type.
data PaymentMethodDetailsCardWalletType'
  = PaymentMethodDetailsCardWalletType'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentMethodDetailsCardWalletType'EnumTyped Data.Text.Internal.Text
  | PaymentMethodDetailsCardWalletType'EnumStringAmexExpressCheckout
  | PaymentMethodDetailsCardWalletType'EnumStringApplePay
  | PaymentMethodDetailsCardWalletType'EnumStringGooglePay
  | PaymentMethodDetailsCardWalletType'EnumStringMasterpass
  | PaymentMethodDetailsCardWalletType'EnumStringSamsungPay
  | PaymentMethodDetailsCardWalletType'EnumStringVisaCheckout
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentMethodDetailsCardWalletType' where
  toJSON (PaymentMethodDetailsCardWalletType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodDetailsCardWalletType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodDetailsCardWalletType'EnumStringAmexExpressCheckout) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amex_express_checkout"
  toJSON (PaymentMethodDetailsCardWalletType'EnumStringApplePay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "apple_pay"
  toJSON (PaymentMethodDetailsCardWalletType'EnumStringGooglePay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "google_pay"
  toJSON (PaymentMethodDetailsCardWalletType'EnumStringMasterpass) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masterpass"
  toJSON (PaymentMethodDetailsCardWalletType'EnumStringSamsungPay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "samsung_pay"
  toJSON (PaymentMethodDetailsCardWalletType'EnumStringVisaCheckout) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "visa_checkout"

instance Data.Aeson.FromJSON PaymentMethodDetailsCardWalletType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "amex_express_checkout")
          then PaymentMethodDetailsCardWalletType'EnumStringAmexExpressCheckout
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "apple_pay")
              then PaymentMethodDetailsCardWalletType'EnumStringApplePay
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "google_pay")
                  then PaymentMethodDetailsCardWalletType'EnumStringGooglePay
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "masterpass")
                      then PaymentMethodDetailsCardWalletType'EnumStringMasterpass
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "samsung_pay")
                          then PaymentMethodDetailsCardWalletType'EnumStringSamsungPay
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "visa_checkout")
                              then PaymentMethodDetailsCardWalletType'EnumStringVisaCheckout
                              else PaymentMethodDetailsCardWalletType'EnumOther val
      )

-- | Defines the data type for the schema payment_method_details_card_wallet_masterpass
data PaymentMethodDetailsCardWalletMasterpass
  = PaymentMethodDetailsCardWalletMasterpass
      { -- | billing_address: Owner\'s verified billing address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        paymentMethodDetailsCardWalletMasterpassBillingAddress :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletMasterpassBillingAddress'),
        -- | email: Owner\'s verified email. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletMasterpassEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Owner\'s verified full name. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletMasterpassName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | shipping_address: Owner\'s verified shipping address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        paymentMethodDetailsCardWalletMasterpassShippingAddress :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletMasterpassShippingAddress')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardWalletMasterpass where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "billing_address" (paymentMethodDetailsCardWalletMasterpassBillingAddress obj) : (Data.Aeson..=) "email" (paymentMethodDetailsCardWalletMasterpassEmail obj) : (Data.Aeson..=) "name" (paymentMethodDetailsCardWalletMasterpassName obj) : (Data.Aeson..=) "shipping_address" (paymentMethodDetailsCardWalletMasterpassShippingAddress obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "billing_address" (paymentMethodDetailsCardWalletMasterpassBillingAddress obj) GHC.Base.<> ((Data.Aeson..=) "email" (paymentMethodDetailsCardWalletMasterpassEmail obj) GHC.Base.<> ((Data.Aeson..=) "name" (paymentMethodDetailsCardWalletMasterpassName obj) GHC.Base.<> (Data.Aeson..=) "shipping_address" (paymentMethodDetailsCardWalletMasterpassShippingAddress obj))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardWalletMasterpass where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardWalletMasterpass" (\obj -> (((GHC.Base.pure PaymentMethodDetailsCardWalletMasterpass GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping_address"))

-- | Defines the data type for the schema payment_method_details_card_wallet_masterpassBilling_address\'
--
-- Owner\\\'s verified billing address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
data PaymentMethodDetailsCardWalletMasterpassBillingAddress'
  = PaymentMethodDetailsCardWalletMasterpassBillingAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletMasterpassBillingAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletMasterpassBillingAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletMasterpassBillingAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletMasterpassBillingAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletMasterpassBillingAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletMasterpassBillingAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardWalletMasterpassBillingAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (paymentMethodDetailsCardWalletMasterpassBillingAddress'City obj) : (Data.Aeson..=) "country" (paymentMethodDetailsCardWalletMasterpassBillingAddress'Country obj) : (Data.Aeson..=) "line1" (paymentMethodDetailsCardWalletMasterpassBillingAddress'Line1 obj) : (Data.Aeson..=) "line2" (paymentMethodDetailsCardWalletMasterpassBillingAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (paymentMethodDetailsCardWalletMasterpassBillingAddress'PostalCode obj) : (Data.Aeson..=) "state" (paymentMethodDetailsCardWalletMasterpassBillingAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (paymentMethodDetailsCardWalletMasterpassBillingAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentMethodDetailsCardWalletMasterpassBillingAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (paymentMethodDetailsCardWalletMasterpassBillingAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (paymentMethodDetailsCardWalletMasterpassBillingAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (paymentMethodDetailsCardWalletMasterpassBillingAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (paymentMethodDetailsCardWalletMasterpassBillingAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardWalletMasterpassBillingAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardWalletMasterpassBillingAddress'" (\obj -> (((((GHC.Base.pure PaymentMethodDetailsCardWalletMasterpassBillingAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema payment_method_details_card_wallet_masterpassShipping_address\'
--
-- Owner\\\'s verified shipping address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
data PaymentMethodDetailsCardWalletMasterpassShippingAddress'
  = PaymentMethodDetailsCardWalletMasterpassShippingAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletMasterpassShippingAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletMasterpassShippingAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletMasterpassShippingAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletMasterpassShippingAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletMasterpassShippingAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletMasterpassShippingAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardWalletMasterpassShippingAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (paymentMethodDetailsCardWalletMasterpassShippingAddress'City obj) : (Data.Aeson..=) "country" (paymentMethodDetailsCardWalletMasterpassShippingAddress'Country obj) : (Data.Aeson..=) "line1" (paymentMethodDetailsCardWalletMasterpassShippingAddress'Line1 obj) : (Data.Aeson..=) "line2" (paymentMethodDetailsCardWalletMasterpassShippingAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (paymentMethodDetailsCardWalletMasterpassShippingAddress'PostalCode obj) : (Data.Aeson..=) "state" (paymentMethodDetailsCardWalletMasterpassShippingAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (paymentMethodDetailsCardWalletMasterpassShippingAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentMethodDetailsCardWalletMasterpassShippingAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (paymentMethodDetailsCardWalletMasterpassShippingAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (paymentMethodDetailsCardWalletMasterpassShippingAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (paymentMethodDetailsCardWalletMasterpassShippingAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (paymentMethodDetailsCardWalletMasterpassShippingAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardWalletMasterpassShippingAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardWalletMasterpassShippingAddress'" (\obj -> (((((GHC.Base.pure PaymentMethodDetailsCardWalletMasterpassShippingAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema payment_method_details_card_wallet_visa_checkout
data PaymentMethodDetailsCardWalletVisaCheckout
  = PaymentMethodDetailsCardWalletVisaCheckout
      { -- | billing_address: Owner\'s verified billing address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        paymentMethodDetailsCardWalletVisaCheckoutBillingAddress :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletVisaCheckoutBillingAddress'),
        -- | email: Owner\'s verified email. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletVisaCheckoutEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Owner\'s verified full name. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletVisaCheckoutName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | shipping_address: Owner\'s verified shipping address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
        paymentMethodDetailsCardWalletVisaCheckoutShippingAddress :: (GHC.Maybe.Maybe PaymentMethodDetailsCardWalletVisaCheckoutShippingAddress')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardWalletVisaCheckout where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "billing_address" (paymentMethodDetailsCardWalletVisaCheckoutBillingAddress obj) : (Data.Aeson..=) "email" (paymentMethodDetailsCardWalletVisaCheckoutEmail obj) : (Data.Aeson..=) "name" (paymentMethodDetailsCardWalletVisaCheckoutName obj) : (Data.Aeson..=) "shipping_address" (paymentMethodDetailsCardWalletVisaCheckoutShippingAddress obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "billing_address" (paymentMethodDetailsCardWalletVisaCheckoutBillingAddress obj) GHC.Base.<> ((Data.Aeson..=) "email" (paymentMethodDetailsCardWalletVisaCheckoutEmail obj) GHC.Base.<> ((Data.Aeson..=) "name" (paymentMethodDetailsCardWalletVisaCheckoutName obj) GHC.Base.<> (Data.Aeson..=) "shipping_address" (paymentMethodDetailsCardWalletVisaCheckoutShippingAddress obj))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardWalletVisaCheckout where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardWalletVisaCheckout" (\obj -> (((GHC.Base.pure PaymentMethodDetailsCardWalletVisaCheckout GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shipping_address"))

-- | Defines the data type for the schema payment_method_details_card_wallet_visa_checkoutBilling_address\'
--
-- Owner\\\'s verified billing address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
data PaymentMethodDetailsCardWalletVisaCheckoutBillingAddress'
  = PaymentMethodDetailsCardWalletVisaCheckoutBillingAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardWalletVisaCheckoutBillingAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'City obj) : (Data.Aeson..=) "country" (paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'Country obj) : (Data.Aeson..=) "line1" (paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'Line1 obj) : (Data.Aeson..=) "line2" (paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'PostalCode obj) : (Data.Aeson..=) "state" (paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (paymentMethodDetailsCardWalletVisaCheckoutBillingAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardWalletVisaCheckoutBillingAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardWalletVisaCheckoutBillingAddress'" (\obj -> (((((GHC.Base.pure PaymentMethodDetailsCardWalletVisaCheckoutBillingAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema payment_method_details_card_wallet_visa_checkoutShipping_address\'
--
-- Owner\\\'s verified shipping address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
data PaymentMethodDetailsCardWalletVisaCheckoutShippingAddress'
  = PaymentMethodDetailsCardWalletVisaCheckoutShippingAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodDetailsCardWalletVisaCheckoutShippingAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'City obj) : (Data.Aeson..=) "country" (paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'Country obj) : (Data.Aeson..=) "line1" (paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'Line1 obj) : (Data.Aeson..=) "line2" (paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'PostalCode obj) : (Data.Aeson..=) "state" (paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (paymentMethodDetailsCardWalletVisaCheckoutShippingAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodDetailsCardWalletVisaCheckoutShippingAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodDetailsCardWalletVisaCheckoutShippingAddress'" (\obj -> (((((GHC.Base.pure PaymentMethodDetailsCardWalletVisaCheckoutShippingAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema payment_method_options_card_installments
data PaymentMethodOptionsCardInstallments
  = PaymentMethodOptionsCardInstallments
      { -- | available_plans: Installment plans that may be selected for this PaymentIntent.
        paymentMethodOptionsCardInstallmentsAvailablePlans :: (GHC.Maybe.Maybe ([] PaymentMethodDetailsCardInstallmentsPlan)),
        -- | enabled: Whether Installments are enabled for this PaymentIntent.
        paymentMethodOptionsCardInstallmentsEnabled :: GHC.Types.Bool,
        -- | plan: Installment plan selected for this PaymentIntent.
        paymentMethodOptionsCardInstallmentsPlan :: (GHC.Maybe.Maybe PaymentMethodOptionsCardInstallmentsPlan')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodOptionsCardInstallments where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "available_plans" (paymentMethodOptionsCardInstallmentsAvailablePlans obj) : (Data.Aeson..=) "enabled" (paymentMethodOptionsCardInstallmentsEnabled obj) : (Data.Aeson..=) "plan" (paymentMethodOptionsCardInstallmentsPlan obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "available_plans" (paymentMethodOptionsCardInstallmentsAvailablePlans obj) GHC.Base.<> ((Data.Aeson..=) "enabled" (paymentMethodOptionsCardInstallmentsEnabled obj) GHC.Base.<> (Data.Aeson..=) "plan" (paymentMethodOptionsCardInstallmentsPlan obj)))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodOptionsCardInstallments where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodOptionsCardInstallments" (\obj -> ((GHC.Base.pure PaymentMethodOptionsCardInstallments GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "available_plans")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "enabled")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "plan"))

-- | Defines the data type for the schema payment_method_options_card_installmentsPlan\'
--
-- Installment plan selected for this PaymentIntent.
data PaymentMethodOptionsCardInstallmentsPlan'
  = PaymentMethodOptionsCardInstallmentsPlan'
      { -- | count: For \`fixed_count\` installment plans, this is the number of installment payments your customer will make to their credit card.
        paymentMethodOptionsCardInstallmentsPlan'Count :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | interval: For \`fixed_count\` installment plans, this is the interval between installment payments your customer will make to their credit card.
        -- One of \`month\`.
        paymentMethodOptionsCardInstallmentsPlan'Interval :: (GHC.Maybe.Maybe PaymentMethodOptionsCardInstallmentsPlan'Interval'),
        -- | type: Type of installment plan, one of \`fixed_count\`.
        paymentMethodOptionsCardInstallmentsPlan'Type :: (GHC.Maybe.Maybe PaymentMethodOptionsCardInstallmentsPlan'Type')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentMethodOptionsCardInstallmentsPlan' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "count" (paymentMethodOptionsCardInstallmentsPlan'Count obj) : (Data.Aeson..=) "interval" (paymentMethodOptionsCardInstallmentsPlan'Interval obj) : (Data.Aeson..=) "type" (paymentMethodOptionsCardInstallmentsPlan'Type obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "count" (paymentMethodOptionsCardInstallmentsPlan'Count obj) GHC.Base.<> ((Data.Aeson..=) "interval" (paymentMethodOptionsCardInstallmentsPlan'Interval obj) GHC.Base.<> (Data.Aeson..=) "type" (paymentMethodOptionsCardInstallmentsPlan'Type obj)))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodOptionsCardInstallmentsPlan' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodOptionsCardInstallmentsPlan'" (\obj -> ((GHC.Base.pure PaymentMethodOptionsCardInstallmentsPlan' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "count")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "interval")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type"))

-- | Defines the enum schema payment_method_options_card_installmentsPlan\'Interval\'
--
-- For \`fixed_count\` installment plans, this is the interval between installment payments your customer will make to their credit card.
-- One of \`month\`.
data PaymentMethodOptionsCardInstallmentsPlan'Interval'
  = PaymentMethodOptionsCardInstallmentsPlan'Interval'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentMethodOptionsCardInstallmentsPlan'Interval'EnumTyped Data.Text.Internal.Text
  | PaymentMethodOptionsCardInstallmentsPlan'Interval'EnumStringMonth
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentMethodOptionsCardInstallmentsPlan'Interval' where
  toJSON (PaymentMethodOptionsCardInstallmentsPlan'Interval'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodOptionsCardInstallmentsPlan'Interval'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodOptionsCardInstallmentsPlan'Interval'EnumStringMonth) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month"

instance Data.Aeson.FromJSON PaymentMethodOptionsCardInstallmentsPlan'Interval' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month")
          then PaymentMethodOptionsCardInstallmentsPlan'Interval'EnumStringMonth
          else PaymentMethodOptionsCardInstallmentsPlan'Interval'EnumOther val
      )

-- | Defines the enum schema payment_method_options_card_installmentsPlan\'Type\'
--
-- Type of installment plan, one of \`fixed_count\`.
data PaymentMethodOptionsCardInstallmentsPlan'Type'
  = PaymentMethodOptionsCardInstallmentsPlan'Type'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentMethodOptionsCardInstallmentsPlan'Type'EnumTyped Data.Text.Internal.Text
  | PaymentMethodOptionsCardInstallmentsPlan'Type'EnumStringFixedCount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentMethodOptionsCardInstallmentsPlan'Type' where
  toJSON (PaymentMethodOptionsCardInstallmentsPlan'Type'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodOptionsCardInstallmentsPlan'Type'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentMethodOptionsCardInstallmentsPlan'Type'EnumStringFixedCount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fixed_count"

instance Data.Aeson.FromJSON PaymentMethodOptionsCardInstallmentsPlan'Type' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "fixed_count")
          then PaymentMethodOptionsCardInstallmentsPlan'Type'EnumStringFixedCount
          else PaymentMethodOptionsCardInstallmentsPlan'Type'EnumOther val
      )

-- | Defines the data type for the schema payment_source
data PaymentSource
  = PaymentSource
      { -- | account: The ID of the account that the bank account is associated with.
        paymentSourceAccount :: (GHC.Maybe.Maybe PaymentSourceAccount'Variants),
        -- | account_holder_name: The name of the person or business that owns the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceAccountHolderName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | account_holder_type: The type of entity that holds the account. This can be either \`individual\` or \`company\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceAccountHolderType :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | ach_credit_transfer
        paymentSourceAchCreditTransfer :: (GHC.Maybe.Maybe SourceTypeAchCreditTransfer),
        -- | ach_debit
        paymentSourceAchDebit :: (GHC.Maybe.Maybe SourceTypeAchDebit),
        -- | active: True when this bitcoin receiver has received a non-zero amount of bitcoin.
        paymentSourceActive :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | address_city: City\/District\/Suburb\/Town\/Village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceAddressCity :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_country: Billing address country, if provided when creating card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceAddressCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1: Address line 1 (Street address\/PO Box\/Company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceAddressLine1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1_check: If \`address_line1\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceAddressLine1Check :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line2: Address line 2 (Apartment\/Suite\/Unit\/Building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceAddressLine2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_state: State\/County\/Province\/Region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceAddressState :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceAddressZip :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip_check: If \`address_zip\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceAddressZipCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | alipay
        paymentSourceAlipay :: (GHC.Maybe.Maybe SourceTypeAlipay),
        -- | amount: The amount of \`currency\` that you are collecting as payment.
        paymentSourceAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | amount_received: The amount of \`currency\` to which \`bitcoin_amount_received\` has been converted.
        paymentSourceAmountReceived :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | available_payout_methods: A set of available payout methods for this card. Will be either \`[\"standard\"]\` or \`[\"standard\", \"instant\"]\`. Only values from this set should be passed as the \`method\` when creating a transfer.
        paymentSourceAvailablePayoutMethods :: (GHC.Maybe.Maybe ([] PaymentSourceAvailablePayoutMethods')),
        -- | bancontact
        paymentSourceBancontact :: (GHC.Maybe.Maybe SourceTypeBancontact),
        -- | bank_name: Name of the bank associated with the routing number (e.g., \`WELLS FARGO\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBankName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | bitcoin_amount: The amount of bitcoin that the customer should send to fill the receiver. The \`bitcoin_amount\` is denominated in Satoshi: there are 10^8 Satoshi in one bitcoin.
        paymentSourceBitcoinAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | bitcoin_amount_received: The amount of bitcoin that has been sent by the customer to this receiver.
        paymentSourceBitcoinAmountReceived :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | bitcoin_uri: This URI can be displayed to the customer as a clickable link (to activate their bitcoin client) or as a QR code (for mobile wallets).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBitcoinUri :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | brand: Card brand. Can be \`American Express\`, \`Diners Club\`, \`Discover\`, \`JCB\`, \`MasterCard\`, \`UnionPay\`, \`Visa\`, or \`Unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBrand :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | business_profile: Business information about the account.
        paymentSourceBusinessProfile :: (GHC.Maybe.Maybe PaymentSourceBusinessProfile'),
        -- | business_type: The business type.
        paymentSourceBusinessType :: (GHC.Maybe.Maybe PaymentSourceBusinessType'),
        -- | capabilities:
        paymentSourceCapabilities :: (GHC.Maybe.Maybe AccountCapabilities),
        -- | card
        paymentSourceCard :: (GHC.Maybe.Maybe SourceTypeCard),
        -- | card_present
        paymentSourceCardPresent :: (GHC.Maybe.Maybe SourceTypeCardPresent),
        -- | charges_enabled: Whether the account can create live charges.
        paymentSourceChargesEnabled :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | client_secret: The client secret of the source. Used for client-side retrieval using a publishable key.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceClientSecret :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | code_verification:
        paymentSourceCodeVerification :: (GHC.Maybe.Maybe SourceCodeVerificationFlow),
        -- | company:
        paymentSourceCompany :: (GHC.Maybe.Maybe LegalEntityCompany),
        -- | country: The account\'s country.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        paymentSourceCreated :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/payouts) paid out to the bank account.
        paymentSourceCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer: The ID of the customer associated with this Alipay Account.
        paymentSourceCustomer :: (GHC.Maybe.Maybe PaymentSourceCustomer'Variants),
        -- | cvc_check: If a CVC was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceCvcCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | default_currency: Three-letter ISO currency code representing the default currency for the account. This must be a currency that [Stripe supports in the account\'s country](https:\/\/stripe.com\/docs\/payouts).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceDefaultCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | default_for_currency: Whether this bank account is the default external account for its currency.
        paymentSourceDefaultForCurrency :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | details_submitted: Whether account details have been submitted. Standard accounts cannot receive payouts before this is true.
        paymentSourceDetailsSubmitted :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceDynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | email: The primary user\'s email address.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | eps
        paymentSourceEps :: (GHC.Maybe.Maybe SourceTypeEps),
        -- | exp_month: Two-digit number representing the card\'s expiration month.
        paymentSourceExpMonth :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | exp_year: Four-digit number representing the card\'s expiration year.
        paymentSourceExpYear :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | external_accounts: External accounts (bank accounts and debit cards) currently attached to this account
        paymentSourceExternalAccounts :: (GHC.Maybe.Maybe PaymentSourceExternalAccounts'),
        -- | filled: This flag is initially false and updates to true when the customer sends the \`bitcoin_amount\` to this receiver.
        paymentSourceFilled :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | fingerprint: Uniquely identifies the account and will be the same across all Alipay account objects that are linked to the same Alipay account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceFingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | flow: The authentication \`flow\` of the source. \`flow\` is one of \`redirect\`, \`receiver\`, \`code_verification\`, \`none\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceFlow :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceFunding :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | giropay
        paymentSourceGiropay :: (GHC.Maybe.Maybe SourceTypeGiropay),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceId :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | ideal
        paymentSourceIdeal :: (GHC.Maybe.Maybe SourceTypeIdeal),
        -- | inbound_address: A bitcoin address that is specific to this receiver. The customer can send bitcoin to this address to fill the receiver.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceInboundAddress :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | individual: This is an object representing a person associated with a Stripe account.
        --
        -- Related guide: [Handling Identity Verification with the API](https:\/\/stripe.com\/docs\/connect\/identity-verification-api\#person-information).
        paymentSourceIndividual :: (GHC.Maybe.Maybe Person),
        -- | klarna
        paymentSourceKlarna :: (GHC.Maybe.Maybe SourceTypeKlarna),
        -- | last4: The last four digits of the bank account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceLast4 :: (GHC.Maybe.Maybe 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.
        paymentSourceLivemode :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        paymentSourceMetadata :: (GHC.Maybe.Maybe PaymentSourceMetadata'),
        -- | multibanco
        paymentSourceMultibanco :: (GHC.Maybe.Maybe SourceTypeMultibanco),
        -- | name: Cardholder name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        paymentSourceObject :: (GHC.Maybe.Maybe PaymentSourceObject'),
        -- | owner: Information about the owner of the payment instrument that may be used or required by particular source types.
        paymentSourceOwner :: (GHC.Maybe.Maybe PaymentSourceOwner'),
        -- | p24
        paymentSourceP24 :: (GHC.Maybe.Maybe SourceTypeP24),
        -- | payment: The ID of the payment created from the receiver, if any. Hidden when viewing the receiver with a publishable key.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourcePayment :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | payment_amount: If the Alipay account object is not reusable, the exact amount that you can create a charge for.
        paymentSourcePaymentAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | payment_currency: If the Alipay account object is not reusable, the exact currency that you can create a charge for.
        paymentSourcePaymentCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | payouts_enabled: Whether Stripe can send payouts to this account.
        paymentSourcePayoutsEnabled :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | receiver:
        paymentSourceReceiver :: (GHC.Maybe.Maybe SourceReceiverFlow),
        -- | recipient: The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
        paymentSourceRecipient :: (GHC.Maybe.Maybe PaymentSourceRecipient'Variants),
        -- | redirect:
        paymentSourceRedirect :: (GHC.Maybe.Maybe SourceRedirectFlow),
        -- | refund_address: The refund address of this bitcoin receiver.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceRefundAddress :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | requirements:
        paymentSourceRequirements :: (GHC.Maybe.Maybe AccountRequirements),
        -- | reusable: True if you can create multiple payments using this account. If the account is reusable, then you can freely choose the amount of each payment.
        paymentSourceReusable :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | routing_number: The routing transit number for the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceRoutingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | sepa_debit
        paymentSourceSepaDebit :: (GHC.Maybe.Maybe SourceTypeSepaDebit),
        -- | settings: Options for customizing how the account functions within Stripe.
        paymentSourceSettings :: (GHC.Maybe.Maybe PaymentSourceSettings'),
        -- | sofort
        paymentSourceSofort :: (GHC.Maybe.Maybe SourceTypeSofort),
        -- | source_order:
        paymentSourceSourceOrder :: (GHC.Maybe.Maybe SourceOrder),
        -- | statement_descriptor: Extra information about a source. This will appear on your customer\'s statement every time you charge the source.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceStatementDescriptor :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: For bank accounts, possible values are \`new\`, \`validated\`, \`verified\`, \`verification_failed\`, or \`errored\`. A bank account that hasn\'t had any activity or validation performed is \`new\`. If Stripe can determine that the bank account exists, its status will be \`validated\`. Note that there often isn’t enough information to know (e.g., for smaller credit unions), and the validation is not always run. If customer bank account verification has succeeded, the bank account status will be \`verified\`. If the verification failed for any reason, such as microdeposit failure, the status will be \`verification_failed\`. If a transfer sent to this bank account fails, we\'ll set the status to \`errored\` and will not continue to send transfers until the bank details are updated.
        --
        -- For external accounts, possible values are \`new\` and \`errored\`. Validations aren\'t run against external accounts because they\'re only used for payouts. This means the other statuses don\'t apply. If a transfer fails, the status is set to \`errored\` and transfers are stopped until account details are updated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceStatus :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | three_d_secure
        paymentSourceThreeDSecure :: (GHC.Maybe.Maybe SourceTypeThreeDSecure),
        -- | tokenization_method: If the card number is tokenized, this is the method that was used. Can be \`amex_express_checkout\`, \`android_pay\` (includes Google Pay), \`apple_pay\`, \`masterpass\`, \`visa_checkout\`, or null.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceTokenizationMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | tos_acceptance:
        paymentSourceTosAcceptance :: (GHC.Maybe.Maybe AccountTosAcceptance),
        -- | transactions: A list with one entry for each time that the customer sent bitcoin to the receiver. Hidden when viewing the receiver with a publishable key.
        paymentSourceTransactions :: (GHC.Maybe.Maybe PaymentSourceTransactions'),
        -- | type: The Stripe account type. Can be \`standard\`, \`express\`, or \`custom\`.
        paymentSourceType :: (GHC.Maybe.Maybe PaymentSourceType'),
        -- | uncaptured_funds: This receiver contains uncaptured funds that can be used for a payment or refunded.
        paymentSourceUncapturedFunds :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | usage: Either \`reusable\` or \`single_use\`. Whether this source should be reusable or not. Some source types may or may not be reusable by construction, while others may leave the option at creation. If an incompatible value is passed, an error will be returned.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceUsage :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | used: Whether this Alipay account object has ever been used for a payment.
        paymentSourceUsed :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | used_for_payment: Indicate if this source is used for payment.
        paymentSourceUsedForPayment :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | username: The username for the Alipay account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceUsername :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | wechat
        paymentSourceWechat :: (GHC.Maybe.Maybe SourceTypeWechat)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentSource where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (paymentSourceAccount obj) : (Data.Aeson..=) "account_holder_name" (paymentSourceAccountHolderName obj) : (Data.Aeson..=) "account_holder_type" (paymentSourceAccountHolderType obj) : (Data.Aeson..=) "ach_credit_transfer" (paymentSourceAchCreditTransfer obj) : (Data.Aeson..=) "ach_debit" (paymentSourceAchDebit obj) : (Data.Aeson..=) "active" (paymentSourceActive obj) : (Data.Aeson..=) "address_city" (paymentSourceAddressCity obj) : (Data.Aeson..=) "address_country" (paymentSourceAddressCountry obj) : (Data.Aeson..=) "address_line1" (paymentSourceAddressLine1 obj) : (Data.Aeson..=) "address_line1_check" (paymentSourceAddressLine1Check obj) : (Data.Aeson..=) "address_line2" (paymentSourceAddressLine2 obj) : (Data.Aeson..=) "address_state" (paymentSourceAddressState obj) : (Data.Aeson..=) "address_zip" (paymentSourceAddressZip obj) : (Data.Aeson..=) "address_zip_check" (paymentSourceAddressZipCheck obj) : (Data.Aeson..=) "alipay" (paymentSourceAlipay obj) : (Data.Aeson..=) "amount" (paymentSourceAmount obj) : (Data.Aeson..=) "amount_received" (paymentSourceAmountReceived obj) : (Data.Aeson..=) "available_payout_methods" (paymentSourceAvailablePayoutMethods obj) : (Data.Aeson..=) "bancontact" (paymentSourceBancontact obj) : (Data.Aeson..=) "bank_name" (paymentSourceBankName obj) : (Data.Aeson..=) "bitcoin_amount" (paymentSourceBitcoinAmount obj) : (Data.Aeson..=) "bitcoin_amount_received" (paymentSourceBitcoinAmountReceived obj) : (Data.Aeson..=) "bitcoin_uri" (paymentSourceBitcoinUri obj) : (Data.Aeson..=) "brand" (paymentSourceBrand obj) : (Data.Aeson..=) "business_profile" (paymentSourceBusinessProfile obj) : (Data.Aeson..=) "business_type" (paymentSourceBusinessType obj) : (Data.Aeson..=) "capabilities" (paymentSourceCapabilities obj) : (Data.Aeson..=) "card" (paymentSourceCard obj) : (Data.Aeson..=) "card_present" (paymentSourceCardPresent obj) : (Data.Aeson..=) "charges_enabled" (paymentSourceChargesEnabled obj) : (Data.Aeson..=) "client_secret" (paymentSourceClientSecret obj) : (Data.Aeson..=) "code_verification" (paymentSourceCodeVerification obj) : (Data.Aeson..=) "company" (paymentSourceCompany obj) : (Data.Aeson..=) "country" (paymentSourceCountry obj) : (Data.Aeson..=) "created" (paymentSourceCreated obj) : (Data.Aeson..=) "currency" (paymentSourceCurrency obj) : (Data.Aeson..=) "customer" (paymentSourceCustomer obj) : (Data.Aeson..=) "cvc_check" (paymentSourceCvcCheck obj) : (Data.Aeson..=) "default_currency" (paymentSourceDefaultCurrency obj) : (Data.Aeson..=) "default_for_currency" (paymentSourceDefaultForCurrency obj) : (Data.Aeson..=) "description" (paymentSourceDescription obj) : (Data.Aeson..=) "details_submitted" (paymentSourceDetailsSubmitted obj) : (Data.Aeson..=) "dynamic_last4" (paymentSourceDynamicLast4 obj) : (Data.Aeson..=) "email" (paymentSourceEmail obj) : (Data.Aeson..=) "eps" (paymentSourceEps obj) : (Data.Aeson..=) "exp_month" (paymentSourceExpMonth obj) : (Data.Aeson..=) "exp_year" (paymentSourceExpYear obj) : (Data.Aeson..=) "external_accounts" (paymentSourceExternalAccounts obj) : (Data.Aeson..=) "filled" (paymentSourceFilled obj) : (Data.Aeson..=) "fingerprint" (paymentSourceFingerprint obj) : (Data.Aeson..=) "flow" (paymentSourceFlow obj) : (Data.Aeson..=) "funding" (paymentSourceFunding obj) : (Data.Aeson..=) "giropay" (paymentSourceGiropay obj) : (Data.Aeson..=) "id" (paymentSourceId obj) : (Data.Aeson..=) "ideal" (paymentSourceIdeal obj) : (Data.Aeson..=) "inbound_address" (paymentSourceInboundAddress obj) : (Data.Aeson..=) "individual" (paymentSourceIndividual obj) : (Data.Aeson..=) "klarna" (paymentSourceKlarna obj) : (Data.Aeson..=) "last4" (paymentSourceLast4 obj) : (Data.Aeson..=) "livemode" (paymentSourceLivemode obj) : (Data.Aeson..=) "metadata" (paymentSourceMetadata obj) : (Data.Aeson..=) "multibanco" (paymentSourceMultibanco obj) : (Data.Aeson..=) "name" (paymentSourceName obj) : (Data.Aeson..=) "object" (paymentSourceObject obj) : (Data.Aeson..=) "owner" (paymentSourceOwner obj) : (Data.Aeson..=) "p24" (paymentSourceP24 obj) : (Data.Aeson..=) "payment" (paymentSourcePayment obj) : (Data.Aeson..=) "payment_amount" (paymentSourcePaymentAmount obj) : (Data.Aeson..=) "payment_currency" (paymentSourcePaymentCurrency obj) : (Data.Aeson..=) "payouts_enabled" (paymentSourcePayoutsEnabled obj) : (Data.Aeson..=) "receiver" (paymentSourceReceiver obj) : (Data.Aeson..=) "recipient" (paymentSourceRecipient obj) : (Data.Aeson..=) "redirect" (paymentSourceRedirect obj) : (Data.Aeson..=) "refund_address" (paymentSourceRefundAddress obj) : (Data.Aeson..=) "requirements" (paymentSourceRequirements obj) : (Data.Aeson..=) "reusable" (paymentSourceReusable obj) : (Data.Aeson..=) "routing_number" (paymentSourceRoutingNumber obj) : (Data.Aeson..=) "sepa_debit" (paymentSourceSepaDebit obj) : (Data.Aeson..=) "settings" (paymentSourceSettings obj) : (Data.Aeson..=) "sofort" (paymentSourceSofort obj) : (Data.Aeson..=) "source_order" (paymentSourceSourceOrder obj) : (Data.Aeson..=) "statement_descriptor" (paymentSourceStatementDescriptor obj) : (Data.Aeson..=) "status" (paymentSourceStatus obj) : (Data.Aeson..=) "three_d_secure" (paymentSourceThreeDSecure obj) : (Data.Aeson..=) "tokenization_method" (paymentSourceTokenizationMethod obj) : (Data.Aeson..=) "tos_acceptance" (paymentSourceTosAcceptance obj) : (Data.Aeson..=) "transactions" (paymentSourceTransactions obj) : (Data.Aeson..=) "type" (paymentSourceType obj) : (Data.Aeson..=) "uncaptured_funds" (paymentSourceUncapturedFunds obj) : (Data.Aeson..=) "usage" (paymentSourceUsage obj) : (Data.Aeson..=) "used" (paymentSourceUsed obj) : (Data.Aeson..=) "used_for_payment" (paymentSourceUsedForPayment obj) : (Data.Aeson..=) "username" (paymentSourceUsername obj) : (Data.Aeson..=) "wechat" (paymentSourceWechat obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (paymentSourceAccount obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_name" (paymentSourceAccountHolderName obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_type" (paymentSourceAccountHolderType obj) GHC.Base.<> ((Data.Aeson..=) "ach_credit_transfer" (paymentSourceAchCreditTransfer obj) GHC.Base.<> ((Data.Aeson..=) "ach_debit" (paymentSourceAchDebit obj) GHC.Base.<> ((Data.Aeson..=) "active" (paymentSourceActive obj) GHC.Base.<> ((Data.Aeson..=) "address_city" (paymentSourceAddressCity obj) GHC.Base.<> ((Data.Aeson..=) "address_country" (paymentSourceAddressCountry obj) GHC.Base.<> ((Data.Aeson..=) "address_line1" (paymentSourceAddressLine1 obj) GHC.Base.<> ((Data.Aeson..=) "address_line1_check" (paymentSourceAddressLine1Check obj) GHC.Base.<> ((Data.Aeson..=) "address_line2" (paymentSourceAddressLine2 obj) GHC.Base.<> ((Data.Aeson..=) "address_state" (paymentSourceAddressState obj) GHC.Base.<> ((Data.Aeson..=) "address_zip" (paymentSourceAddressZip obj) GHC.Base.<> ((Data.Aeson..=) "address_zip_check" (paymentSourceAddressZipCheck obj) GHC.Base.<> ((Data.Aeson..=) "alipay" (paymentSourceAlipay obj) GHC.Base.<> ((Data.Aeson..=) "amount" (paymentSourceAmount obj) GHC.Base.<> ((Data.Aeson..=) "amount_received" (paymentSourceAmountReceived obj) GHC.Base.<> ((Data.Aeson..=) "available_payout_methods" (paymentSourceAvailablePayoutMethods obj) GHC.Base.<> ((Data.Aeson..=) "bancontact" (paymentSourceBancontact obj) GHC.Base.<> ((Data.Aeson..=) "bank_name" (paymentSourceBankName obj) GHC.Base.<> ((Data.Aeson..=) "bitcoin_amount" (paymentSourceBitcoinAmount obj) GHC.Base.<> ((Data.Aeson..=) "bitcoin_amount_received" (paymentSourceBitcoinAmountReceived obj) GHC.Base.<> ((Data.Aeson..=) "bitcoin_uri" (paymentSourceBitcoinUri obj) GHC.Base.<> ((Data.Aeson..=) "brand" (paymentSourceBrand obj) GHC.Base.<> ((Data.Aeson..=) "business_profile" (paymentSourceBusinessProfile obj) GHC.Base.<> ((Data.Aeson..=) "business_type" (paymentSourceBusinessType obj) GHC.Base.<> ((Data.Aeson..=) "capabilities" (paymentSourceCapabilities obj) GHC.Base.<> ((Data.Aeson..=) "card" (paymentSourceCard obj) GHC.Base.<> ((Data.Aeson..=) "card_present" (paymentSourceCardPresent obj) GHC.Base.<> ((Data.Aeson..=) "charges_enabled" (paymentSourceChargesEnabled obj) GHC.Base.<> ((Data.Aeson..=) "client_secret" (paymentSourceClientSecret obj) GHC.Base.<> ((Data.Aeson..=) "code_verification" (paymentSourceCodeVerification obj) GHC.Base.<> ((Data.Aeson..=) "company" (paymentSourceCompany obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentSourceCountry obj) GHC.Base.<> ((Data.Aeson..=) "created" (paymentSourceCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (paymentSourceCurrency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (paymentSourceCustomer obj) GHC.Base.<> ((Data.Aeson..=) "cvc_check" (paymentSourceCvcCheck obj) GHC.Base.<> ((Data.Aeson..=) "default_currency" (paymentSourceDefaultCurrency obj) GHC.Base.<> ((Data.Aeson..=) "default_for_currency" (paymentSourceDefaultForCurrency obj) GHC.Base.<> ((Data.Aeson..=) "description" (paymentSourceDescription obj) GHC.Base.<> ((Data.Aeson..=) "details_submitted" (paymentSourceDetailsSubmitted obj) GHC.Base.<> ((Data.Aeson..=) "dynamic_last4" (paymentSourceDynamicLast4 obj) GHC.Base.<> ((Data.Aeson..=) "email" (paymentSourceEmail obj) GHC.Base.<> ((Data.Aeson..=) "eps" (paymentSourceEps obj) GHC.Base.<> ((Data.Aeson..=) "exp_month" (paymentSourceExpMonth obj) GHC.Base.<> ((Data.Aeson..=) "exp_year" (paymentSourceExpYear obj) GHC.Base.<> ((Data.Aeson..=) "external_accounts" (paymentSourceExternalAccounts obj) GHC.Base.<> ((Data.Aeson..=) "filled" (paymentSourceFilled obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (paymentSourceFingerprint obj) GHC.Base.<> ((Data.Aeson..=) "flow" (paymentSourceFlow obj) GHC.Base.<> ((Data.Aeson..=) "funding" (paymentSourceFunding obj) GHC.Base.<> ((Data.Aeson..=) "giropay" (paymentSourceGiropay obj) GHC.Base.<> ((Data.Aeson..=) "id" (paymentSourceId obj) GHC.Base.<> ((Data.Aeson..=) "ideal" (paymentSourceIdeal obj) GHC.Base.<> ((Data.Aeson..=) "inbound_address" (paymentSourceInboundAddress obj) GHC.Base.<> ((Data.Aeson..=) "individual" (paymentSourceIndividual obj) GHC.Base.<> ((Data.Aeson..=) "klarna" (paymentSourceKlarna obj) GHC.Base.<> ((Data.Aeson..=) "last4" (paymentSourceLast4 obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (paymentSourceLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (paymentSourceMetadata obj) GHC.Base.<> ((Data.Aeson..=) "multibanco" (paymentSourceMultibanco obj) GHC.Base.<> ((Data.Aeson..=) "name" (paymentSourceName obj) GHC.Base.<> ((Data.Aeson..=) "object" (paymentSourceObject obj) GHC.Base.<> ((Data.Aeson..=) "owner" (paymentSourceOwner obj) GHC.Base.<> ((Data.Aeson..=) "p24" (paymentSourceP24 obj) GHC.Base.<> ((Data.Aeson..=) "payment" (paymentSourcePayment obj) GHC.Base.<> ((Data.Aeson..=) "payment_amount" (paymentSourcePaymentAmount obj) GHC.Base.<> ((Data.Aeson..=) "payment_currency" (paymentSourcePaymentCurrency obj) GHC.Base.<> ((Data.Aeson..=) "payouts_enabled" (paymentSourcePayoutsEnabled obj) GHC.Base.<> ((Data.Aeson..=) "receiver" (paymentSourceReceiver obj) GHC.Base.<> ((Data.Aeson..=) "recipient" (paymentSourceRecipient obj) GHC.Base.<> ((Data.Aeson..=) "redirect" (paymentSourceRedirect obj) GHC.Base.<> ((Data.Aeson..=) "refund_address" (paymentSourceRefundAddress obj) GHC.Base.<> ((Data.Aeson..=) "requirements" (paymentSourceRequirements obj) GHC.Base.<> ((Data.Aeson..=) "reusable" (paymentSourceReusable obj) GHC.Base.<> ((Data.Aeson..=) "routing_number" (paymentSourceRoutingNumber obj) GHC.Base.<> ((Data.Aeson..=) "sepa_debit" (paymentSourceSepaDebit obj) GHC.Base.<> ((Data.Aeson..=) "settings" (paymentSourceSettings obj) GHC.Base.<> ((Data.Aeson..=) "sofort" (paymentSourceSofort obj) GHC.Base.<> ((Data.Aeson..=) "source_order" (paymentSourceSourceOrder obj) GHC.Base.<> ((Data.Aeson..=) "statement_descriptor" (paymentSourceStatementDescriptor obj) GHC.Base.<> ((Data.Aeson..=) "status" (paymentSourceStatus obj) GHC.Base.<> ((Data.Aeson..=) "three_d_secure" (paymentSourceThreeDSecure obj) GHC.Base.<> ((Data.Aeson..=) "tokenization_method" (paymentSourceTokenizationMethod obj) GHC.Base.<> ((Data.Aeson..=) "tos_acceptance" (paymentSourceTosAcceptance obj) GHC.Base.<> ((Data.Aeson..=) "transactions" (paymentSourceTransactions obj) GHC.Base.<> ((Data.Aeson..=) "type" (paymentSourceType obj) GHC.Base.<> ((Data.Aeson..=) "uncaptured_funds" (paymentSourceUncapturedFunds obj) GHC.Base.<> ((Data.Aeson..=) "usage" (paymentSourceUsage obj) GHC.Base.<> ((Data.Aeson..=) "used" (paymentSourceUsed obj) GHC.Base.<> ((Data.Aeson..=) "used_for_payment" (paymentSourceUsedForPayment obj) GHC.Base.<> ((Data.Aeson..=) "username" (paymentSourceUsername obj) GHC.Base.<> (Data.Aeson..=) "wechat" (paymentSourceWechat obj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentSource where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentSource" (\obj -> (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((GHC.Base.pure PaymentSource GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_credit_transfer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "active")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_state")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "alipay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount_received")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "available_payout_methods")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bancontact")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bank_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bitcoin_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bitcoin_amount_received")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bitcoin_uri")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "brand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "business_profile")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "business_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "capabilities")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card_present")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "charges_enabled")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "client_secret")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "code_verification")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "company")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cvc_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_for_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "details_submitted")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dynamic_last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "eps")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "external_accounts")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "filled")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "flow")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "funding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "giropay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ideal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "inbound_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "individual")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "klarna")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "multibanco")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "owner")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "p24")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payouts_enabled")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "receiver")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "recipient")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "redirect")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "refund_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "requirements")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "reusable")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "routing_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sepa_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "settings")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sofort")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source_order")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "statement_descriptor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "three_d_secure")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tokenization_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tos_acceptance")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transactions")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "uncaptured_funds")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "used")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "used_for_payment")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "username")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "wechat"))

-- | Define the one-of schema payment_sourceAccount\'
--
-- The ID of the account that the bank account is associated with.
data PaymentSourceAccount'Variants
  = PaymentSourceAccount'Account Account
  | PaymentSourceAccount'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentSourceAccount'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentSourceAccount'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema payment_sourceAvailable_payout_methods\'
data PaymentSourceAvailablePayoutMethods'
  = PaymentSourceAvailablePayoutMethods'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentSourceAvailablePayoutMethods'EnumTyped Data.Text.Internal.Text
  | PaymentSourceAvailablePayoutMethods'EnumStringInstant
  | PaymentSourceAvailablePayoutMethods'EnumStringStandard
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentSourceAvailablePayoutMethods' where
  toJSON (PaymentSourceAvailablePayoutMethods'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceAvailablePayoutMethods'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceAvailablePayoutMethods'EnumStringInstant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant"
  toJSON (PaymentSourceAvailablePayoutMethods'EnumStringStandard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard"

instance Data.Aeson.FromJSON PaymentSourceAvailablePayoutMethods' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant")
          then PaymentSourceAvailablePayoutMethods'EnumStringInstant
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard")
              then PaymentSourceAvailablePayoutMethods'EnumStringStandard
              else PaymentSourceAvailablePayoutMethods'EnumOther val
      )

-- | Defines the data type for the schema payment_sourceBusiness_profile\'
--
-- Business information about the account.
data PaymentSourceBusinessProfile'
  = PaymentSourceBusinessProfile'
      { -- | mcc: [The merchant category code for the account](https:\/\/stripe.com\/docs\/connect\/setting-mcc). MCCs are used to classify businesses based on the goods or services they provide.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBusinessProfile'Mcc :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: The customer-facing business name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBusinessProfile'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | product_description: Internal-only description of the product sold or service provided by the business. It\'s used by Stripe for risk and underwriting purposes.
        --
        -- Constraints:
        --
        -- * Maximum length of 40000
        paymentSourceBusinessProfile'ProductDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | support_address: A publicly available mailing address for sending support issues to.
        paymentSourceBusinessProfile'SupportAddress :: (GHC.Maybe.Maybe PaymentSourceBusinessProfile'SupportAddress'),
        -- | support_email: A publicly available email address for sending support issues to.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBusinessProfile'SupportEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | support_phone: A publicly available phone number to call with support issues.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBusinessProfile'SupportPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | support_url: A publicly available website for handling support issues.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBusinessProfile'SupportUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | url: The business\'s publicly available website.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBusinessProfile'Url :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentSourceBusinessProfile' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "mcc" (paymentSourceBusinessProfile'Mcc obj) : (Data.Aeson..=) "name" (paymentSourceBusinessProfile'Name obj) : (Data.Aeson..=) "product_description" (paymentSourceBusinessProfile'ProductDescription obj) : (Data.Aeson..=) "support_address" (paymentSourceBusinessProfile'SupportAddress obj) : (Data.Aeson..=) "support_email" (paymentSourceBusinessProfile'SupportEmail obj) : (Data.Aeson..=) "support_phone" (paymentSourceBusinessProfile'SupportPhone obj) : (Data.Aeson..=) "support_url" (paymentSourceBusinessProfile'SupportUrl obj) : (Data.Aeson..=) "url" (paymentSourceBusinessProfile'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "mcc" (paymentSourceBusinessProfile'Mcc obj) GHC.Base.<> ((Data.Aeson..=) "name" (paymentSourceBusinessProfile'Name obj) GHC.Base.<> ((Data.Aeson..=) "product_description" (paymentSourceBusinessProfile'ProductDescription obj) GHC.Base.<> ((Data.Aeson..=) "support_address" (paymentSourceBusinessProfile'SupportAddress obj) GHC.Base.<> ((Data.Aeson..=) "support_email" (paymentSourceBusinessProfile'SupportEmail obj) GHC.Base.<> ((Data.Aeson..=) "support_phone" (paymentSourceBusinessProfile'SupportPhone obj) GHC.Base.<> ((Data.Aeson..=) "support_url" (paymentSourceBusinessProfile'SupportUrl obj) GHC.Base.<> (Data.Aeson..=) "url" (paymentSourceBusinessProfile'Url obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentSourceBusinessProfile' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentSourceBusinessProfile'" (\obj -> (((((((GHC.Base.pure PaymentSourceBusinessProfile' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "mcc")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "product_description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "support_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "support_email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "support_phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "support_url")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "url"))

-- | Defines the data type for the schema payment_sourceBusiness_profile\'Support_address\'
--
-- A publicly available mailing address for sending support issues to.
data PaymentSourceBusinessProfile'SupportAddress'
  = PaymentSourceBusinessProfile'SupportAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBusinessProfile'SupportAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBusinessProfile'SupportAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBusinessProfile'SupportAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBusinessProfile'SupportAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBusinessProfile'SupportAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceBusinessProfile'SupportAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentSourceBusinessProfile'SupportAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (paymentSourceBusinessProfile'SupportAddress'City obj) : (Data.Aeson..=) "country" (paymentSourceBusinessProfile'SupportAddress'Country obj) : (Data.Aeson..=) "line1" (paymentSourceBusinessProfile'SupportAddress'Line1 obj) : (Data.Aeson..=) "line2" (paymentSourceBusinessProfile'SupportAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (paymentSourceBusinessProfile'SupportAddress'PostalCode obj) : (Data.Aeson..=) "state" (paymentSourceBusinessProfile'SupportAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (paymentSourceBusinessProfile'SupportAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentSourceBusinessProfile'SupportAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (paymentSourceBusinessProfile'SupportAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (paymentSourceBusinessProfile'SupportAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (paymentSourceBusinessProfile'SupportAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (paymentSourceBusinessProfile'SupportAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentSourceBusinessProfile'SupportAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentSourceBusinessProfile'SupportAddress'" (\obj -> (((((GHC.Base.pure PaymentSourceBusinessProfile'SupportAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the enum schema payment_sourceBusiness_type\'
--
-- The business type.
data PaymentSourceBusinessType'
  = PaymentSourceBusinessType'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentSourceBusinessType'EnumTyped Data.Text.Internal.Text
  | PaymentSourceBusinessType'EnumStringCompany
  | PaymentSourceBusinessType'EnumStringGovernmentEntity
  | PaymentSourceBusinessType'EnumStringIndividual
  | PaymentSourceBusinessType'EnumStringNonProfit
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentSourceBusinessType' where
  toJSON (PaymentSourceBusinessType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceBusinessType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceBusinessType'EnumStringCompany) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "company"
  toJSON (PaymentSourceBusinessType'EnumStringGovernmentEntity) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "government_entity"
  toJSON (PaymentSourceBusinessType'EnumStringIndividual) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "individual"
  toJSON (PaymentSourceBusinessType'EnumStringNonProfit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_profit"

instance Data.Aeson.FromJSON PaymentSourceBusinessType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "company")
          then PaymentSourceBusinessType'EnumStringCompany
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "government_entity")
              then PaymentSourceBusinessType'EnumStringGovernmentEntity
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "individual")
                  then PaymentSourceBusinessType'EnumStringIndividual
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "non_profit")
                      then PaymentSourceBusinessType'EnumStringNonProfit
                      else PaymentSourceBusinessType'EnumOther val
      )

-- | Define the one-of schema payment_sourceCustomer\'
--
-- The ID of the customer associated with this Alipay Account.
data PaymentSourceCustomer'Variants
  = PaymentSourceCustomer'Customer Customer
  | PaymentSourceCustomer'DeletedCustomer DeletedCustomer
  | PaymentSourceCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentSourceCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentSourceCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema payment_sourceExternal_accounts\'
--
-- External accounts (bank accounts and debit cards) currently attached to this account
data PaymentSourceExternalAccounts'
  = PaymentSourceExternalAccounts'
      { -- | data: The list contains all external accounts that have been attached to the Stripe account. These may be bank accounts or cards.
        paymentSourceExternalAccounts'Data :: ([] PaymentSourceExternalAccounts'Data'),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        paymentSourceExternalAccounts'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        paymentSourceExternalAccounts'Object :: PaymentSourceExternalAccounts'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentSourceExternalAccounts' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (paymentSourceExternalAccounts'Data obj) : (Data.Aeson..=) "has_more" (paymentSourceExternalAccounts'HasMore obj) : (Data.Aeson..=) "object" (paymentSourceExternalAccounts'Object obj) : (Data.Aeson..=) "url" (paymentSourceExternalAccounts'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (paymentSourceExternalAccounts'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (paymentSourceExternalAccounts'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (paymentSourceExternalAccounts'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (paymentSourceExternalAccounts'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentSourceExternalAccounts' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentSourceExternalAccounts'" (\obj -> (((GHC.Base.pure PaymentSourceExternalAccounts' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the data type for the schema payment_sourceExternal_accounts\'Data\'
data PaymentSourceExternalAccounts'Data'
  = PaymentSourceExternalAccounts'Data'
      { -- | account: The ID of the account that the bank account is associated with.
        paymentSourceExternalAccounts'Data'Account :: (GHC.Maybe.Maybe PaymentSourceExternalAccounts'Data'Account'Variants),
        -- | account_holder_name: The name of the person or business that owns the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'AccountHolderName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | account_holder_type: The type of entity that holds the account. This can be either \`individual\` or \`company\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'AccountHolderType :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_city: City\/District\/Suburb\/Town\/Village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'AddressCity :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_country: Billing address country, if provided when creating card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'AddressCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1: Address line 1 (Street address\/PO Box\/Company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'AddressLine1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1_check: If \`address_line1\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'AddressLine1Check :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line2: Address line 2 (Apartment\/Suite\/Unit\/Building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'AddressLine2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_state: State\/County\/Province\/Region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'AddressState :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'AddressZip :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip_check: If \`address_zip\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'AddressZipCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | available_payout_methods: A set of available payout methods for this card. Will be either \`[\"standard\"]\` or \`[\"standard\", \"instant\"]\`. Only values from this set should be passed as the \`method\` when creating a transfer.
        paymentSourceExternalAccounts'Data'AvailablePayoutMethods :: (GHC.Maybe.Maybe ([] PaymentSourceExternalAccounts'Data'AvailablePayoutMethods')),
        -- | bank_name: Name of the bank associated with the routing number (e.g., \`WELLS FARGO\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'BankName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | brand: Card brand. Can be \`American Express\`, \`Diners Club\`, \`Discover\`, \`JCB\`, \`MasterCard\`, \`UnionPay\`, \`Visa\`, or \`Unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'Brand :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter ISO code representing the country the bank account is located in.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/payouts) paid out to the bank account.
        paymentSourceExternalAccounts'Data'Currency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer: The ID of the customer that the bank account is associated with.
        paymentSourceExternalAccounts'Data'Customer :: (GHC.Maybe.Maybe PaymentSourceExternalAccounts'Data'Customer'Variants),
        -- | cvc_check: If a CVC was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'CvcCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | default_for_currency: Whether this bank account is the default external account for its currency.
        paymentSourceExternalAccounts'Data'DefaultForCurrency :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'DynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | exp_month: Two-digit number representing the card\'s expiration month.
        paymentSourceExternalAccounts'Data'ExpMonth :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | exp_year: Four-digit number representing the card\'s expiration year.
        paymentSourceExternalAccounts'Data'ExpYear :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | fingerprint: Uniquely identifies this particular bank account. You can use this attribute to check whether two bank accounts are the same.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'Fingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'Funding :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | last4: The last four digits of the bank account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'Last4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        paymentSourceExternalAccounts'Data'Metadata :: (GHC.Maybe.Maybe PaymentSourceExternalAccounts'Data'Metadata'),
        -- | name: Cardholder name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        paymentSourceExternalAccounts'Data'Object :: (GHC.Maybe.Maybe PaymentSourceExternalAccounts'Data'Object'),
        -- | recipient: The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
        paymentSourceExternalAccounts'Data'Recipient :: (GHC.Maybe.Maybe PaymentSourceExternalAccounts'Data'Recipient'Variants),
        -- | routing_number: The routing transit number for the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'RoutingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: For bank accounts, possible values are \`new\`, \`validated\`, \`verified\`, \`verification_failed\`, or \`errored\`. A bank account that hasn\'t had any activity or validation performed is \`new\`. If Stripe can determine that the bank account exists, its status will be \`validated\`. Note that there often isn’t enough information to know (e.g., for smaller credit unions), and the validation is not always run. If customer bank account verification has succeeded, the bank account status will be \`verified\`. If the verification failed for any reason, such as microdeposit failure, the status will be \`verification_failed\`. If a transfer sent to this bank account fails, we\'ll set the status to \`errored\` and will not continue to send transfers until the bank details are updated.
        --
        -- For external accounts, possible values are \`new\` and \`errored\`. Validations aren\'t run against external accounts because they\'re only used for payouts. This means the other statuses don\'t apply. If a transfer fails, the status is set to \`errored\` and transfers are stopped until account details are updated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'Status :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | tokenization_method: If the card number is tokenized, this is the method that was used. Can be \`amex_express_checkout\`, \`android_pay\` (includes Google Pay), \`apple_pay\`, \`masterpass\`, \`visa_checkout\`, or null.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceExternalAccounts'Data'TokenizationMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentSourceExternalAccounts'Data' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (paymentSourceExternalAccounts'Data'Account obj) : (Data.Aeson..=) "account_holder_name" (paymentSourceExternalAccounts'Data'AccountHolderName obj) : (Data.Aeson..=) "account_holder_type" (paymentSourceExternalAccounts'Data'AccountHolderType obj) : (Data.Aeson..=) "address_city" (paymentSourceExternalAccounts'Data'AddressCity obj) : (Data.Aeson..=) "address_country" (paymentSourceExternalAccounts'Data'AddressCountry obj) : (Data.Aeson..=) "address_line1" (paymentSourceExternalAccounts'Data'AddressLine1 obj) : (Data.Aeson..=) "address_line1_check" (paymentSourceExternalAccounts'Data'AddressLine1Check obj) : (Data.Aeson..=) "address_line2" (paymentSourceExternalAccounts'Data'AddressLine2 obj) : (Data.Aeson..=) "address_state" (paymentSourceExternalAccounts'Data'AddressState obj) : (Data.Aeson..=) "address_zip" (paymentSourceExternalAccounts'Data'AddressZip obj) : (Data.Aeson..=) "address_zip_check" (paymentSourceExternalAccounts'Data'AddressZipCheck obj) : (Data.Aeson..=) "available_payout_methods" (paymentSourceExternalAccounts'Data'AvailablePayoutMethods obj) : (Data.Aeson..=) "bank_name" (paymentSourceExternalAccounts'Data'BankName obj) : (Data.Aeson..=) "brand" (paymentSourceExternalAccounts'Data'Brand obj) : (Data.Aeson..=) "country" (paymentSourceExternalAccounts'Data'Country obj) : (Data.Aeson..=) "currency" (paymentSourceExternalAccounts'Data'Currency obj) : (Data.Aeson..=) "customer" (paymentSourceExternalAccounts'Data'Customer obj) : (Data.Aeson..=) "cvc_check" (paymentSourceExternalAccounts'Data'CvcCheck obj) : (Data.Aeson..=) "default_for_currency" (paymentSourceExternalAccounts'Data'DefaultForCurrency obj) : (Data.Aeson..=) "dynamic_last4" (paymentSourceExternalAccounts'Data'DynamicLast4 obj) : (Data.Aeson..=) "exp_month" (paymentSourceExternalAccounts'Data'ExpMonth obj) : (Data.Aeson..=) "exp_year" (paymentSourceExternalAccounts'Data'ExpYear obj) : (Data.Aeson..=) "fingerprint" (paymentSourceExternalAccounts'Data'Fingerprint obj) : (Data.Aeson..=) "funding" (paymentSourceExternalAccounts'Data'Funding obj) : (Data.Aeson..=) "id" (paymentSourceExternalAccounts'Data'Id obj) : (Data.Aeson..=) "last4" (paymentSourceExternalAccounts'Data'Last4 obj) : (Data.Aeson..=) "metadata" (paymentSourceExternalAccounts'Data'Metadata obj) : (Data.Aeson..=) "name" (paymentSourceExternalAccounts'Data'Name obj) : (Data.Aeson..=) "object" (paymentSourceExternalAccounts'Data'Object obj) : (Data.Aeson..=) "recipient" (paymentSourceExternalAccounts'Data'Recipient obj) : (Data.Aeson..=) "routing_number" (paymentSourceExternalAccounts'Data'RoutingNumber obj) : (Data.Aeson..=) "status" (paymentSourceExternalAccounts'Data'Status obj) : (Data.Aeson..=) "tokenization_method" (paymentSourceExternalAccounts'Data'TokenizationMethod obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (paymentSourceExternalAccounts'Data'Account obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_name" (paymentSourceExternalAccounts'Data'AccountHolderName obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_type" (paymentSourceExternalAccounts'Data'AccountHolderType obj) GHC.Base.<> ((Data.Aeson..=) "address_city" (paymentSourceExternalAccounts'Data'AddressCity obj) GHC.Base.<> ((Data.Aeson..=) "address_country" (paymentSourceExternalAccounts'Data'AddressCountry obj) GHC.Base.<> ((Data.Aeson..=) "address_line1" (paymentSourceExternalAccounts'Data'AddressLine1 obj) GHC.Base.<> ((Data.Aeson..=) "address_line1_check" (paymentSourceExternalAccounts'Data'AddressLine1Check obj) GHC.Base.<> ((Data.Aeson..=) "address_line2" (paymentSourceExternalAccounts'Data'AddressLine2 obj) GHC.Base.<> ((Data.Aeson..=) "address_state" (paymentSourceExternalAccounts'Data'AddressState obj) GHC.Base.<> ((Data.Aeson..=) "address_zip" (paymentSourceExternalAccounts'Data'AddressZip obj) GHC.Base.<> ((Data.Aeson..=) "address_zip_check" (paymentSourceExternalAccounts'Data'AddressZipCheck obj) GHC.Base.<> ((Data.Aeson..=) "available_payout_methods" (paymentSourceExternalAccounts'Data'AvailablePayoutMethods obj) GHC.Base.<> ((Data.Aeson..=) "bank_name" (paymentSourceExternalAccounts'Data'BankName obj) GHC.Base.<> ((Data.Aeson..=) "brand" (paymentSourceExternalAccounts'Data'Brand obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentSourceExternalAccounts'Data'Country obj) GHC.Base.<> ((Data.Aeson..=) "currency" (paymentSourceExternalAccounts'Data'Currency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (paymentSourceExternalAccounts'Data'Customer obj) GHC.Base.<> ((Data.Aeson..=) "cvc_check" (paymentSourceExternalAccounts'Data'CvcCheck obj) GHC.Base.<> ((Data.Aeson..=) "default_for_currency" (paymentSourceExternalAccounts'Data'DefaultForCurrency obj) GHC.Base.<> ((Data.Aeson..=) "dynamic_last4" (paymentSourceExternalAccounts'Data'DynamicLast4 obj) GHC.Base.<> ((Data.Aeson..=) "exp_month" (paymentSourceExternalAccounts'Data'ExpMonth obj) GHC.Base.<> ((Data.Aeson..=) "exp_year" (paymentSourceExternalAccounts'Data'ExpYear obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (paymentSourceExternalAccounts'Data'Fingerprint obj) GHC.Base.<> ((Data.Aeson..=) "funding" (paymentSourceExternalAccounts'Data'Funding obj) GHC.Base.<> ((Data.Aeson..=) "id" (paymentSourceExternalAccounts'Data'Id obj) GHC.Base.<> ((Data.Aeson..=) "last4" (paymentSourceExternalAccounts'Data'Last4 obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (paymentSourceExternalAccounts'Data'Metadata obj) GHC.Base.<> ((Data.Aeson..=) "name" (paymentSourceExternalAccounts'Data'Name obj) GHC.Base.<> ((Data.Aeson..=) "object" (paymentSourceExternalAccounts'Data'Object obj) GHC.Base.<> ((Data.Aeson..=) "recipient" (paymentSourceExternalAccounts'Data'Recipient obj) GHC.Base.<> ((Data.Aeson..=) "routing_number" (paymentSourceExternalAccounts'Data'RoutingNumber obj) GHC.Base.<> ((Data.Aeson..=) "status" (paymentSourceExternalAccounts'Data'Status obj) GHC.Base.<> (Data.Aeson..=) "tokenization_method" (paymentSourceExternalAccounts'Data'TokenizationMethod obj)))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentSourceExternalAccounts'Data' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentSourceExternalAccounts'Data'" (\obj -> ((((((((((((((((((((((((((((((((GHC.Base.pure PaymentSourceExternalAccounts'Data' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_state")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "available_payout_methods")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bank_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "brand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cvc_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_for_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dynamic_last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "funding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "recipient")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "routing_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tokenization_method"))

-- | Define the one-of schema payment_sourceExternal_accounts\'Data\'Account\'
--
-- The ID of the account that the bank account is associated with.
data PaymentSourceExternalAccounts'Data'Account'Variants
  = PaymentSourceExternalAccounts'Data'Account'Account Account
  | PaymentSourceExternalAccounts'Data'Account'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentSourceExternalAccounts'Data'Account'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentSourceExternalAccounts'Data'Account'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema payment_sourceExternal_accounts\'Data\'Available_payout_methods\'
data PaymentSourceExternalAccounts'Data'AvailablePayoutMethods'
  = PaymentSourceExternalAccounts'Data'AvailablePayoutMethods'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentSourceExternalAccounts'Data'AvailablePayoutMethods'EnumTyped Data.Text.Internal.Text
  | PaymentSourceExternalAccounts'Data'AvailablePayoutMethods'EnumStringInstant
  | PaymentSourceExternalAccounts'Data'AvailablePayoutMethods'EnumStringStandard
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentSourceExternalAccounts'Data'AvailablePayoutMethods' where
  toJSON (PaymentSourceExternalAccounts'Data'AvailablePayoutMethods'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceExternalAccounts'Data'AvailablePayoutMethods'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceExternalAccounts'Data'AvailablePayoutMethods'EnumStringInstant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant"
  toJSON (PaymentSourceExternalAccounts'Data'AvailablePayoutMethods'EnumStringStandard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard"

instance Data.Aeson.FromJSON PaymentSourceExternalAccounts'Data'AvailablePayoutMethods' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant")
          then PaymentSourceExternalAccounts'Data'AvailablePayoutMethods'EnumStringInstant
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard")
              then PaymentSourceExternalAccounts'Data'AvailablePayoutMethods'EnumStringStandard
              else PaymentSourceExternalAccounts'Data'AvailablePayoutMethods'EnumOther val
      )

-- | Define the one-of schema payment_sourceExternal_accounts\'Data\'Customer\'
--
-- The ID of the customer that the bank account is associated with.
data PaymentSourceExternalAccounts'Data'Customer'Variants
  = PaymentSourceExternalAccounts'Data'Customer'Customer Customer
  | PaymentSourceExternalAccounts'Data'Customer'DeletedCustomer DeletedCustomer
  | PaymentSourceExternalAccounts'Data'Customer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentSourceExternalAccounts'Data'Customer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentSourceExternalAccounts'Data'Customer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema payment_sourceExternal_accounts\'Data\'Metadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data PaymentSourceExternalAccounts'Data'Metadata'
  = PaymentSourceExternalAccounts'Data'Metadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentSourceExternalAccounts'Data'Metadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentSourceExternalAccounts'Data'Metadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentSourceExternalAccounts'Data'Metadata'" (\obj -> GHC.Base.pure PaymentSourceExternalAccounts'Data'Metadata')

-- | Defines the enum schema payment_sourceExternal_accounts\'Data\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data PaymentSourceExternalAccounts'Data'Object'
  = PaymentSourceExternalAccounts'Data'Object'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentSourceExternalAccounts'Data'Object'EnumTyped Data.Text.Internal.Text
  | PaymentSourceExternalAccounts'Data'Object'EnumStringBankAccount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentSourceExternalAccounts'Data'Object' where
  toJSON (PaymentSourceExternalAccounts'Data'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceExternalAccounts'Data'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceExternalAccounts'Data'Object'EnumStringBankAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account"

instance Data.Aeson.FromJSON PaymentSourceExternalAccounts'Data'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account")
          then PaymentSourceExternalAccounts'Data'Object'EnumStringBankAccount
          else PaymentSourceExternalAccounts'Data'Object'EnumOther val
      )

-- | Define the one-of schema payment_sourceExternal_accounts\'Data\'Recipient\'
--
-- The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
data PaymentSourceExternalAccounts'Data'Recipient'Variants
  = PaymentSourceExternalAccounts'Data'Recipient'Recipient Recipient
  | PaymentSourceExternalAccounts'Data'Recipient'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentSourceExternalAccounts'Data'Recipient'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentSourceExternalAccounts'Data'Recipient'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema payment_sourceExternal_accounts\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data PaymentSourceExternalAccounts'Object'
  = PaymentSourceExternalAccounts'Object'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentSourceExternalAccounts'Object'EnumTyped Data.Text.Internal.Text
  | PaymentSourceExternalAccounts'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentSourceExternalAccounts'Object' where
  toJSON (PaymentSourceExternalAccounts'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceExternalAccounts'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceExternalAccounts'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON PaymentSourceExternalAccounts'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then PaymentSourceExternalAccounts'Object'EnumStringList
          else PaymentSourceExternalAccounts'Object'EnumOther val
      )

-- | Defines the data type for the schema payment_sourceMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data PaymentSourceMetadata'
  = PaymentSourceMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentSourceMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentSourceMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentSourceMetadata'" (\obj -> GHC.Base.pure PaymentSourceMetadata')

-- | Defines the enum schema payment_sourceObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data PaymentSourceObject'
  = PaymentSourceObject'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentSourceObject'EnumTyped Data.Text.Internal.Text
  | PaymentSourceObject'EnumStringAccount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentSourceObject' where
  toJSON (PaymentSourceObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceObject'EnumStringAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "account"

instance Data.Aeson.FromJSON PaymentSourceObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "account")
          then PaymentSourceObject'EnumStringAccount
          else PaymentSourceObject'EnumOther val
      )

-- | Defines the data type for the schema payment_sourceOwner\'
--
-- Information about the owner of the payment instrument that may be used or required by particular source types.
data PaymentSourceOwner'
  = PaymentSourceOwner'
      { -- | address: Owner\'s address.
        paymentSourceOwner'Address :: (GHC.Maybe.Maybe PaymentSourceOwner'Address'),
        -- | email: Owner\'s email address.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'Email :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Owner\'s full name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | phone: Owner\'s phone number (including extension).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'Phone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_address: Verified owner\'s address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        paymentSourceOwner'VerifiedAddress :: (GHC.Maybe.Maybe PaymentSourceOwner'VerifiedAddress'),
        -- | verified_email: Verified owner\'s email address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'VerifiedEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_name: Verified owner\'s full name. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'VerifiedName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_phone: Verified owner\'s phone number (including extension). Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'VerifiedPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentSourceOwner' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (paymentSourceOwner'Address obj) : (Data.Aeson..=) "email" (paymentSourceOwner'Email obj) : (Data.Aeson..=) "name" (paymentSourceOwner'Name obj) : (Data.Aeson..=) "phone" (paymentSourceOwner'Phone obj) : (Data.Aeson..=) "verified_address" (paymentSourceOwner'VerifiedAddress obj) : (Data.Aeson..=) "verified_email" (paymentSourceOwner'VerifiedEmail obj) : (Data.Aeson..=) "verified_name" (paymentSourceOwner'VerifiedName obj) : (Data.Aeson..=) "verified_phone" (paymentSourceOwner'VerifiedPhone obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (paymentSourceOwner'Address obj) GHC.Base.<> ((Data.Aeson..=) "email" (paymentSourceOwner'Email obj) GHC.Base.<> ((Data.Aeson..=) "name" (paymentSourceOwner'Name obj) GHC.Base.<> ((Data.Aeson..=) "phone" (paymentSourceOwner'Phone obj) GHC.Base.<> ((Data.Aeson..=) "verified_address" (paymentSourceOwner'VerifiedAddress obj) GHC.Base.<> ((Data.Aeson..=) "verified_email" (paymentSourceOwner'VerifiedEmail obj) GHC.Base.<> ((Data.Aeson..=) "verified_name" (paymentSourceOwner'VerifiedName obj) GHC.Base.<> (Data.Aeson..=) "verified_phone" (paymentSourceOwner'VerifiedPhone obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentSourceOwner' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentSourceOwner'" (\obj -> (((((((GHC.Base.pure PaymentSourceOwner' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_phone"))

-- | Defines the data type for the schema payment_sourceOwner\'Address\'
--
-- Owner\\\'s address.
data PaymentSourceOwner'Address'
  = PaymentSourceOwner'Address'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'Address'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'Address'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'Address'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'Address'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'Address'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'Address'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentSourceOwner'Address' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (paymentSourceOwner'Address'City obj) : (Data.Aeson..=) "country" (paymentSourceOwner'Address'Country obj) : (Data.Aeson..=) "line1" (paymentSourceOwner'Address'Line1 obj) : (Data.Aeson..=) "line2" (paymentSourceOwner'Address'Line2 obj) : (Data.Aeson..=) "postal_code" (paymentSourceOwner'Address'PostalCode obj) : (Data.Aeson..=) "state" (paymentSourceOwner'Address'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (paymentSourceOwner'Address'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentSourceOwner'Address'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (paymentSourceOwner'Address'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (paymentSourceOwner'Address'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (paymentSourceOwner'Address'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (paymentSourceOwner'Address'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentSourceOwner'Address' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentSourceOwner'Address'" (\obj -> (((((GHC.Base.pure PaymentSourceOwner'Address' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema payment_sourceOwner\'Verified_address\'
--
-- Verified owner\\\'s address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
data PaymentSourceOwner'VerifiedAddress'
  = PaymentSourceOwner'VerifiedAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'VerifiedAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'VerifiedAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'VerifiedAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'VerifiedAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'VerifiedAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceOwner'VerifiedAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentSourceOwner'VerifiedAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (paymentSourceOwner'VerifiedAddress'City obj) : (Data.Aeson..=) "country" (paymentSourceOwner'VerifiedAddress'Country obj) : (Data.Aeson..=) "line1" (paymentSourceOwner'VerifiedAddress'Line1 obj) : (Data.Aeson..=) "line2" (paymentSourceOwner'VerifiedAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (paymentSourceOwner'VerifiedAddress'PostalCode obj) : (Data.Aeson..=) "state" (paymentSourceOwner'VerifiedAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (paymentSourceOwner'VerifiedAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (paymentSourceOwner'VerifiedAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (paymentSourceOwner'VerifiedAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (paymentSourceOwner'VerifiedAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (paymentSourceOwner'VerifiedAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (paymentSourceOwner'VerifiedAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentSourceOwner'VerifiedAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentSourceOwner'VerifiedAddress'" (\obj -> (((((GHC.Base.pure PaymentSourceOwner'VerifiedAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Define the one-of schema payment_sourceRecipient\'
--
-- The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
data PaymentSourceRecipient'Variants
  = PaymentSourceRecipient'Recipient Recipient
  | PaymentSourceRecipient'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PaymentSourceRecipient'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PaymentSourceRecipient'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema payment_sourceSettings\'
--
-- Options for customizing how the account functions within Stripe.
data PaymentSourceSettings'
  = PaymentSourceSettings'
      { -- | branding:
        paymentSourceSettings'Branding :: (GHC.Maybe.Maybe AccountBrandingSettings),
        -- | card_payments:
        paymentSourceSettings'CardPayments :: (GHC.Maybe.Maybe AccountCardPaymentsSettings),
        -- | dashboard:
        paymentSourceSettings'Dashboard :: (GHC.Maybe.Maybe AccountDashboardSettings),
        -- | payments:
        paymentSourceSettings'Payments :: (GHC.Maybe.Maybe AccountPaymentsSettings),
        -- | payouts:
        paymentSourceSettings'Payouts :: (GHC.Maybe.Maybe AccountPayoutSettings)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentSourceSettings' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "branding" (paymentSourceSettings'Branding obj) : (Data.Aeson..=) "card_payments" (paymentSourceSettings'CardPayments obj) : (Data.Aeson..=) "dashboard" (paymentSourceSettings'Dashboard obj) : (Data.Aeson..=) "payments" (paymentSourceSettings'Payments obj) : (Data.Aeson..=) "payouts" (paymentSourceSettings'Payouts obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "branding" (paymentSourceSettings'Branding obj) GHC.Base.<> ((Data.Aeson..=) "card_payments" (paymentSourceSettings'CardPayments obj) GHC.Base.<> ((Data.Aeson..=) "dashboard" (paymentSourceSettings'Dashboard obj) GHC.Base.<> ((Data.Aeson..=) "payments" (paymentSourceSettings'Payments obj) GHC.Base.<> (Data.Aeson..=) "payouts" (paymentSourceSettings'Payouts obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentSourceSettings' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentSourceSettings'" (\obj -> ((((GHC.Base.pure PaymentSourceSettings' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "branding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card_payments")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dashboard")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payments")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payouts"))

-- | Defines the data type for the schema payment_sourceTransactions\'
--
-- A list with one entry for each time that the customer sent bitcoin to the receiver. Hidden when viewing the receiver with a publishable key.
data PaymentSourceTransactions'
  = PaymentSourceTransactions'
      { -- | data: Details about each object.
        paymentSourceTransactions'Data :: ([] BitcoinTransaction),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        paymentSourceTransactions'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        paymentSourceTransactions'Object :: PaymentSourceTransactions'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        paymentSourceTransactions'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PaymentSourceTransactions' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (paymentSourceTransactions'Data obj) : (Data.Aeson..=) "has_more" (paymentSourceTransactions'HasMore obj) : (Data.Aeson..=) "object" (paymentSourceTransactions'Object obj) : (Data.Aeson..=) "url" (paymentSourceTransactions'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (paymentSourceTransactions'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (paymentSourceTransactions'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (paymentSourceTransactions'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (paymentSourceTransactions'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentSourceTransactions' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentSourceTransactions'" (\obj -> (((GHC.Base.pure PaymentSourceTransactions' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema payment_sourceTransactions\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data PaymentSourceTransactions'Object'
  = PaymentSourceTransactions'Object'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentSourceTransactions'Object'EnumTyped Data.Text.Internal.Text
  | PaymentSourceTransactions'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentSourceTransactions'Object' where
  toJSON (PaymentSourceTransactions'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceTransactions'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceTransactions'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON PaymentSourceTransactions'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then PaymentSourceTransactions'Object'EnumStringList
          else PaymentSourceTransactions'Object'EnumOther val
      )

-- | Defines the enum schema payment_sourceType\'
--
-- The Stripe account type. Can be \`standard\`, \`express\`, or \`custom\`.
data PaymentSourceType'
  = PaymentSourceType'EnumOther Data.Aeson.Types.Internal.Value
  | PaymentSourceType'EnumTyped Data.Text.Internal.Text
  | PaymentSourceType'EnumStringCustom
  | PaymentSourceType'EnumStringExpress
  | PaymentSourceType'EnumStringStandard
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PaymentSourceType' where
  toJSON (PaymentSourceType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PaymentSourceType'EnumStringCustom) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "custom"
  toJSON (PaymentSourceType'EnumStringExpress) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "express"
  toJSON (PaymentSourceType'EnumStringStandard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard"

instance Data.Aeson.FromJSON PaymentSourceType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "custom")
          then PaymentSourceType'EnumStringCustom
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "express")
              then PaymentSourceType'EnumStringExpress
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard")
                  then PaymentSourceType'EnumStringStandard
                  else PaymentSourceType'EnumOther val
      )

-- | Defines the data type for the schema payout
--
-- A \`Payout\` object is created when you receive funds from Stripe, or when you
-- initiate a payout to either a bank account or debit card of a [connected
-- Stripe account](\/docs\/connect\/payouts). You can retrieve individual payouts,
-- as well as list all payouts. Payouts are made on [varying
-- schedules](\/docs\/payouts\#payout-schedule), depending on your country and
-- industry.
--
-- Related guide: [Receiving Payouts](https:\/\/stripe.com\/docs\/payouts).
data Payout
  = Payout
      { -- | amount: Amount (in %s) to be transferred to your bank account or debit card.
        payoutAmount :: GHC.Integer.Type.Integer,
        -- | arrival_date: Date the payout is expected to arrive in the bank. This factors in delays like weekends or bank holidays.
        payoutArrivalDate :: GHC.Integer.Type.Integer,
        -- | automatic: Returns \`true\` if the payout was created by an [automated payout schedule](https:\/\/stripe.com\/docs\/payouts\#payout-schedule), and \`false\` if it was [requested manually](https:\/\/stripe.com\/docs\/payouts\#manual-payouts).
        payoutAutomatic :: GHC.Types.Bool,
        -- | balance_transaction: ID of the balance transaction that describes the impact of this payout on your account balance.
        payoutBalanceTransaction :: (GHC.Maybe.Maybe PayoutBalanceTransaction'Variants),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        payoutCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        payoutCurrency :: Data.Text.Internal.Text,
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        payoutDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | destination: ID of the bank account or card the payout was sent to.
        payoutDestination :: (GHC.Maybe.Maybe PayoutDestination'Variants),
        -- | failure_balance_transaction: If the payout failed or was canceled, this will be the ID of the balance transaction that reversed the initial balance transaction, and puts the funds from the failed payout back in your balance.
        payoutFailureBalanceTransaction :: (GHC.Maybe.Maybe PayoutFailureBalanceTransaction'Variants),
        -- | failure_code: Error code explaining reason for payout failure if available. See [Types of payout failures](https:\/\/stripe.com\/docs\/api\#payout_failures) for a list of failure codes.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        payoutFailureCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | failure_message: Message to user further explaining reason for payout failure if available.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        payoutFailureMessage :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        payoutId :: 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.
        payoutLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        payoutMetadata :: PayoutMetadata',
        -- | method: The method used to send this payout, which can be \`standard\` or \`instant\`. \`instant\` is only supported for payouts to debit cards. (See [Instant payouts for marketplaces](https:\/\/stripe.com\/blog\/instant-payouts-for-marketplaces) for more information.)
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        payoutMethod :: Data.Text.Internal.Text,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        payoutObject :: PayoutObject',
        -- | source_type: The source balance this payout came from. One of \`card\`, \`fpx\`, or \`bank_account\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        payoutSourceType :: Data.Text.Internal.Text,
        -- | statement_descriptor: Extra information about a payout to be displayed on the user\'s bank statement.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        payoutStatementDescriptor :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: Current status of the payout (\`paid\`, \`pending\`, \`in_transit\`, \`canceled\` or \`failed\`). A payout will be \`pending\` until it is submitted to the bank, at which point it becomes \`in_transit\`. It will then change to \`paid\` if the transaction goes through. If it does not go through successfully, its status will change to \`failed\` or \`canceled\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        payoutStatus :: Data.Text.Internal.Text,
        -- | type: Can be \`bank_account\` or \`card\`.
        payoutType :: PayoutType'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Payout where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (payoutAmount obj) : (Data.Aeson..=) "arrival_date" (payoutArrivalDate obj) : (Data.Aeson..=) "automatic" (payoutAutomatic obj) : (Data.Aeson..=) "balance_transaction" (payoutBalanceTransaction obj) : (Data.Aeson..=) "created" (payoutCreated obj) : (Data.Aeson..=) "currency" (payoutCurrency obj) : (Data.Aeson..=) "description" (payoutDescription obj) : (Data.Aeson..=) "destination" (payoutDestination obj) : (Data.Aeson..=) "failure_balance_transaction" (payoutFailureBalanceTransaction obj) : (Data.Aeson..=) "failure_code" (payoutFailureCode obj) : (Data.Aeson..=) "failure_message" (payoutFailureMessage obj) : (Data.Aeson..=) "id" (payoutId obj) : (Data.Aeson..=) "livemode" (payoutLivemode obj) : (Data.Aeson..=) "metadata" (payoutMetadata obj) : (Data.Aeson..=) "method" (payoutMethod obj) : (Data.Aeson..=) "object" (payoutObject obj) : (Data.Aeson..=) "source_type" (payoutSourceType obj) : (Data.Aeson..=) "statement_descriptor" (payoutStatementDescriptor obj) : (Data.Aeson..=) "status" (payoutStatus obj) : (Data.Aeson..=) "type" (payoutType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (payoutAmount obj) GHC.Base.<> ((Data.Aeson..=) "arrival_date" (payoutArrivalDate obj) GHC.Base.<> ((Data.Aeson..=) "automatic" (payoutAutomatic obj) GHC.Base.<> ((Data.Aeson..=) "balance_transaction" (payoutBalanceTransaction obj) GHC.Base.<> ((Data.Aeson..=) "created" (payoutCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (payoutCurrency obj) GHC.Base.<> ((Data.Aeson..=) "description" (payoutDescription obj) GHC.Base.<> ((Data.Aeson..=) "destination" (payoutDestination obj) GHC.Base.<> ((Data.Aeson..=) "failure_balance_transaction" (payoutFailureBalanceTransaction obj) GHC.Base.<> ((Data.Aeson..=) "failure_code" (payoutFailureCode obj) GHC.Base.<> ((Data.Aeson..=) "failure_message" (payoutFailureMessage obj) GHC.Base.<> ((Data.Aeson..=) "id" (payoutId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (payoutLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (payoutMetadata obj) GHC.Base.<> ((Data.Aeson..=) "method" (payoutMethod obj) GHC.Base.<> ((Data.Aeson..=) "object" (payoutObject obj) GHC.Base.<> ((Data.Aeson..=) "source_type" (payoutSourceType obj) GHC.Base.<> ((Data.Aeson..=) "statement_descriptor" (payoutStatementDescriptor obj) GHC.Base.<> ((Data.Aeson..=) "status" (payoutStatus obj) GHC.Base.<> (Data.Aeson..=) "type" (payoutType obj))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Payout where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Payout" (\obj -> (((((((((((((((((((GHC.Base.pure Payout GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "arrival_date")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "automatic")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "balance_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "destination")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "failure_balance_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "failure_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "failure_message")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "source_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "statement_descriptor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type"))

-- | Define the one-of schema payoutBalance_transaction\'
--
-- ID of the balance transaction that describes the impact of this payout on your account balance.
data PayoutBalanceTransaction'Variants
  = PayoutBalanceTransaction'BalanceTransaction BalanceTransaction
  | PayoutBalanceTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PayoutBalanceTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PayoutBalanceTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema payoutDestination\'
--
-- ID of the bank account or card the payout was sent to.
data PayoutDestination'Variants
  = PayoutDestination'BankAccount BankAccount
  | PayoutDestination'Card Card
  | PayoutDestination'DeletedBankAccount DeletedBankAccount
  | PayoutDestination'DeletedCard DeletedCard
  | PayoutDestination'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PayoutDestination'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PayoutDestination'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema payoutFailure_balance_transaction\'
--
-- If the payout failed or was canceled, this will be the ID of the balance transaction that reversed the initial balance transaction, and puts the funds from the failed payout back in your balance.
data PayoutFailureBalanceTransaction'Variants
  = PayoutFailureBalanceTransaction'BalanceTransaction BalanceTransaction
  | PayoutFailureBalanceTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PayoutFailureBalanceTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PayoutFailureBalanceTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema payoutMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data PayoutMetadata'
  = PayoutMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PayoutMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON PayoutMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PayoutMetadata'" (\obj -> GHC.Base.pure PayoutMetadata')

-- | Defines the enum schema payoutObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data PayoutObject'
  = PayoutObject'EnumOther Data.Aeson.Types.Internal.Value
  | PayoutObject'EnumTyped Data.Text.Internal.Text
  | PayoutObject'EnumStringPayout
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PayoutObject' where
  toJSON (PayoutObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PayoutObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PayoutObject'EnumStringPayout) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payout"

instance Data.Aeson.FromJSON PayoutObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "payout")
          then PayoutObject'EnumStringPayout
          else PayoutObject'EnumOther val
      )

-- | Defines the enum schema payoutType\'
--
-- Can be \`bank_account\` or \`card\`.
data PayoutType'
  = PayoutType'EnumOther Data.Aeson.Types.Internal.Value
  | PayoutType'EnumTyped Data.Text.Internal.Text
  | PayoutType'EnumStringBankAccount
  | PayoutType'EnumStringCard
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PayoutType' where
  toJSON (PayoutType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PayoutType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PayoutType'EnumStringBankAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account"
  toJSON (PayoutType'EnumStringCard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card"

instance Data.Aeson.FromJSON PayoutType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account")
          then PayoutType'EnumStringBankAccount
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card")
              then PayoutType'EnumStringCard
              else PayoutType'EnumOther val
      )

-- | Defines the data type for the schema person
--
-- This is an object representing a person associated with a Stripe account.
--
-- Related guide: [Handling Identity Verification with the API](https:\/\/stripe.com\/docs\/connect\/identity-verification-api\#person-information).
data Person
  = Person
      { -- | account
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAccount :: Data.Text.Internal.Text,
        -- | address:
        personAddress :: (GHC.Maybe.Maybe Address),
        -- | address_kana
        personAddressKana :: (GHC.Maybe.Maybe PersonAddressKana'),
        -- | address_kanji
        personAddressKanji :: (GHC.Maybe.Maybe PersonAddressKanji'),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        personCreated :: GHC.Integer.Type.Integer,
        -- | dob:
        personDob :: (GHC.Maybe.Maybe LegalEntityDob),
        -- | email
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | first_name
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personFirstName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | first_name_kana
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personFirstNameKana :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | first_name_kanji
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personFirstNameKanji :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | gender
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personGender :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personId :: Data.Text.Internal.Text,
        -- | id_number_provided
        personIdNumberProvided :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | last_name
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personLastName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | last_name_kana
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personLastNameKana :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | last_name_kanji
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personLastNameKanji :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | maiden_name
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personMaidenName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        personMetadata :: (GHC.Maybe.Maybe PersonMetadata'),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        personObject :: PersonObject',
        -- | phone
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | relationship:
        personRelationship :: (GHC.Maybe.Maybe PersonRelationship),
        -- | requirements
        personRequirements :: (GHC.Maybe.Maybe PersonRequirements'),
        -- | ssn_last_4_provided
        personSsnLast_4Provided :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | verification:
        personVerification :: (GHC.Maybe.Maybe LegalEntityPersonVerification)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Person where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (personAccount obj) : (Data.Aeson..=) "address" (personAddress obj) : (Data.Aeson..=) "address_kana" (personAddressKana obj) : (Data.Aeson..=) "address_kanji" (personAddressKanji obj) : (Data.Aeson..=) "created" (personCreated obj) : (Data.Aeson..=) "dob" (personDob obj) : (Data.Aeson..=) "email" (personEmail obj) : (Data.Aeson..=) "first_name" (personFirstName obj) : (Data.Aeson..=) "first_name_kana" (personFirstNameKana obj) : (Data.Aeson..=) "first_name_kanji" (personFirstNameKanji obj) : (Data.Aeson..=) "gender" (personGender obj) : (Data.Aeson..=) "id" (personId obj) : (Data.Aeson..=) "id_number_provided" (personIdNumberProvided obj) : (Data.Aeson..=) "last_name" (personLastName obj) : (Data.Aeson..=) "last_name_kana" (personLastNameKana obj) : (Data.Aeson..=) "last_name_kanji" (personLastNameKanji obj) : (Data.Aeson..=) "maiden_name" (personMaidenName obj) : (Data.Aeson..=) "metadata" (personMetadata obj) : (Data.Aeson..=) "object" (personObject obj) : (Data.Aeson..=) "phone" (personPhone obj) : (Data.Aeson..=) "relationship" (personRelationship obj) : (Data.Aeson..=) "requirements" (personRequirements obj) : (Data.Aeson..=) "ssn_last_4_provided" (personSsnLast_4Provided obj) : (Data.Aeson..=) "verification" (personVerification obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (personAccount obj) GHC.Base.<> ((Data.Aeson..=) "address" (personAddress obj) GHC.Base.<> ((Data.Aeson..=) "address_kana" (personAddressKana obj) GHC.Base.<> ((Data.Aeson..=) "address_kanji" (personAddressKanji obj) GHC.Base.<> ((Data.Aeson..=) "created" (personCreated obj) GHC.Base.<> ((Data.Aeson..=) "dob" (personDob obj) GHC.Base.<> ((Data.Aeson..=) "email" (personEmail obj) GHC.Base.<> ((Data.Aeson..=) "first_name" (personFirstName obj) GHC.Base.<> ((Data.Aeson..=) "first_name_kana" (personFirstNameKana obj) GHC.Base.<> ((Data.Aeson..=) "first_name_kanji" (personFirstNameKanji obj) GHC.Base.<> ((Data.Aeson..=) "gender" (personGender obj) GHC.Base.<> ((Data.Aeson..=) "id" (personId obj) GHC.Base.<> ((Data.Aeson..=) "id_number_provided" (personIdNumberProvided obj) GHC.Base.<> ((Data.Aeson..=) "last_name" (personLastName obj) GHC.Base.<> ((Data.Aeson..=) "last_name_kana" (personLastNameKana obj) GHC.Base.<> ((Data.Aeson..=) "last_name_kanji" (personLastNameKanji obj) GHC.Base.<> ((Data.Aeson..=) "maiden_name" (personMaidenName obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (personMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (personObject obj) GHC.Base.<> ((Data.Aeson..=) "phone" (personPhone obj) GHC.Base.<> ((Data.Aeson..=) "relationship" (personRelationship obj) GHC.Base.<> ((Data.Aeson..=) "requirements" (personRequirements obj) GHC.Base.<> ((Data.Aeson..=) "ssn_last_4_provided" (personSsnLast_4Provided obj) GHC.Base.<> (Data.Aeson..=) "verification" (personVerification obj))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Person where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Person" (\obj -> (((((((((((((((((((((((GHC.Base.pure Person GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_kana")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_kanji")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dob")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "first_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "first_name_kana")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "first_name_kanji")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "gender")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id_number_provided")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last_name_kana")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last_name_kanji")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "maiden_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "relationship")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "requirements")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ssn_last_4_provided")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verification"))

-- | Defines the data type for the schema personAddress_kana\'
data PersonAddressKana'
  = PersonAddressKana'
      { -- | city: City\/Ward.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAddressKana'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAddressKana'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Block\/Building number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAddressKana'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Building details.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAddressKana'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAddressKana'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: Prefecture.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAddressKana'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | town: Town\/cho-me.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAddressKana'Town :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PersonAddressKana' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (personAddressKana'City obj) : (Data.Aeson..=) "country" (personAddressKana'Country obj) : (Data.Aeson..=) "line1" (personAddressKana'Line1 obj) : (Data.Aeson..=) "line2" (personAddressKana'Line2 obj) : (Data.Aeson..=) "postal_code" (personAddressKana'PostalCode obj) : (Data.Aeson..=) "state" (personAddressKana'State obj) : (Data.Aeson..=) "town" (personAddressKana'Town obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (personAddressKana'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (personAddressKana'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (personAddressKana'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (personAddressKana'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (personAddressKana'PostalCode obj) GHC.Base.<> ((Data.Aeson..=) "state" (personAddressKana'State obj) GHC.Base.<> (Data.Aeson..=) "town" (personAddressKana'Town obj)))))))

instance Data.Aeson.Types.FromJSON.FromJSON PersonAddressKana' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PersonAddressKana'" (\obj -> ((((((GHC.Base.pure PersonAddressKana' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "town"))

-- | Defines the data type for the schema personAddress_kanji\'
data PersonAddressKanji'
  = PersonAddressKanji'
      { -- | city: City\/Ward.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAddressKanji'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAddressKanji'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Block\/Building number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAddressKanji'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Building details.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAddressKanji'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAddressKanji'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: Prefecture.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAddressKanji'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | town: Town\/cho-me.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        personAddressKanji'Town :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PersonAddressKanji' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (personAddressKanji'City obj) : (Data.Aeson..=) "country" (personAddressKanji'Country obj) : (Data.Aeson..=) "line1" (personAddressKanji'Line1 obj) : (Data.Aeson..=) "line2" (personAddressKanji'Line2 obj) : (Data.Aeson..=) "postal_code" (personAddressKanji'PostalCode obj) : (Data.Aeson..=) "state" (personAddressKanji'State obj) : (Data.Aeson..=) "town" (personAddressKanji'Town obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (personAddressKanji'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (personAddressKanji'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (personAddressKanji'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (personAddressKanji'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (personAddressKanji'PostalCode obj) GHC.Base.<> ((Data.Aeson..=) "state" (personAddressKanji'State obj) GHC.Base.<> (Data.Aeson..=) "town" (personAddressKanji'Town obj)))))))

instance Data.Aeson.Types.FromJSON.FromJSON PersonAddressKanji' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PersonAddressKanji'" (\obj -> ((((((GHC.Base.pure PersonAddressKanji' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "town"))

-- | Defines the data type for the schema personMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data PersonMetadata'
  = PersonMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PersonMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON PersonMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PersonMetadata'" (\obj -> GHC.Base.pure PersonMetadata')

-- | Defines the enum schema personObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data PersonObject'
  = PersonObject'EnumOther Data.Aeson.Types.Internal.Value
  | PersonObject'EnumTyped Data.Text.Internal.Text
  | PersonObject'EnumStringPerson
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PersonObject' where
  toJSON (PersonObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PersonObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PersonObject'EnumStringPerson) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "person"

instance Data.Aeson.FromJSON PersonObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "person")
          then PersonObject'EnumStringPerson
          else PersonObject'EnumOther val
      )

-- | Defines the data type for the schema personRequirements\'
data PersonRequirements'
  = PersonRequirements'
      { -- | currently_due: Fields that need to be collected to keep the person\'s account enabled. If not collected by the account\'s \`current_deadline\`, these fields appear in \`past_due\` as well, and the account is disabled.
        personRequirements'CurrentlyDue :: (GHC.Maybe.Maybe ([] Data.Text.Internal.Text)),
        -- | errors: The fields that need to be collected again because validation or verification failed for some reason.
        personRequirements'Errors :: (GHC.Maybe.Maybe ([] AccountRequirementsError)),
        -- | eventually_due: Fields that need to be collected assuming all volume thresholds are reached. As fields are needed, they are moved to \`currently_due\` and the account\'s \`current_deadline\` is set.
        personRequirements'EventuallyDue :: (GHC.Maybe.Maybe ([] Data.Text.Internal.Text)),
        -- | past_due: Fields that weren\'t collected by the account\'s \`current_deadline\`. These fields need to be collected to enable payouts for the person\'s account.
        personRequirements'PastDue :: (GHC.Maybe.Maybe ([] Data.Text.Internal.Text)),
        -- | pending_verification: Fields that may become required depending on the results of verification or review. An empty array unless an asynchronous verification is pending. If verification fails, the fields in this array become required and move to \`currently_due\` or \`past_due\`.
        personRequirements'PendingVerification :: (GHC.Maybe.Maybe ([] Data.Text.Internal.Text))
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PersonRequirements' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "currently_due" (personRequirements'CurrentlyDue obj) : (Data.Aeson..=) "errors" (personRequirements'Errors obj) : (Data.Aeson..=) "eventually_due" (personRequirements'EventuallyDue obj) : (Data.Aeson..=) "past_due" (personRequirements'PastDue obj) : (Data.Aeson..=) "pending_verification" (personRequirements'PendingVerification obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "currently_due" (personRequirements'CurrentlyDue obj) GHC.Base.<> ((Data.Aeson..=) "errors" (personRequirements'Errors obj) GHC.Base.<> ((Data.Aeson..=) "eventually_due" (personRequirements'EventuallyDue obj) GHC.Base.<> ((Data.Aeson..=) "past_due" (personRequirements'PastDue obj) GHC.Base.<> (Data.Aeson..=) "pending_verification" (personRequirements'PendingVerification obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON PersonRequirements' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PersonRequirements'" (\obj -> ((((GHC.Base.pure PersonRequirements' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currently_due")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "errors")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "eventually_due")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "past_due")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "pending_verification"))

-- | Defines the data type for the schema plan
--
-- Plans define the base price, currency, and billing cycle for subscriptions.
-- For example, you might have a \<currency>5\<\/currency>\/month plan
-- that provides limited access to your products, and a
-- \<currency>15\<\/currency>\/month plan that allows full access.
--
-- Related guide: [Managing Products and Plans](https:\/\/stripe.com\/docs\/billing\/subscriptions\/products-and-plans).
data Plan
  = Plan
      { -- | active: Whether the plan is currently available for new subscriptions.
        planActive :: GHC.Types.Bool,
        -- | aggregate_usage: Specifies a usage aggregation strategy for plans of \`usage_type=metered\`. Allowed values are \`sum\` for summing up all usage during a period, \`last_during_period\` for using the last usage record reported within a period, \`last_ever\` for using the last usage record ever (across period bounds) or \`max\` which uses the usage record with the maximum reported usage during a period. Defaults to \`sum\`.
        planAggregateUsage :: (GHC.Maybe.Maybe PlanAggregateUsage'),
        -- | amount: The amount in %s to be charged on the interval specified.
        planAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | amount_decimal: Same as \`amount\`, but contains a decimal value with at most 12 decimal places.
        planAmountDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | billing_scheme: Describes how to compute the price per period. Either \`per_unit\` or \`tiered\`. \`per_unit\` indicates that the fixed amount (specified in \`amount\`) will be charged per unit in \`quantity\` (for plans with \`usage_type=licensed\`), or per unit of total usage (for plans with \`usage_type=metered\`). \`tiered\` indicates that the unit pricing will be computed using a tiering strategy as defined using the \`tiers\` and \`tiers_mode\` attributes.
        planBillingScheme :: (GHC.Maybe.Maybe PlanBillingScheme'),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        planCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        planCurrency :: Data.Text.Internal.Text,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        planId :: Data.Text.Internal.Text,
        -- | interval: The frequency at which a subscription is billed. One of \`day\`, \`week\`, \`month\` or \`year\`.
        planInterval :: PlanInterval',
        -- | interval_count: The number of intervals (specified in the \`interval\` attribute) between subscription billings. For example, \`interval=month\` and \`interval_count=3\` bills every 3 months.
        planIntervalCount :: GHC.Integer.Type.Integer,
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        planLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        planMetadata :: PlanMetadata',
        -- | nickname: A brief description of the plan, hidden from customers.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        planNickname :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        planObject :: PlanObject',
        -- | product: The product whose pricing this plan determines.
        planProduct :: (GHC.Maybe.Maybe PlanProduct'Variants),
        -- | tiers: Each element represents a pricing tier. This parameter requires \`billing_scheme\` to be set to \`tiered\`. See also the documentation for \`billing_scheme\`.
        planTiers :: (GHC.Maybe.Maybe ([] PlanTier)),
        -- | tiers_mode: Defines if the tiering price should be \`graduated\` or \`volume\` based. In \`volume\`-based tiering, the maximum quantity within a period determines the per unit price. In \`graduated\` tiering, pricing can change as the quantity grows.
        planTiersMode :: (GHC.Maybe.Maybe PlanTiersMode'),
        -- | transform_usage: Apply a transformation to the reported usage or set quantity before computing the amount billed. Cannot be combined with \`tiers\`.
        planTransformUsage :: (GHC.Maybe.Maybe PlanTransformUsage'),
        -- | trial_period_days: Default number of trial days when subscribing a customer to this plan using [\`trial_from_plan=true\`](https:\/\/stripe.com\/docs\/api\#create_subscription-trial_from_plan).
        planTrialPeriodDays :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | usage_type: Configures how the quantity per period should be determined. Can be either \`metered\` or \`licensed\`. \`licensed\` automatically bills the \`quantity\` set when adding it to a subscription. \`metered\` aggregates the total usage based on usage records. Defaults to \`licensed\`.
        planUsageType :: PlanUsageType'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Plan where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "active" (planActive obj) : (Data.Aeson..=) "aggregate_usage" (planAggregateUsage obj) : (Data.Aeson..=) "amount" (planAmount obj) : (Data.Aeson..=) "amount_decimal" (planAmountDecimal obj) : (Data.Aeson..=) "billing_scheme" (planBillingScheme obj) : (Data.Aeson..=) "created" (planCreated obj) : (Data.Aeson..=) "currency" (planCurrency obj) : (Data.Aeson..=) "id" (planId obj) : (Data.Aeson..=) "interval" (planInterval obj) : (Data.Aeson..=) "interval_count" (planIntervalCount obj) : (Data.Aeson..=) "livemode" (planLivemode obj) : (Data.Aeson..=) "metadata" (planMetadata obj) : (Data.Aeson..=) "nickname" (planNickname obj) : (Data.Aeson..=) "object" (planObject obj) : (Data.Aeson..=) "product" (planProduct obj) : (Data.Aeson..=) "tiers" (planTiers obj) : (Data.Aeson..=) "tiers_mode" (planTiersMode obj) : (Data.Aeson..=) "transform_usage" (planTransformUsage obj) : (Data.Aeson..=) "trial_period_days" (planTrialPeriodDays obj) : (Data.Aeson..=) "usage_type" (planUsageType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "active" (planActive obj) GHC.Base.<> ((Data.Aeson..=) "aggregate_usage" (planAggregateUsage obj) GHC.Base.<> ((Data.Aeson..=) "amount" (planAmount obj) GHC.Base.<> ((Data.Aeson..=) "amount_decimal" (planAmountDecimal obj) GHC.Base.<> ((Data.Aeson..=) "billing_scheme" (planBillingScheme obj) GHC.Base.<> ((Data.Aeson..=) "created" (planCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (planCurrency obj) GHC.Base.<> ((Data.Aeson..=) "id" (planId obj) GHC.Base.<> ((Data.Aeson..=) "interval" (planInterval obj) GHC.Base.<> ((Data.Aeson..=) "interval_count" (planIntervalCount obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (planLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (planMetadata obj) GHC.Base.<> ((Data.Aeson..=) "nickname" (planNickname obj) GHC.Base.<> ((Data.Aeson..=) "object" (planObject obj) GHC.Base.<> ((Data.Aeson..=) "product" (planProduct obj) GHC.Base.<> ((Data.Aeson..=) "tiers" (planTiers obj) GHC.Base.<> ((Data.Aeson..=) "tiers_mode" (planTiersMode obj) GHC.Base.<> ((Data.Aeson..=) "transform_usage" (planTransformUsage obj) GHC.Base.<> ((Data.Aeson..=) "trial_period_days" (planTrialPeriodDays obj) GHC.Base.<> (Data.Aeson..=) "usage_type" (planUsageType obj))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Plan where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Plan" (\obj -> (((((((((((((((((((GHC.Base.pure Plan GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "active")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "aggregate_usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount_decimal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_scheme")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "interval")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "interval_count")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "nickname")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "product")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tiers")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tiers_mode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transform_usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "trial_period_days")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "usage_type"))

-- | Defines the enum schema planAggregate_usage\'
--
-- Specifies a usage aggregation strategy for plans of \`usage_type=metered\`. Allowed values are \`sum\` for summing up all usage during a period, \`last_during_period\` for using the last usage record reported within a period, \`last_ever\` for using the last usage record ever (across period bounds) or \`max\` which uses the usage record with the maximum reported usage during a period. Defaults to \`sum\`.
data PlanAggregateUsage'
  = PlanAggregateUsage'EnumOther Data.Aeson.Types.Internal.Value
  | PlanAggregateUsage'EnumTyped Data.Text.Internal.Text
  | PlanAggregateUsage'EnumStringLastDuringPeriod
  | PlanAggregateUsage'EnumStringLastEver
  | PlanAggregateUsage'EnumStringMax
  | PlanAggregateUsage'EnumStringSum
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PlanAggregateUsage' where
  toJSON (PlanAggregateUsage'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PlanAggregateUsage'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PlanAggregateUsage'EnumStringLastDuringPeriod) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_during_period"
  toJSON (PlanAggregateUsage'EnumStringLastEver) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_ever"
  toJSON (PlanAggregateUsage'EnumStringMax) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "max"
  toJSON (PlanAggregateUsage'EnumStringSum) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sum"

instance Data.Aeson.FromJSON PlanAggregateUsage' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_during_period")
          then PlanAggregateUsage'EnumStringLastDuringPeriod
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_ever")
              then PlanAggregateUsage'EnumStringLastEver
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "max")
                  then PlanAggregateUsage'EnumStringMax
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sum")
                      then PlanAggregateUsage'EnumStringSum
                      else PlanAggregateUsage'EnumOther val
      )

-- | Defines the enum schema planBilling_scheme\'
--
-- Describes how to compute the price per period. Either \`per_unit\` or \`tiered\`. \`per_unit\` indicates that the fixed amount (specified in \`amount\`) will be charged per unit in \`quantity\` (for plans with \`usage_type=licensed\`), or per unit of total usage (for plans with \`usage_type=metered\`). \`tiered\` indicates that the unit pricing will be computed using a tiering strategy as defined using the \`tiers\` and \`tiers_mode\` attributes.
data PlanBillingScheme'
  = PlanBillingScheme'EnumOther Data.Aeson.Types.Internal.Value
  | PlanBillingScheme'EnumTyped Data.Text.Internal.Text
  | PlanBillingScheme'EnumStringPerUnit
  | PlanBillingScheme'EnumStringTiered
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PlanBillingScheme' where
  toJSON (PlanBillingScheme'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PlanBillingScheme'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PlanBillingScheme'EnumStringPerUnit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "per_unit"
  toJSON (PlanBillingScheme'EnumStringTiered) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tiered"

instance Data.Aeson.FromJSON PlanBillingScheme' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "per_unit")
          then PlanBillingScheme'EnumStringPerUnit
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tiered")
              then PlanBillingScheme'EnumStringTiered
              else PlanBillingScheme'EnumOther val
      )

-- | Defines the enum schema planInterval\'
--
-- The frequency at which a subscription is billed. One of \`day\`, \`week\`, \`month\` or \`year\`.
data PlanInterval'
  = PlanInterval'EnumOther Data.Aeson.Types.Internal.Value
  | PlanInterval'EnumTyped Data.Text.Internal.Text
  | PlanInterval'EnumStringDay
  | PlanInterval'EnumStringMonth
  | PlanInterval'EnumStringWeek
  | PlanInterval'EnumStringYear
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PlanInterval' where
  toJSON (PlanInterval'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PlanInterval'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PlanInterval'EnumStringDay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "day"
  toJSON (PlanInterval'EnumStringMonth) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month"
  toJSON (PlanInterval'EnumStringWeek) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "week"
  toJSON (PlanInterval'EnumStringYear) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "year"

instance Data.Aeson.FromJSON PlanInterval' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "day")
          then PlanInterval'EnumStringDay
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month")
              then PlanInterval'EnumStringMonth
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "week")
                  then PlanInterval'EnumStringWeek
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "year")
                      then PlanInterval'EnumStringYear
                      else PlanInterval'EnumOther val
      )

-- | Defines the data type for the schema planMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data PlanMetadata'
  = PlanMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PlanMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON PlanMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PlanMetadata'" (\obj -> GHC.Base.pure PlanMetadata')

-- | Defines the enum schema planObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data PlanObject'
  = PlanObject'EnumOther Data.Aeson.Types.Internal.Value
  | PlanObject'EnumTyped Data.Text.Internal.Text
  | PlanObject'EnumStringPlan
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PlanObject' where
  toJSON (PlanObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PlanObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PlanObject'EnumStringPlan) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plan"

instance Data.Aeson.FromJSON PlanObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plan")
          then PlanObject'EnumStringPlan
          else PlanObject'EnumOther val
      )

-- | Define the one-of schema planProduct\'
--
-- The product whose pricing this plan determines.
data PlanProduct'Variants
  = PlanProduct'DeletedProduct DeletedProduct
  | PlanProduct'Product Product
  | PlanProduct'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON PlanProduct'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON PlanProduct'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema planTiers_mode\'
--
-- Defines if the tiering price should be \`graduated\` or \`volume\` based. In \`volume\`-based tiering, the maximum quantity within a period determines the per unit price. In \`graduated\` tiering, pricing can change as the quantity grows.
data PlanTiersMode'
  = PlanTiersMode'EnumOther Data.Aeson.Types.Internal.Value
  | PlanTiersMode'EnumTyped Data.Text.Internal.Text
  | PlanTiersMode'EnumStringGraduated
  | PlanTiersMode'EnumStringVolume
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PlanTiersMode' where
  toJSON (PlanTiersMode'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PlanTiersMode'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PlanTiersMode'EnumStringGraduated) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "graduated"
  toJSON (PlanTiersMode'EnumStringVolume) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "volume"

instance Data.Aeson.FromJSON PlanTiersMode' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "graduated")
          then PlanTiersMode'EnumStringGraduated
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "volume")
              then PlanTiersMode'EnumStringVolume
              else PlanTiersMode'EnumOther val
      )

-- | Defines the data type for the schema planTransform_usage\'
--
-- Apply a transformation to the reported usage or set quantity before computing the amount billed. Cannot be combined with \\\`tiers\\\`.
data PlanTransformUsage'
  = PlanTransformUsage'
      { -- | divide_by: Divide usage by this number.
        planTransformUsage'DivideBy :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | round: After division, either round the result \`up\` or \`down\`.
        planTransformUsage'Round :: (GHC.Maybe.Maybe PlanTransformUsage'Round')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON PlanTransformUsage' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "divide_by" (planTransformUsage'DivideBy obj) : (Data.Aeson..=) "round" (planTransformUsage'Round obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "divide_by" (planTransformUsage'DivideBy obj) GHC.Base.<> (Data.Aeson..=) "round" (planTransformUsage'Round obj))

instance Data.Aeson.Types.FromJSON.FromJSON PlanTransformUsage' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "PlanTransformUsage'" (\obj -> (GHC.Base.pure PlanTransformUsage' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "divide_by")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "round"))

-- | Defines the enum schema planTransform_usage\'Round\'
--
-- After division, either round the result \`up\` or \`down\`.
data PlanTransformUsage'Round'
  = PlanTransformUsage'Round'EnumOther Data.Aeson.Types.Internal.Value
  | PlanTransformUsage'Round'EnumTyped Data.Text.Internal.Text
  | PlanTransformUsage'Round'EnumStringDown
  | PlanTransformUsage'Round'EnumStringUp
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PlanTransformUsage'Round' where
  toJSON (PlanTransformUsage'Round'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PlanTransformUsage'Round'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PlanTransformUsage'Round'EnumStringDown) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "down"
  toJSON (PlanTransformUsage'Round'EnumStringUp) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "up"

instance Data.Aeson.FromJSON PlanTransformUsage'Round' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "down")
          then PlanTransformUsage'Round'EnumStringDown
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "up")
              then PlanTransformUsage'Round'EnumStringUp
              else PlanTransformUsage'Round'EnumOther val
      )

-- | Defines the enum schema planUsage_type\'
--
-- Configures how the quantity per period should be determined. Can be either \`metered\` or \`licensed\`. \`licensed\` automatically bills the \`quantity\` set when adding it to a subscription. \`metered\` aggregates the total usage based on usage records. Defaults to \`licensed\`.
data PlanUsageType'
  = PlanUsageType'EnumOther Data.Aeson.Types.Internal.Value
  | PlanUsageType'EnumTyped Data.Text.Internal.Text
  | PlanUsageType'EnumStringLicensed
  | PlanUsageType'EnumStringMetered
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON PlanUsageType' where
  toJSON (PlanUsageType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PlanUsageType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (PlanUsageType'EnumStringLicensed) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "licensed"
  toJSON (PlanUsageType'EnumStringMetered) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metered"

instance Data.Aeson.FromJSON PlanUsageType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "licensed")
          then PlanUsageType'EnumStringLicensed
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metered")
              then PlanUsageType'EnumStringMetered
              else PlanUsageType'EnumOther val
      )

-- | Defines the data type for the schema product
--
-- Store representations of products you sell in \`Product\` objects, used in
-- conjunction with [SKUs](https:\/\/stripe.com\/docs\/api\#skus). Products may be physical goods, to be shipped, or
-- digital.
--
-- Documentation on \`Product\`s for use with \`Subscription\`s can be found at
-- [Subscription Products](https:\/\/stripe.com\/docs\/api\#service_products).
--
-- Related guide: [Define products and SKUs](https:\/\/stripe.com\/docs\/orders\#define-products-skus)
data Product
  = Product
      { -- | active: Whether the product is currently available for purchase.
        productActive :: GHC.Types.Bool,
        -- | attributes: A list of up to 5 attributes that each SKU can provide values for (e.g., \`[\"color\", \"size\"]\`).
        productAttributes :: (GHC.Maybe.Maybe ([] Data.Text.Internal.Text)),
        -- | caption: A short one-line description of the product, meant to be displayable to the customer. Only applicable to products of \`type=good\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        productCaption :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        productCreated :: GHC.Integer.Type.Integer,
        -- | deactivate_on: An array of connect application identifiers that cannot purchase this product. Only applicable to products of \`type=good\`.
        productDeactivateOn :: (GHC.Maybe.Maybe ([] Data.Text.Internal.Text)),
        -- | description: The product\'s description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        productDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        productId :: Data.Text.Internal.Text,
        -- | images: A list of up to 8 URLs of images for this product, meant to be displayable to the customer. Only applicable to products of \`type=good\`.
        productImages :: ([] 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.
        productLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        productMetadata :: ProductMetadata',
        -- | name: The product\'s name, meant to be displayable to the customer. Whenever this product is sold via a subscription, name will show up on associated invoice line item descriptions.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        productName :: Data.Text.Internal.Text,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        productObject :: ProductObject',
        -- | package_dimensions: The dimensions of this product for shipping purposes. A SKU associated with this product can override this value by having its own \`package_dimensions\`. Only applicable to products of \`type=good\`.
        productPackageDimensions :: (GHC.Maybe.Maybe ProductPackageDimensions'),
        -- | shippable: Whether this product is a shipped good. Only applicable to products of \`type=good\`.
        productShippable :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | statement_descriptor: Extra information about a product which will appear on your customer\'s credit card statement. In the case that multiple products are billed at once, the first statement descriptor will be used.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        productStatementDescriptor :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | type: The type of the product. The product is either of type \`good\`, which is eligible for use with Orders and SKUs, or \`service\`, which is eligible for use with Subscriptions and Plans.
        productType :: ProductType',
        -- | unit_label: A label that represents units of this product in Stripe and on customers’ receipts and invoices. When set, this will be included in associated invoice line item descriptions.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        productUnitLabel :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | updated: Time at which the object was last updated. Measured in seconds since the Unix epoch.
        productUpdated :: GHC.Integer.Type.Integer,
        -- | url: A URL of a publicly-accessible webpage for this product. Only applicable to products of \`type=good\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 2048
        productUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Product where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "active" (productActive obj) : (Data.Aeson..=) "attributes" (productAttributes obj) : (Data.Aeson..=) "caption" (productCaption obj) : (Data.Aeson..=) "created" (productCreated obj) : (Data.Aeson..=) "deactivate_on" (productDeactivateOn obj) : (Data.Aeson..=) "description" (productDescription obj) : (Data.Aeson..=) "id" (productId obj) : (Data.Aeson..=) "images" (productImages obj) : (Data.Aeson..=) "livemode" (productLivemode obj) : (Data.Aeson..=) "metadata" (productMetadata obj) : (Data.Aeson..=) "name" (productName obj) : (Data.Aeson..=) "object" (productObject obj) : (Data.Aeson..=) "package_dimensions" (productPackageDimensions obj) : (Data.Aeson..=) "shippable" (productShippable obj) : (Data.Aeson..=) "statement_descriptor" (productStatementDescriptor obj) : (Data.Aeson..=) "type" (productType obj) : (Data.Aeson..=) "unit_label" (productUnitLabel obj) : (Data.Aeson..=) "updated" (productUpdated obj) : (Data.Aeson..=) "url" (productUrl obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "active" (productActive obj) GHC.Base.<> ((Data.Aeson..=) "attributes" (productAttributes obj) GHC.Base.<> ((Data.Aeson..=) "caption" (productCaption obj) GHC.Base.<> ((Data.Aeson..=) "created" (productCreated obj) GHC.Base.<> ((Data.Aeson..=) "deactivate_on" (productDeactivateOn obj) GHC.Base.<> ((Data.Aeson..=) "description" (productDescription obj) GHC.Base.<> ((Data.Aeson..=) "id" (productId obj) GHC.Base.<> ((Data.Aeson..=) "images" (productImages obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (productLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (productMetadata obj) GHC.Base.<> ((Data.Aeson..=) "name" (productName obj) GHC.Base.<> ((Data.Aeson..=) "object" (productObject obj) GHC.Base.<> ((Data.Aeson..=) "package_dimensions" (productPackageDimensions obj) GHC.Base.<> ((Data.Aeson..=) "shippable" (productShippable obj) GHC.Base.<> ((Data.Aeson..=) "statement_descriptor" (productStatementDescriptor obj) GHC.Base.<> ((Data.Aeson..=) "type" (productType obj) GHC.Base.<> ((Data.Aeson..=) "unit_label" (productUnitLabel obj) GHC.Base.<> ((Data.Aeson..=) "updated" (productUpdated obj) GHC.Base.<> (Data.Aeson..=) "url" (productUrl obj)))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Product where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Product" (\obj -> ((((((((((((((((((GHC.Base.pure Product GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "active")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "attributes")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "caption")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "deactivate_on")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "images")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "package_dimensions")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "shippable")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "statement_descriptor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "unit_label")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "updated")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "url"))

-- | Defines the data type for the schema productMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data ProductMetadata'
  = ProductMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ProductMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON ProductMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ProductMetadata'" (\obj -> GHC.Base.pure ProductMetadata')

-- | Defines the enum schema productObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data ProductObject'
  = ProductObject'EnumOther Data.Aeson.Types.Internal.Value
  | ProductObject'EnumTyped Data.Text.Internal.Text
  | ProductObject'EnumStringProduct
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ProductObject' where
  toJSON (ProductObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ProductObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ProductObject'EnumStringProduct) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "product"

instance Data.Aeson.FromJSON ProductObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "product")
          then ProductObject'EnumStringProduct
          else ProductObject'EnumOther val
      )

-- | Defines the data type for the schema productPackage_dimensions\'
--
-- The dimensions of this product for shipping purposes. A SKU associated with this product can override this value by having its own \\\`package_dimensions\\\`. Only applicable to products of \\\`type=good\\\`.
data ProductPackageDimensions'
  = ProductPackageDimensions'
      { -- | height: Height, in inches.
        productPackageDimensions'Height :: (GHC.Maybe.Maybe GHC.Types.Double),
        -- | length: Length, in inches.
        productPackageDimensions'Length :: (GHC.Maybe.Maybe GHC.Types.Double),
        -- | weight: Weight, in ounces.
        productPackageDimensions'Weight :: (GHC.Maybe.Maybe GHC.Types.Double),
        -- | width: Width, in inches.
        productPackageDimensions'Width :: (GHC.Maybe.Maybe GHC.Types.Double)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ProductPackageDimensions' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "height" (productPackageDimensions'Height obj) : (Data.Aeson..=) "length" (productPackageDimensions'Length obj) : (Data.Aeson..=) "weight" (productPackageDimensions'Weight obj) : (Data.Aeson..=) "width" (productPackageDimensions'Width obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "height" (productPackageDimensions'Height obj) GHC.Base.<> ((Data.Aeson..=) "length" (productPackageDimensions'Length obj) GHC.Base.<> ((Data.Aeson..=) "weight" (productPackageDimensions'Weight obj) GHC.Base.<> (Data.Aeson..=) "width" (productPackageDimensions'Width obj))))

instance Data.Aeson.Types.FromJSON.FromJSON ProductPackageDimensions' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ProductPackageDimensions'" (\obj -> (((GHC.Base.pure ProductPackageDimensions' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "height")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "length")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "weight")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "width"))

-- | Defines the enum schema productType\'
--
-- The type of the product. The product is either of type \`good\`, which is eligible for use with Orders and SKUs, or \`service\`, which is eligible for use with Subscriptions and Plans.
data ProductType'
  = ProductType'EnumOther Data.Aeson.Types.Internal.Value
  | ProductType'EnumTyped Data.Text.Internal.Text
  | ProductType'EnumStringGood
  | ProductType'EnumStringService
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ProductType' where
  toJSON (ProductType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ProductType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ProductType'EnumStringGood) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "good"
  toJSON (ProductType'EnumStringService) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "service"

instance Data.Aeson.FromJSON ProductType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "good")
          then ProductType'EnumStringGood
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "service")
              then ProductType'EnumStringService
              else ProductType'EnumOther val
      )

-- | Defines the data type for the schema radar.early_fraud_warning
--
-- An early fraud warning indicates that the card issuer has notified us that a
-- charge may be fraudulent.
--
-- Related guide: [Early Fraud Warnings](https:\/\/stripe.com\/docs\/disputes\/measuring\#early-fraud-warnings).
data Radar'earlyFraudWarning
  = Radar'earlyFraudWarning
      { -- | actionable: An EFW is actionable if it has not received a dispute and has not been fully refunded. You may wish to proactively refund a charge that receives an EFW, in order to avoid receiving a dispute later.
        radar'earlyFraudWarningActionable :: GHC.Types.Bool,
        -- | charge: ID of the charge this early fraud warning is for, optionally expanded.
        radar'earlyFraudWarningCharge :: Radar'earlyFraudWarningCharge'Variants,
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        radar'earlyFraudWarningCreated :: GHC.Integer.Type.Integer,
        -- | fraud_type: The type of fraud labelled by the issuer. One of \`card_never_received\`, \`fraudulent_card_application\`, \`made_with_counterfeit_card\`, \`made_with_lost_card\`, \`made_with_stolen_card\`, \`misc\`, \`unauthorized_use_of_card\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        radar'earlyFraudWarningFraudType :: Data.Text.Internal.Text,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        radar'earlyFraudWarningId :: 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.
        radar'earlyFraudWarningLivemode :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        radar'earlyFraudWarningObject :: Radar'earlyFraudWarningObject'
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Radar'earlyFraudWarning where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "actionable" (radar'earlyFraudWarningActionable obj) : (Data.Aeson..=) "charge" (radar'earlyFraudWarningCharge obj) : (Data.Aeson..=) "created" (radar'earlyFraudWarningCreated obj) : (Data.Aeson..=) "fraud_type" (radar'earlyFraudWarningFraudType obj) : (Data.Aeson..=) "id" (radar'earlyFraudWarningId obj) : (Data.Aeson..=) "livemode" (radar'earlyFraudWarningLivemode obj) : (Data.Aeson..=) "object" (radar'earlyFraudWarningObject obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "actionable" (radar'earlyFraudWarningActionable obj) GHC.Base.<> ((Data.Aeson..=) "charge" (radar'earlyFraudWarningCharge obj) GHC.Base.<> ((Data.Aeson..=) "created" (radar'earlyFraudWarningCreated obj) GHC.Base.<> ((Data.Aeson..=) "fraud_type" (radar'earlyFraudWarningFraudType obj) GHC.Base.<> ((Data.Aeson..=) "id" (radar'earlyFraudWarningId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (radar'earlyFraudWarningLivemode obj) GHC.Base.<> (Data.Aeson..=) "object" (radar'earlyFraudWarningObject obj)))))))

instance Data.Aeson.Types.FromJSON.FromJSON Radar'earlyFraudWarning where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Radar'earlyFraudWarning" (\obj -> ((((((GHC.Base.pure Radar'earlyFraudWarning GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "actionable")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "charge")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "fraud_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object"))

-- | Define the one-of schema radar.early_fraud_warningCharge\'
--
-- ID of the charge this early fraud warning is for, optionally expanded.
data Radar'earlyFraudWarningCharge'Variants
  = Radar'earlyFraudWarningCharge'Charge Charge
  | Radar'earlyFraudWarningCharge'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON Radar'earlyFraudWarningCharge'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON Radar'earlyFraudWarningCharge'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema radar.early_fraud_warningObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data Radar'earlyFraudWarningObject'
  = Radar'earlyFraudWarningObject'EnumOther Data.Aeson.Types.Internal.Value
  | Radar'earlyFraudWarningObject'EnumTyped Data.Text.Internal.Text
  | Radar'earlyFraudWarningObject'EnumStringRadar'earlyFraudWarning
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Radar'earlyFraudWarningObject' where
  toJSON (Radar'earlyFraudWarningObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Radar'earlyFraudWarningObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Radar'earlyFraudWarningObject'EnumStringRadar'earlyFraudWarning) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "radar.early_fraud_warning"

instance Data.Aeson.FromJSON Radar'earlyFraudWarningObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "radar.early_fraud_warning")
          then Radar'earlyFraudWarningObject'EnumStringRadar'earlyFraudWarning
          else Radar'earlyFraudWarningObject'EnumOther val
      )

-- | Defines the data type for the schema recipient
--
-- With \`Recipient\` objects, you can transfer money from your Stripe account to a
-- third-party bank account or debit card. The API allows you to create, delete,
-- and update your recipients. You can retrieve individual recipients as well as
-- a list of all your recipients.
--
-- **\`Recipient\` objects have been deprecated in favor of
-- [Connect](https:\/\/stripe.com\/docs\/connect), specifically Connect\'s much more powerful
-- [Account objects](https:\/\/stripe.com\/docs\/api\#account). Stripe accounts that don\'t already use
-- recipients can no longer begin doing so. Please use \`Account\` objects
-- instead. If you are already using recipients, please see our
-- [migration guide](https:\/\/stripe.com\/docs\/connect\/recipient-account-migrations) for more information.**
data Recipient
  = Recipient
      { -- | active_account: Hash describing the current account on the recipient, if there is one.
        recipientActiveAccount :: (GHC.Maybe.Maybe RecipientActiveAccount'),
        -- | cards:
        recipientCards :: (GHC.Maybe.Maybe RecipientCards'),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        recipientCreated :: GHC.Integer.Type.Integer,
        -- | default_card: The default card to use for creating transfers to this recipient.
        recipientDefaultCard :: (GHC.Maybe.Maybe RecipientDefaultCard'Variants),
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | email
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientId :: 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.
        recipientLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        recipientMetadata :: RecipientMetadata',
        -- | migrated_to: The ID of the [Custom account](https:\/\/stripe.com\/docs\/connect\/custom-accounts) this recipient was migrated to. If set, the recipient can no longer be updated, nor can transfers be made to it: use the Custom account instead.
        recipientMigratedTo :: (GHC.Maybe.Maybe RecipientMigratedTo'Variants),
        -- | name: Full, legal name of the recipient.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        recipientObject :: RecipientObject',
        -- | rolled_back_from
        recipientRolledBackFrom :: (GHC.Maybe.Maybe RecipientRolledBackFrom'Variants),
        -- | type: Type of the recipient, one of \`individual\` or \`corporation\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientType :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Recipient where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "active_account" (recipientActiveAccount obj) : (Data.Aeson..=) "cards" (recipientCards obj) : (Data.Aeson..=) "created" (recipientCreated obj) : (Data.Aeson..=) "default_card" (recipientDefaultCard obj) : (Data.Aeson..=) "description" (recipientDescription obj) : (Data.Aeson..=) "email" (recipientEmail obj) : (Data.Aeson..=) "id" (recipientId obj) : (Data.Aeson..=) "livemode" (recipientLivemode obj) : (Data.Aeson..=) "metadata" (recipientMetadata obj) : (Data.Aeson..=) "migrated_to" (recipientMigratedTo obj) : (Data.Aeson..=) "name" (recipientName obj) : (Data.Aeson..=) "object" (recipientObject obj) : (Data.Aeson..=) "rolled_back_from" (recipientRolledBackFrom obj) : (Data.Aeson..=) "type" (recipientType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "active_account" (recipientActiveAccount obj) GHC.Base.<> ((Data.Aeson..=) "cards" (recipientCards obj) GHC.Base.<> ((Data.Aeson..=) "created" (recipientCreated obj) GHC.Base.<> ((Data.Aeson..=) "default_card" (recipientDefaultCard obj) GHC.Base.<> ((Data.Aeson..=) "description" (recipientDescription obj) GHC.Base.<> ((Data.Aeson..=) "email" (recipientEmail obj) GHC.Base.<> ((Data.Aeson..=) "id" (recipientId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (recipientLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (recipientMetadata obj) GHC.Base.<> ((Data.Aeson..=) "migrated_to" (recipientMigratedTo obj) GHC.Base.<> ((Data.Aeson..=) "name" (recipientName obj) GHC.Base.<> ((Data.Aeson..=) "object" (recipientObject obj) GHC.Base.<> ((Data.Aeson..=) "rolled_back_from" (recipientRolledBackFrom obj) GHC.Base.<> (Data.Aeson..=) "type" (recipientType obj))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Recipient where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Recipient" (\obj -> (((((((((((((GHC.Base.pure Recipient GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "active_account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cards")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "migrated_to")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "rolled_back_from")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type"))

-- | Defines the data type for the schema recipientActive_account\'
--
-- Hash describing the current account on the recipient, if there is one.
data RecipientActiveAccount'
  = RecipientActiveAccount'
      { -- | account: The ID of the account that the bank account is associated with.
        recipientActiveAccount'Account :: (GHC.Maybe.Maybe RecipientActiveAccount'Account'Variants),
        -- | account_holder_name: The name of the person or business that owns the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientActiveAccount'AccountHolderName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | account_holder_type: The type of entity that holds the account. This can be either \`individual\` or \`company\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientActiveAccount'AccountHolderType :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | bank_name: Name of the bank associated with the routing number (e.g., \`WELLS FARGO\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientActiveAccount'BankName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter ISO code representing the country the bank account is located in.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientActiveAccount'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/payouts) paid out to the bank account.
        recipientActiveAccount'Currency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer: The ID of the customer that the bank account is associated with.
        recipientActiveAccount'Customer :: (GHC.Maybe.Maybe RecipientActiveAccount'Customer'Variants),
        -- | default_for_currency: Whether this bank account is the default external account for its currency.
        recipientActiveAccount'DefaultForCurrency :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | fingerprint: Uniquely identifies this particular bank account. You can use this attribute to check whether two bank accounts are the same.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientActiveAccount'Fingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientActiveAccount'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | last4: The last four digits of the bank account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientActiveAccount'Last4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        recipientActiveAccount'Metadata :: (GHC.Maybe.Maybe RecipientActiveAccount'Metadata'),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        recipientActiveAccount'Object :: (GHC.Maybe.Maybe RecipientActiveAccount'Object'),
        -- | routing_number: The routing transit number for the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientActiveAccount'RoutingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: For bank accounts, possible values are \`new\`, \`validated\`, \`verified\`, \`verification_failed\`, or \`errored\`. A bank account that hasn\'t had any activity or validation performed is \`new\`. If Stripe can determine that the bank account exists, its status will be \`validated\`. Note that there often isn’t enough information to know (e.g., for smaller credit unions), and the validation is not always run. If customer bank account verification has succeeded, the bank account status will be \`verified\`. If the verification failed for any reason, such as microdeposit failure, the status will be \`verification_failed\`. If a transfer sent to this bank account fails, we\'ll set the status to \`errored\` and will not continue to send transfers until the bank details are updated.
        --
        -- For external accounts, possible values are \`new\` and \`errored\`. Validations aren\'t run against external accounts because they\'re only used for payouts. This means the other statuses don\'t apply. If a transfer fails, the status is set to \`errored\` and transfers are stopped until account details are updated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientActiveAccount'Status :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON RecipientActiveAccount' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (recipientActiveAccount'Account obj) : (Data.Aeson..=) "account_holder_name" (recipientActiveAccount'AccountHolderName obj) : (Data.Aeson..=) "account_holder_type" (recipientActiveAccount'AccountHolderType obj) : (Data.Aeson..=) "bank_name" (recipientActiveAccount'BankName obj) : (Data.Aeson..=) "country" (recipientActiveAccount'Country obj) : (Data.Aeson..=) "currency" (recipientActiveAccount'Currency obj) : (Data.Aeson..=) "customer" (recipientActiveAccount'Customer obj) : (Data.Aeson..=) "default_for_currency" (recipientActiveAccount'DefaultForCurrency obj) : (Data.Aeson..=) "fingerprint" (recipientActiveAccount'Fingerprint obj) : (Data.Aeson..=) "id" (recipientActiveAccount'Id obj) : (Data.Aeson..=) "last4" (recipientActiveAccount'Last4 obj) : (Data.Aeson..=) "metadata" (recipientActiveAccount'Metadata obj) : (Data.Aeson..=) "object" (recipientActiveAccount'Object obj) : (Data.Aeson..=) "routing_number" (recipientActiveAccount'RoutingNumber obj) : (Data.Aeson..=) "status" (recipientActiveAccount'Status obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (recipientActiveAccount'Account obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_name" (recipientActiveAccount'AccountHolderName obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_type" (recipientActiveAccount'AccountHolderType obj) GHC.Base.<> ((Data.Aeson..=) "bank_name" (recipientActiveAccount'BankName obj) GHC.Base.<> ((Data.Aeson..=) "country" (recipientActiveAccount'Country obj) GHC.Base.<> ((Data.Aeson..=) "currency" (recipientActiveAccount'Currency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (recipientActiveAccount'Customer obj) GHC.Base.<> ((Data.Aeson..=) "default_for_currency" (recipientActiveAccount'DefaultForCurrency obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (recipientActiveAccount'Fingerprint obj) GHC.Base.<> ((Data.Aeson..=) "id" (recipientActiveAccount'Id obj) GHC.Base.<> ((Data.Aeson..=) "last4" (recipientActiveAccount'Last4 obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (recipientActiveAccount'Metadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (recipientActiveAccount'Object obj) GHC.Base.<> ((Data.Aeson..=) "routing_number" (recipientActiveAccount'RoutingNumber obj) GHC.Base.<> (Data.Aeson..=) "status" (recipientActiveAccount'Status obj)))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON RecipientActiveAccount' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "RecipientActiveAccount'" (\obj -> ((((((((((((((GHC.Base.pure RecipientActiveAccount' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bank_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_for_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "routing_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status"))

-- | Define the one-of schema recipientActive_account\'Account\'
--
-- The ID of the account that the bank account is associated with.
data RecipientActiveAccount'Account'Variants
  = RecipientActiveAccount'Account'Account Account
  | RecipientActiveAccount'Account'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON RecipientActiveAccount'Account'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON RecipientActiveAccount'Account'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema recipientActive_account\'Customer\'
--
-- The ID of the customer that the bank account is associated with.
data RecipientActiveAccount'Customer'Variants
  = RecipientActiveAccount'Customer'Customer Customer
  | RecipientActiveAccount'Customer'DeletedCustomer DeletedCustomer
  | RecipientActiveAccount'Customer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON RecipientActiveAccount'Customer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON RecipientActiveAccount'Customer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema recipientActive_account\'Metadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data RecipientActiveAccount'Metadata'
  = RecipientActiveAccount'Metadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON RecipientActiveAccount'Metadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON RecipientActiveAccount'Metadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "RecipientActiveAccount'Metadata'" (\obj -> GHC.Base.pure RecipientActiveAccount'Metadata')

-- | Defines the enum schema recipientActive_account\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data RecipientActiveAccount'Object'
  = RecipientActiveAccount'Object'EnumOther Data.Aeson.Types.Internal.Value
  | RecipientActiveAccount'Object'EnumTyped Data.Text.Internal.Text
  | RecipientActiveAccount'Object'EnumStringBankAccount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON RecipientActiveAccount'Object' where
  toJSON (RecipientActiveAccount'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (RecipientActiveAccount'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (RecipientActiveAccount'Object'EnumStringBankAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account"

instance Data.Aeson.FromJSON RecipientActiveAccount'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account")
          then RecipientActiveAccount'Object'EnumStringBankAccount
          else RecipientActiveAccount'Object'EnumOther val
      )

-- | Defines the data type for the schema recipientCards\'
data RecipientCards'
  = RecipientCards'
      { -- | data
        recipientCards'Data :: ([] Card),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        recipientCards'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        recipientCards'Object :: RecipientCards'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        recipientCards'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON RecipientCards' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (recipientCards'Data obj) : (Data.Aeson..=) "has_more" (recipientCards'HasMore obj) : (Data.Aeson..=) "object" (recipientCards'Object obj) : (Data.Aeson..=) "url" (recipientCards'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (recipientCards'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (recipientCards'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (recipientCards'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (recipientCards'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON RecipientCards' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "RecipientCards'" (\obj -> (((GHC.Base.pure RecipientCards' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema recipientCards\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data RecipientCards'Object'
  = RecipientCards'Object'EnumOther Data.Aeson.Types.Internal.Value
  | RecipientCards'Object'EnumTyped Data.Text.Internal.Text
  | RecipientCards'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON RecipientCards'Object' where
  toJSON (RecipientCards'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (RecipientCards'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (RecipientCards'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON RecipientCards'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then RecipientCards'Object'EnumStringList
          else RecipientCards'Object'EnumOther val
      )

-- | Define the one-of schema recipientDefault_card\'
--
-- The default card to use for creating transfers to this recipient.
data RecipientDefaultCard'Variants
  = RecipientDefaultCard'Card Card
  | RecipientDefaultCard'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON RecipientDefaultCard'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON RecipientDefaultCard'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema recipientMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data RecipientMetadata'
  = RecipientMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON RecipientMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON RecipientMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "RecipientMetadata'" (\obj -> GHC.Base.pure RecipientMetadata')

-- | Define the one-of schema recipientMigrated_to\'
--
-- The ID of the [Custom account](https:\/\/stripe.com\/docs\/connect\/custom-accounts) this recipient was migrated to. If set, the recipient can no longer be updated, nor can transfers be made to it: use the Custom account instead.
data RecipientMigratedTo'Variants
  = RecipientMigratedTo'Account Account
  | RecipientMigratedTo'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON RecipientMigratedTo'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON RecipientMigratedTo'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema recipientObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data RecipientObject'
  = RecipientObject'EnumOther Data.Aeson.Types.Internal.Value
  | RecipientObject'EnumTyped Data.Text.Internal.Text
  | RecipientObject'EnumStringRecipient
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON RecipientObject' where
  toJSON (RecipientObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (RecipientObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (RecipientObject'EnumStringRecipient) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "recipient"

instance Data.Aeson.FromJSON RecipientObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "recipient")
          then RecipientObject'EnumStringRecipient
          else RecipientObject'EnumOther val
      )

-- | Define the one-of schema recipientRolled_back_from\'
data RecipientRolledBackFrom'Variants
  = RecipientRolledBackFrom'Account Account
  | RecipientRolledBackFrom'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON RecipientRolledBackFrom'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON RecipientRolledBackFrom'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema refund
--
-- \`Refund\` objects allow you to refund a charge that has previously been created
-- but not yet refunded. Funds will be refunded to the credit or debit card that
-- was originally charged.
--
-- Related guide: [Refunds](https:\/\/stripe.com\/docs\/refunds).
data Refund
  = Refund
      { -- | amount: Amount, in %s.
        refundAmount :: GHC.Integer.Type.Integer,
        -- | balance_transaction: Balance transaction that describes the impact on your account balance.
        refundBalanceTransaction :: (GHC.Maybe.Maybe RefundBalanceTransaction'Variants),
        -- | charge: ID of the charge that was refunded.
        refundCharge :: (GHC.Maybe.Maybe RefundCharge'Variants),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        refundCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        refundCurrency :: Data.Text.Internal.Text,
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users. (Available on non-card refunds only)
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        refundDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | failure_balance_transaction: If the refund failed, this balance transaction describes the adjustment made on your account balance that reverses the initial balance transaction.
        refundFailureBalanceTransaction :: (GHC.Maybe.Maybe RefundFailureBalanceTransaction'Variants),
        -- | failure_reason: If the refund failed, the reason for refund failure if known. Possible values are \`lost_or_stolen_card\`, \`expired_or_canceled_card\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        refundFailureReason :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        refundId :: Data.Text.Internal.Text,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        refundMetadata :: RefundMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        refundObject :: RefundObject',
        -- | payment_intent: ID of the PaymentIntent that was refunded.
        refundPaymentIntent :: (GHC.Maybe.Maybe RefundPaymentIntent'Variants),
        -- | reason: Reason for the refund, either user-provided (\`duplicate\`, \`fraudulent\`, or \`requested_by_customer\`) or generated by Stripe internally (\`expired_uncaptured_charge\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        refundReason :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | receipt_number: This is the transaction number that appears on email receipts sent for this refund.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        refundReceiptNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | source_transfer_reversal: The transfer reversal that is associated with the refund. Only present if the charge came from another Stripe account. See the Connect documentation for details.
        refundSourceTransferReversal :: (GHC.Maybe.Maybe RefundSourceTransferReversal'Variants),
        -- | status: Status of the refund. For credit card refunds, this can be \`pending\`, \`succeeded\`, or \`failed\`. For other types of refunds, it can be \`pending\`, \`succeeded\`, \`failed\`, or \`canceled\`. Refer to our [refunds](https:\/\/stripe.com\/docs\/refunds\#failed-refunds) documentation for more details.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        refundStatus :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | transfer_reversal: If the accompanying transfer was reversed, the transfer reversal object. Only applicable if the charge was created using the destination parameter.
        refundTransferReversal :: (GHC.Maybe.Maybe RefundTransferReversal'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Refund where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (refundAmount obj) : (Data.Aeson..=) "balance_transaction" (refundBalanceTransaction obj) : (Data.Aeson..=) "charge" (refundCharge obj) : (Data.Aeson..=) "created" (refundCreated obj) : (Data.Aeson..=) "currency" (refundCurrency obj) : (Data.Aeson..=) "description" (refundDescription obj) : (Data.Aeson..=) "failure_balance_transaction" (refundFailureBalanceTransaction obj) : (Data.Aeson..=) "failure_reason" (refundFailureReason obj) : (Data.Aeson..=) "id" (refundId obj) : (Data.Aeson..=) "metadata" (refundMetadata obj) : (Data.Aeson..=) "object" (refundObject obj) : (Data.Aeson..=) "payment_intent" (refundPaymentIntent obj) : (Data.Aeson..=) "reason" (refundReason obj) : (Data.Aeson..=) "receipt_number" (refundReceiptNumber obj) : (Data.Aeson..=) "source_transfer_reversal" (refundSourceTransferReversal obj) : (Data.Aeson..=) "status" (refundStatus obj) : (Data.Aeson..=) "transfer_reversal" (refundTransferReversal obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (refundAmount obj) GHC.Base.<> ((Data.Aeson..=) "balance_transaction" (refundBalanceTransaction obj) GHC.Base.<> ((Data.Aeson..=) "charge" (refundCharge obj) GHC.Base.<> ((Data.Aeson..=) "created" (refundCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (refundCurrency obj) GHC.Base.<> ((Data.Aeson..=) "description" (refundDescription obj) GHC.Base.<> ((Data.Aeson..=) "failure_balance_transaction" (refundFailureBalanceTransaction obj) GHC.Base.<> ((Data.Aeson..=) "failure_reason" (refundFailureReason obj) GHC.Base.<> ((Data.Aeson..=) "id" (refundId obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (refundMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (refundObject obj) GHC.Base.<> ((Data.Aeson..=) "payment_intent" (refundPaymentIntent obj) GHC.Base.<> ((Data.Aeson..=) "reason" (refundReason obj) GHC.Base.<> ((Data.Aeson..=) "receipt_number" (refundReceiptNumber obj) GHC.Base.<> ((Data.Aeson..=) "source_transfer_reversal" (refundSourceTransferReversal obj) GHC.Base.<> ((Data.Aeson..=) "status" (refundStatus obj) GHC.Base.<> (Data.Aeson..=) "transfer_reversal" (refundTransferReversal obj)))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Refund where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Refund" (\obj -> ((((((((((((((((GHC.Base.pure Refund GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "balance_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "charge")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "failure_balance_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "failure_reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_intent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "receipt_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source_transfer_reversal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transfer_reversal"))

-- | Define the one-of schema refundBalance_transaction\'
--
-- Balance transaction that describes the impact on your account balance.
data RefundBalanceTransaction'Variants
  = RefundBalanceTransaction'BalanceTransaction BalanceTransaction
  | RefundBalanceTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON RefundBalanceTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON RefundBalanceTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema refundCharge\'
--
-- ID of the charge that was refunded.
data RefundCharge'Variants
  = RefundCharge'Charge Charge
  | RefundCharge'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON RefundCharge'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON RefundCharge'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema refundFailure_balance_transaction\'
--
-- If the refund failed, this balance transaction describes the adjustment made on your account balance that reverses the initial balance transaction.
data RefundFailureBalanceTransaction'Variants
  = RefundFailureBalanceTransaction'BalanceTransaction BalanceTransaction
  | RefundFailureBalanceTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON RefundFailureBalanceTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON RefundFailureBalanceTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema refundMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data RefundMetadata'
  = RefundMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON RefundMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON RefundMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "RefundMetadata'" (\obj -> GHC.Base.pure RefundMetadata')

-- | Defines the enum schema refundObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data RefundObject'
  = RefundObject'EnumOther Data.Aeson.Types.Internal.Value
  | RefundObject'EnumTyped Data.Text.Internal.Text
  | RefundObject'EnumStringRefund
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON RefundObject' where
  toJSON (RefundObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (RefundObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (RefundObject'EnumStringRefund) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "refund"

instance Data.Aeson.FromJSON RefundObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "refund")
          then RefundObject'EnumStringRefund
          else RefundObject'EnumOther val
      )

-- | Define the one-of schema refundPayment_intent\'
--
-- ID of the PaymentIntent that was refunded.
data RefundPaymentIntent'Variants
  = RefundPaymentIntent'PaymentIntent PaymentIntent
  | RefundPaymentIntent'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON RefundPaymentIntent'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON RefundPaymentIntent'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema refundSource_transfer_reversal\'
--
-- The transfer reversal that is associated with the refund. Only present if the charge came from another Stripe account. See the Connect documentation for details.
data RefundSourceTransferReversal'Variants
  = RefundSourceTransferReversal'TransferReversal TransferReversal
  | RefundSourceTransferReversal'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON RefundSourceTransferReversal'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON RefundSourceTransferReversal'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema refundTransfer_reversal\'
--
-- If the accompanying transfer was reversed, the transfer reversal object. Only applicable if the charge was created using the destination parameter.
data RefundTransferReversal'Variants
  = RefundTransferReversal'TransferReversal TransferReversal
  | RefundTransferReversal'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON RefundTransferReversal'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON RefundTransferReversal'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema reporting.report_run
--
-- The Report Run object represents an instance of a report type generated with
-- specific run parameters. Once the object is created, Stripe begins processing the report.
-- When the report has finished running, it will give you a reference to a file
-- where you can retrieve your results. For an overview, see
-- [API Access to Reports](https:\/\/stripe.com\/docs\/reporting\/statements\/api).
--
-- Note that reports can only be run based on your live-mode data (not test-mode
-- data), and thus related requests must be made with a
-- [live-mode API key](https:\/\/stripe.com\/docs\/keys\#test-live-modes).
data Reporting'reportRun
  = Reporting'reportRun
      { -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        reporting'reportRunCreated :: GHC.Integer.Type.Integer,
        -- | error: If something should go wrong during the run, a message about the failure (populated when
        --  \`status=failed\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reporting'reportRunError :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reporting'reportRunId :: Data.Text.Internal.Text,
        -- | livemode: Always \`true\`: reports can only be run on live-mode data.
        reporting'reportRunLivemode :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        reporting'reportRunObject :: Reporting'reportRunObject',
        -- | parameters:
        reporting'reportRunParameters :: FinancialReportingFinanceReportRunRunParameters,
        -- | report_type: The ID of the [report type](https:\/\/stripe.com\/docs\/reporting\/statements\/api\#report-types) to run, such as \`\"balance.summary.1\"\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reporting'reportRunReportType :: Data.Text.Internal.Text,
        -- | result: The file object representing the result of the report run (populated when
        --  \`status=succeeded\`).
        reporting'reportRunResult :: (GHC.Maybe.Maybe Reporting'reportRunResult'),
        -- | status: Status of this report run. This will be \`pending\` when the run is initially created.
        --  When the run finishes, this will be set to \`succeeded\` and the \`result\` field will be populated.
        --  Rarely, we may encounter an error, at which point this will be set to \`failed\` and the \`error\` field will be populated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reporting'reportRunStatus :: Data.Text.Internal.Text,
        -- | succeeded_at: Timestamp at which this run successfully finished (populated when
        --  \`status=succeeded\`). Measured in seconds since the Unix epoch.
        reporting'reportRunSucceededAt :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Reporting'reportRun where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "created" (reporting'reportRunCreated obj) : (Data.Aeson..=) "error" (reporting'reportRunError obj) : (Data.Aeson..=) "id" (reporting'reportRunId obj) : (Data.Aeson..=) "livemode" (reporting'reportRunLivemode obj) : (Data.Aeson..=) "object" (reporting'reportRunObject obj) : (Data.Aeson..=) "parameters" (reporting'reportRunParameters obj) : (Data.Aeson..=) "report_type" (reporting'reportRunReportType obj) : (Data.Aeson..=) "result" (reporting'reportRunResult obj) : (Data.Aeson..=) "status" (reporting'reportRunStatus obj) : (Data.Aeson..=) "succeeded_at" (reporting'reportRunSucceededAt obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "created" (reporting'reportRunCreated obj) GHC.Base.<> ((Data.Aeson..=) "error" (reporting'reportRunError obj) GHC.Base.<> ((Data.Aeson..=) "id" (reporting'reportRunId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (reporting'reportRunLivemode obj) GHC.Base.<> ((Data.Aeson..=) "object" (reporting'reportRunObject obj) GHC.Base.<> ((Data.Aeson..=) "parameters" (reporting'reportRunParameters obj) GHC.Base.<> ((Data.Aeson..=) "report_type" (reporting'reportRunReportType obj) GHC.Base.<> ((Data.Aeson..=) "result" (reporting'reportRunResult obj) GHC.Base.<> ((Data.Aeson..=) "status" (reporting'reportRunStatus obj) GHC.Base.<> (Data.Aeson..=) "succeeded_at" (reporting'reportRunSucceededAt obj))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Reporting'reportRun where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Reporting'reportRun" (\obj -> (((((((((GHC.Base.pure Reporting'reportRun GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "error")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "parameters")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "report_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "result")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "succeeded_at"))

-- | Defines the enum schema reporting.report_runObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data Reporting'reportRunObject'
  = Reporting'reportRunObject'EnumOther Data.Aeson.Types.Internal.Value
  | Reporting'reportRunObject'EnumTyped Data.Text.Internal.Text
  | Reporting'reportRunObject'EnumStringReporting'reportRun
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Reporting'reportRunObject' where
  toJSON (Reporting'reportRunObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Reporting'reportRunObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Reporting'reportRunObject'EnumStringReporting'reportRun) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "reporting.report_run"

instance Data.Aeson.FromJSON Reporting'reportRunObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "reporting.report_run")
          then Reporting'reportRunObject'EnumStringReporting'reportRun
          else Reporting'reportRunObject'EnumOther val
      )

-- | Defines the data type for the schema reporting.report_runResult\'
--
-- The file object representing the result of the report run (populated when
--  \\\`status=succeeded\\\`).
data Reporting'reportRunResult'
  = Reporting'reportRunResult'
      { -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        reporting'reportRunResult'Created :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | filename: A filename for the file, suitable for saving to a filesystem.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reporting'reportRunResult'Filename :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reporting'reportRunResult'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | links: A list of [file links](https:\/\/stripe.com\/docs\/api\#file_links) that point at this file.
        reporting'reportRunResult'Links :: (GHC.Maybe.Maybe Reporting'reportRunResult'Links'),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        reporting'reportRunResult'Object :: (GHC.Maybe.Maybe Reporting'reportRunResult'Object'),
        -- | purpose: The purpose of the file. Possible values are \`additional_verification\`, \`business_icon\`, \`business_logo\`, \`customer_signature\`, \`dispute_evidence\`, \`finance_report_run\`, \`identity_document\`, \`pci_document\`, \`sigma_scheduled_query\`, or \`tax_document_user_upload\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reporting'reportRunResult'Purpose :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | size: The size in bytes of the file object.
        reporting'reportRunResult'Size :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | title: A user friendly title for the document.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reporting'reportRunResult'Title :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | type: The type of the file returned (e.g., \`csv\`, \`pdf\`, \`jpg\`, or \`png\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reporting'reportRunResult'Type :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | url: The URL from which the file can be downloaded using your live secret API key.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reporting'reportRunResult'Url :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Reporting'reportRunResult' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "created" (reporting'reportRunResult'Created obj) : (Data.Aeson..=) "filename" (reporting'reportRunResult'Filename obj) : (Data.Aeson..=) "id" (reporting'reportRunResult'Id obj) : (Data.Aeson..=) "links" (reporting'reportRunResult'Links obj) : (Data.Aeson..=) "object" (reporting'reportRunResult'Object obj) : (Data.Aeson..=) "purpose" (reporting'reportRunResult'Purpose obj) : (Data.Aeson..=) "size" (reporting'reportRunResult'Size obj) : (Data.Aeson..=) "title" (reporting'reportRunResult'Title obj) : (Data.Aeson..=) "type" (reporting'reportRunResult'Type obj) : (Data.Aeson..=) "url" (reporting'reportRunResult'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "created" (reporting'reportRunResult'Created obj) GHC.Base.<> ((Data.Aeson..=) "filename" (reporting'reportRunResult'Filename obj) GHC.Base.<> ((Data.Aeson..=) "id" (reporting'reportRunResult'Id obj) GHC.Base.<> ((Data.Aeson..=) "links" (reporting'reportRunResult'Links obj) GHC.Base.<> ((Data.Aeson..=) "object" (reporting'reportRunResult'Object obj) GHC.Base.<> ((Data.Aeson..=) "purpose" (reporting'reportRunResult'Purpose obj) GHC.Base.<> ((Data.Aeson..=) "size" (reporting'reportRunResult'Size obj) GHC.Base.<> ((Data.Aeson..=) "title" (reporting'reportRunResult'Title obj) GHC.Base.<> ((Data.Aeson..=) "type" (reporting'reportRunResult'Type obj) GHC.Base.<> (Data.Aeson..=) "url" (reporting'reportRunResult'Url obj))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Reporting'reportRunResult' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Reporting'reportRunResult'" (\obj -> (((((((((GHC.Base.pure Reporting'reportRunResult' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "filename")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "links")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "purpose")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "size")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "title")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "url"))

-- | Defines the data type for the schema reporting.report_runResult\'Links\'
--
-- A list of [file links](https:\/\/stripe.com\/docs\/api\#file_links) that point at this file.
data Reporting'reportRunResult'Links'
  = Reporting'reportRunResult'Links'
      { -- | data: Details about each object.
        reporting'reportRunResult'Links'Data :: ([] FileLink),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        reporting'reportRunResult'Links'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        reporting'reportRunResult'Links'Object :: Reporting'reportRunResult'Links'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reporting'reportRunResult'Links'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Reporting'reportRunResult'Links' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (reporting'reportRunResult'Links'Data obj) : (Data.Aeson..=) "has_more" (reporting'reportRunResult'Links'HasMore obj) : (Data.Aeson..=) "object" (reporting'reportRunResult'Links'Object obj) : (Data.Aeson..=) "url" (reporting'reportRunResult'Links'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (reporting'reportRunResult'Links'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (reporting'reportRunResult'Links'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (reporting'reportRunResult'Links'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (reporting'reportRunResult'Links'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON Reporting'reportRunResult'Links' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Reporting'reportRunResult'Links'" (\obj -> (((GHC.Base.pure Reporting'reportRunResult'Links' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema reporting.report_runResult\'Links\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data Reporting'reportRunResult'Links'Object'
  = Reporting'reportRunResult'Links'Object'EnumOther Data.Aeson.Types.Internal.Value
  | Reporting'reportRunResult'Links'Object'EnumTyped Data.Text.Internal.Text
  | Reporting'reportRunResult'Links'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Reporting'reportRunResult'Links'Object' where
  toJSON (Reporting'reportRunResult'Links'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Reporting'reportRunResult'Links'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Reporting'reportRunResult'Links'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON Reporting'reportRunResult'Links'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then Reporting'reportRunResult'Links'Object'EnumStringList
          else Reporting'reportRunResult'Links'Object'EnumOther val
      )

-- | Defines the enum schema reporting.report_runResult\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data Reporting'reportRunResult'Object'
  = Reporting'reportRunResult'Object'EnumOther Data.Aeson.Types.Internal.Value
  | Reporting'reportRunResult'Object'EnumTyped Data.Text.Internal.Text
  | Reporting'reportRunResult'Object'EnumStringFile
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON Reporting'reportRunResult'Object' where
  toJSON (Reporting'reportRunResult'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Reporting'reportRunResult'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (Reporting'reportRunResult'Object'EnumStringFile) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "file"

instance Data.Aeson.FromJSON Reporting'reportRunResult'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "file")
          then Reporting'reportRunResult'Object'EnumStringFile
          else Reporting'reportRunResult'Object'EnumOther val
      )

-- | Defines the data type for the schema review
--
-- Reviews can be used to supplement automated fraud detection with human expertise.
--
-- Learn more about [Radar](\/radar) and reviewing payments
-- [here](https:\/\/stripe.com\/docs\/radar\/reviews).
data Review
  = Review
      { -- | billing_zip: The ZIP or postal code of the card used, if applicable.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reviewBillingZip :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | charge: The charge associated with this review.
        reviewCharge :: (GHC.Maybe.Maybe ReviewCharge'Variants),
        -- | closed_reason: The reason the review was closed, or null if it has not yet been closed. One of \`approved\`, \`refunded\`, \`refunded_as_fraud\`, or \`disputed\`.
        reviewClosedReason :: (GHC.Maybe.Maybe ReviewClosedReason'),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        reviewCreated :: GHC.Integer.Type.Integer,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reviewId :: Data.Text.Internal.Text,
        -- | ip_address: The IP address where the payment originated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reviewIpAddress :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | ip_address_location: Information related to the location of the payment. Note that this information is an approximation and attempts to locate the nearest population center - it should not be used to determine a specific address.
        reviewIpAddressLocation :: (GHC.Maybe.Maybe ReviewIpAddressLocation'),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        reviewLivemode :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        reviewObject :: ReviewObject',
        -- | open: If \`true\`, the review needs action.
        reviewOpen :: GHC.Types.Bool,
        -- | opened_reason: The reason the review was opened. One of \`rule\` or \`manual\`.
        reviewOpenedReason :: ReviewOpenedReason',
        -- | payment_intent: The PaymentIntent ID associated with this review, if one exists.
        reviewPaymentIntent :: (GHC.Maybe.Maybe ReviewPaymentIntent'Variants),
        -- | reason: The reason the review is currently open or closed. One of \`rule\`, \`manual\`, \`approved\`, \`refunded\`, \`refunded_as_fraud\`, or \`disputed\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reviewReason :: Data.Text.Internal.Text,
        -- | session: Information related to the browsing session of the user who initiated the payment.
        reviewSession :: (GHC.Maybe.Maybe ReviewSession')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Review where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "billing_zip" (reviewBillingZip obj) : (Data.Aeson..=) "charge" (reviewCharge obj) : (Data.Aeson..=) "closed_reason" (reviewClosedReason obj) : (Data.Aeson..=) "created" (reviewCreated obj) : (Data.Aeson..=) "id" (reviewId obj) : (Data.Aeson..=) "ip_address" (reviewIpAddress obj) : (Data.Aeson..=) "ip_address_location" (reviewIpAddressLocation obj) : (Data.Aeson..=) "livemode" (reviewLivemode obj) : (Data.Aeson..=) "object" (reviewObject obj) : (Data.Aeson..=) "open" (reviewOpen obj) : (Data.Aeson..=) "opened_reason" (reviewOpenedReason obj) : (Data.Aeson..=) "payment_intent" (reviewPaymentIntent obj) : (Data.Aeson..=) "reason" (reviewReason obj) : (Data.Aeson..=) "session" (reviewSession obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "billing_zip" (reviewBillingZip obj) GHC.Base.<> ((Data.Aeson..=) "charge" (reviewCharge obj) GHC.Base.<> ((Data.Aeson..=) "closed_reason" (reviewClosedReason obj) GHC.Base.<> ((Data.Aeson..=) "created" (reviewCreated obj) GHC.Base.<> ((Data.Aeson..=) "id" (reviewId obj) GHC.Base.<> ((Data.Aeson..=) "ip_address" (reviewIpAddress obj) GHC.Base.<> ((Data.Aeson..=) "ip_address_location" (reviewIpAddressLocation obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (reviewLivemode obj) GHC.Base.<> ((Data.Aeson..=) "object" (reviewObject obj) GHC.Base.<> ((Data.Aeson..=) "open" (reviewOpen obj) GHC.Base.<> ((Data.Aeson..=) "opened_reason" (reviewOpenedReason obj) GHC.Base.<> ((Data.Aeson..=) "payment_intent" (reviewPaymentIntent obj) GHC.Base.<> ((Data.Aeson..=) "reason" (reviewReason obj) GHC.Base.<> (Data.Aeson..=) "session" (reviewSession obj))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Review where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Review" (\obj -> (((((((((((((GHC.Base.pure Review GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_zip")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "charge")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "closed_reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ip_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ip_address_location")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "open")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "opened_reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_intent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "session"))

-- | Define the one-of schema reviewCharge\'
--
-- The charge associated with this review.
data ReviewCharge'Variants
  = ReviewCharge'Charge Charge
  | ReviewCharge'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ReviewCharge'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ReviewCharge'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema reviewClosed_reason\'
--
-- The reason the review was closed, or null if it has not yet been closed. One of \`approved\`, \`refunded\`, \`refunded_as_fraud\`, or \`disputed\`.
data ReviewClosedReason'
  = ReviewClosedReason'EnumOther Data.Aeson.Types.Internal.Value
  | ReviewClosedReason'EnumTyped Data.Text.Internal.Text
  | ReviewClosedReason'EnumStringApproved
  | ReviewClosedReason'EnumStringDisputed
  | ReviewClosedReason'EnumStringRefunded
  | ReviewClosedReason'EnumStringRefundedAsFraud
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ReviewClosedReason' where
  toJSON (ReviewClosedReason'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ReviewClosedReason'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ReviewClosedReason'EnumStringApproved) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "approved"
  toJSON (ReviewClosedReason'EnumStringDisputed) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "disputed"
  toJSON (ReviewClosedReason'EnumStringRefunded) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "refunded"
  toJSON (ReviewClosedReason'EnumStringRefundedAsFraud) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "refunded_as_fraud"

instance Data.Aeson.FromJSON ReviewClosedReason' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "approved")
          then ReviewClosedReason'EnumStringApproved
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "disputed")
              then ReviewClosedReason'EnumStringDisputed
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "refunded")
                  then ReviewClosedReason'EnumStringRefunded
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "refunded_as_fraud")
                      then ReviewClosedReason'EnumStringRefundedAsFraud
                      else ReviewClosedReason'EnumOther val
      )

-- | Defines the data type for the schema reviewIp_address_location\'
--
-- Information related to the location of the payment. Note that this information is an approximation and attempts to locate the nearest population center - it should not be used to determine a specific address.
data ReviewIpAddressLocation'
  = ReviewIpAddressLocation'
      { -- | city: The city where the payment originated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reviewIpAddressLocation'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter ISO code representing the country where the payment originated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reviewIpAddressLocation'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | latitude: The geographic latitude where the payment originated.
        reviewIpAddressLocation'Latitude :: (GHC.Maybe.Maybe GHC.Types.Double),
        -- | longitude: The geographic longitude where the payment originated.
        reviewIpAddressLocation'Longitude :: (GHC.Maybe.Maybe GHC.Types.Double),
        -- | region: The state\/county\/province\/region where the payment originated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reviewIpAddressLocation'Region :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ReviewIpAddressLocation' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (reviewIpAddressLocation'City obj) : (Data.Aeson..=) "country" (reviewIpAddressLocation'Country obj) : (Data.Aeson..=) "latitude" (reviewIpAddressLocation'Latitude obj) : (Data.Aeson..=) "longitude" (reviewIpAddressLocation'Longitude obj) : (Data.Aeson..=) "region" (reviewIpAddressLocation'Region obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (reviewIpAddressLocation'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (reviewIpAddressLocation'Country obj) GHC.Base.<> ((Data.Aeson..=) "latitude" (reviewIpAddressLocation'Latitude obj) GHC.Base.<> ((Data.Aeson..=) "longitude" (reviewIpAddressLocation'Longitude obj) GHC.Base.<> (Data.Aeson..=) "region" (reviewIpAddressLocation'Region obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON ReviewIpAddressLocation' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ReviewIpAddressLocation'" (\obj -> ((((GHC.Base.pure ReviewIpAddressLocation' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "latitude")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "longitude")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "region"))

-- | Defines the enum schema reviewObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data ReviewObject'
  = ReviewObject'EnumOther Data.Aeson.Types.Internal.Value
  | ReviewObject'EnumTyped Data.Text.Internal.Text
  | ReviewObject'EnumStringReview
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ReviewObject' where
  toJSON (ReviewObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ReviewObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ReviewObject'EnumStringReview) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "review"

instance Data.Aeson.FromJSON ReviewObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "review")
          then ReviewObject'EnumStringReview
          else ReviewObject'EnumOther val
      )

-- | Defines the enum schema reviewOpened_reason\'
--
-- The reason the review was opened. One of \`rule\` or \`manual\`.
data ReviewOpenedReason'
  = ReviewOpenedReason'EnumOther Data.Aeson.Types.Internal.Value
  | ReviewOpenedReason'EnumTyped Data.Text.Internal.Text
  | ReviewOpenedReason'EnumStringManual
  | ReviewOpenedReason'EnumStringRule
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ReviewOpenedReason' where
  toJSON (ReviewOpenedReason'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ReviewOpenedReason'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ReviewOpenedReason'EnumStringManual) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual"
  toJSON (ReviewOpenedReason'EnumStringRule) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "rule"

instance Data.Aeson.FromJSON ReviewOpenedReason' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "manual")
          then ReviewOpenedReason'EnumStringManual
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "rule")
              then ReviewOpenedReason'EnumStringRule
              else ReviewOpenedReason'EnumOther val
      )

-- | Define the one-of schema reviewPayment_intent\'
--
-- The PaymentIntent ID associated with this review, if one exists.
data ReviewPaymentIntent'Variants
  = ReviewPaymentIntent'PaymentIntent PaymentIntent
  | ReviewPaymentIntent'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON ReviewPaymentIntent'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON ReviewPaymentIntent'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema reviewSession\'
--
-- Information related to the browsing session of the user who initiated the payment.
data ReviewSession'
  = ReviewSession'
      { -- | browser: The browser used in this browser session (e.g., \`Chrome\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reviewSession'Browser :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | device: Information about the device used for the browser session (e.g., \`Samsung SM-G930T\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reviewSession'Device :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | platform: The platform for the browser session (e.g., \`Macintosh\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reviewSession'Platform :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | version: The version for the browser session (e.g., \`61.0.3163.100\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        reviewSession'Version :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ReviewSession' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "browser" (reviewSession'Browser obj) : (Data.Aeson..=) "device" (reviewSession'Device obj) : (Data.Aeson..=) "platform" (reviewSession'Platform obj) : (Data.Aeson..=) "version" (reviewSession'Version obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "browser" (reviewSession'Browser obj) GHC.Base.<> ((Data.Aeson..=) "device" (reviewSession'Device obj) GHC.Base.<> ((Data.Aeson..=) "platform" (reviewSession'Platform obj) GHC.Base.<> (Data.Aeson..=) "version" (reviewSession'Version obj))))

instance Data.Aeson.Types.FromJSON.FromJSON ReviewSession' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ReviewSession'" (\obj -> (((GHC.Base.pure ReviewSession' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "browser")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "device")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "platform")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "version"))

-- | Defines the data type for the schema scheduled_query_run
--
-- If you have [scheduled a Sigma query](https:\/\/stripe.com\/docs\/sigma\/scheduled-queries), you\'ll
-- receive a \`sigma.scheduled_query_run.created\` webhook each time the query
-- runs. The webhook contains a \`ScheduledQueryRun\` object, which you can use to
-- retrieve the query results.
data ScheduledQueryRun
  = ScheduledQueryRun
      { -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        scheduledQueryRunCreated :: GHC.Integer.Type.Integer,
        -- | data_load_time: When the query was run, Sigma contained a snapshot of your Stripe data at this time.
        scheduledQueryRunDataLoadTime :: GHC.Integer.Type.Integer,
        -- | error:
        scheduledQueryRunError :: (GHC.Maybe.Maybe SigmaScheduledQueryRunError),
        -- | file: The file object representing the results of the query.
        scheduledQueryRunFile :: (GHC.Maybe.Maybe ScheduledQueryRunFile'),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        scheduledQueryRunId :: 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.
        scheduledQueryRunLivemode :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        scheduledQueryRunObject :: ScheduledQueryRunObject',
        -- | result_available_until: Time at which the result expires and is no longer available for download.
        scheduledQueryRunResultAvailableUntil :: GHC.Integer.Type.Integer,
        -- | sql: SQL for the query.
        --
        -- Constraints:
        --
        -- * Maximum length of 100000
        scheduledQueryRunSql :: Data.Text.Internal.Text,
        -- | status: The query\'s execution status, which will be \`completed\` for successful runs, and \`canceled\`, \`failed\`, or \`timed_out\` otherwise.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        scheduledQueryRunStatus :: Data.Text.Internal.Text,
        -- | title: Title of the query.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        scheduledQueryRunTitle :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ScheduledQueryRun where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "created" (scheduledQueryRunCreated obj) : (Data.Aeson..=) "data_load_time" (scheduledQueryRunDataLoadTime obj) : (Data.Aeson..=) "error" (scheduledQueryRunError obj) : (Data.Aeson..=) "file" (scheduledQueryRunFile obj) : (Data.Aeson..=) "id" (scheduledQueryRunId obj) : (Data.Aeson..=) "livemode" (scheduledQueryRunLivemode obj) : (Data.Aeson..=) "object" (scheduledQueryRunObject obj) : (Data.Aeson..=) "result_available_until" (scheduledQueryRunResultAvailableUntil obj) : (Data.Aeson..=) "sql" (scheduledQueryRunSql obj) : (Data.Aeson..=) "status" (scheduledQueryRunStatus obj) : (Data.Aeson..=) "title" (scheduledQueryRunTitle obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "created" (scheduledQueryRunCreated obj) GHC.Base.<> ((Data.Aeson..=) "data_load_time" (scheduledQueryRunDataLoadTime obj) GHC.Base.<> ((Data.Aeson..=) "error" (scheduledQueryRunError obj) GHC.Base.<> ((Data.Aeson..=) "file" (scheduledQueryRunFile obj) GHC.Base.<> ((Data.Aeson..=) "id" (scheduledQueryRunId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (scheduledQueryRunLivemode obj) GHC.Base.<> ((Data.Aeson..=) "object" (scheduledQueryRunObject obj) GHC.Base.<> ((Data.Aeson..=) "result_available_until" (scheduledQueryRunResultAvailableUntil obj) GHC.Base.<> ((Data.Aeson..=) "sql" (scheduledQueryRunSql obj) GHC.Base.<> ((Data.Aeson..=) "status" (scheduledQueryRunStatus obj) GHC.Base.<> (Data.Aeson..=) "title" (scheduledQueryRunTitle obj)))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON ScheduledQueryRun where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ScheduledQueryRun" (\obj -> ((((((((((GHC.Base.pure ScheduledQueryRun GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data_load_time")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "error")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "file")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "result_available_until")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "sql")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "title"))

-- | Defines the data type for the schema scheduled_query_runFile\'
--
-- The file object representing the results of the query.
data ScheduledQueryRunFile'
  = ScheduledQueryRunFile'
      { -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        scheduledQueryRunFile'Created :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | filename: A filename for the file, suitable for saving to a filesystem.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        scheduledQueryRunFile'Filename :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        scheduledQueryRunFile'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | links: A list of [file links](https:\/\/stripe.com\/docs\/api\#file_links) that point at this file.
        scheduledQueryRunFile'Links :: (GHC.Maybe.Maybe ScheduledQueryRunFile'Links'),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        scheduledQueryRunFile'Object :: (GHC.Maybe.Maybe ScheduledQueryRunFile'Object'),
        -- | purpose: The purpose of the file. Possible values are \`additional_verification\`, \`business_icon\`, \`business_logo\`, \`customer_signature\`, \`dispute_evidence\`, \`finance_report_run\`, \`identity_document\`, \`pci_document\`, \`sigma_scheduled_query\`, or \`tax_document_user_upload\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        scheduledQueryRunFile'Purpose :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | size: The size in bytes of the file object.
        scheduledQueryRunFile'Size :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | title: A user friendly title for the document.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        scheduledQueryRunFile'Title :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | type: The type of the file returned (e.g., \`csv\`, \`pdf\`, \`jpg\`, or \`png\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        scheduledQueryRunFile'Type :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | url: The URL from which the file can be downloaded using your live secret API key.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        scheduledQueryRunFile'Url :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ScheduledQueryRunFile' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "created" (scheduledQueryRunFile'Created obj) : (Data.Aeson..=) "filename" (scheduledQueryRunFile'Filename obj) : (Data.Aeson..=) "id" (scheduledQueryRunFile'Id obj) : (Data.Aeson..=) "links" (scheduledQueryRunFile'Links obj) : (Data.Aeson..=) "object" (scheduledQueryRunFile'Object obj) : (Data.Aeson..=) "purpose" (scheduledQueryRunFile'Purpose obj) : (Data.Aeson..=) "size" (scheduledQueryRunFile'Size obj) : (Data.Aeson..=) "title" (scheduledQueryRunFile'Title obj) : (Data.Aeson..=) "type" (scheduledQueryRunFile'Type obj) : (Data.Aeson..=) "url" (scheduledQueryRunFile'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "created" (scheduledQueryRunFile'Created obj) GHC.Base.<> ((Data.Aeson..=) "filename" (scheduledQueryRunFile'Filename obj) GHC.Base.<> ((Data.Aeson..=) "id" (scheduledQueryRunFile'Id obj) GHC.Base.<> ((Data.Aeson..=) "links" (scheduledQueryRunFile'Links obj) GHC.Base.<> ((Data.Aeson..=) "object" (scheduledQueryRunFile'Object obj) GHC.Base.<> ((Data.Aeson..=) "purpose" (scheduledQueryRunFile'Purpose obj) GHC.Base.<> ((Data.Aeson..=) "size" (scheduledQueryRunFile'Size obj) GHC.Base.<> ((Data.Aeson..=) "title" (scheduledQueryRunFile'Title obj) GHC.Base.<> ((Data.Aeson..=) "type" (scheduledQueryRunFile'Type obj) GHC.Base.<> (Data.Aeson..=) "url" (scheduledQueryRunFile'Url obj))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON ScheduledQueryRunFile' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ScheduledQueryRunFile'" (\obj -> (((((((((GHC.Base.pure ScheduledQueryRunFile' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "filename")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "links")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "purpose")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "size")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "title")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "url"))

-- | Defines the data type for the schema scheduled_query_runFile\'Links\'
--
-- A list of [file links](https:\/\/stripe.com\/docs\/api\#file_links) that point at this file.
data ScheduledQueryRunFile'Links'
  = ScheduledQueryRunFile'Links'
      { -- | data: Details about each object.
        scheduledQueryRunFile'Links'Data :: ([] FileLink),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        scheduledQueryRunFile'Links'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        scheduledQueryRunFile'Links'Object :: ScheduledQueryRunFile'Links'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        scheduledQueryRunFile'Links'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ScheduledQueryRunFile'Links' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (scheduledQueryRunFile'Links'Data obj) : (Data.Aeson..=) "has_more" (scheduledQueryRunFile'Links'HasMore obj) : (Data.Aeson..=) "object" (scheduledQueryRunFile'Links'Object obj) : (Data.Aeson..=) "url" (scheduledQueryRunFile'Links'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (scheduledQueryRunFile'Links'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (scheduledQueryRunFile'Links'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (scheduledQueryRunFile'Links'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (scheduledQueryRunFile'Links'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON ScheduledQueryRunFile'Links' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ScheduledQueryRunFile'Links'" (\obj -> (((GHC.Base.pure ScheduledQueryRunFile'Links' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema scheduled_query_runFile\'Links\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data ScheduledQueryRunFile'Links'Object'
  = ScheduledQueryRunFile'Links'Object'EnumOther Data.Aeson.Types.Internal.Value
  | ScheduledQueryRunFile'Links'Object'EnumTyped Data.Text.Internal.Text
  | ScheduledQueryRunFile'Links'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ScheduledQueryRunFile'Links'Object' where
  toJSON (ScheduledQueryRunFile'Links'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ScheduledQueryRunFile'Links'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ScheduledQueryRunFile'Links'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON ScheduledQueryRunFile'Links'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then ScheduledQueryRunFile'Links'Object'EnumStringList
          else ScheduledQueryRunFile'Links'Object'EnumOther val
      )

-- | Defines the enum schema scheduled_query_runFile\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data ScheduledQueryRunFile'Object'
  = ScheduledQueryRunFile'Object'EnumOther Data.Aeson.Types.Internal.Value
  | ScheduledQueryRunFile'Object'EnumTyped Data.Text.Internal.Text
  | ScheduledQueryRunFile'Object'EnumStringFile
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ScheduledQueryRunFile'Object' where
  toJSON (ScheduledQueryRunFile'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ScheduledQueryRunFile'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ScheduledQueryRunFile'Object'EnumStringFile) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "file"

instance Data.Aeson.FromJSON ScheduledQueryRunFile'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "file")
          then ScheduledQueryRunFile'Object'EnumStringFile
          else ScheduledQueryRunFile'Object'EnumOther val
      )

-- | Defines the enum schema scheduled_query_runObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data ScheduledQueryRunObject'
  = ScheduledQueryRunObject'EnumOther Data.Aeson.Types.Internal.Value
  | ScheduledQueryRunObject'EnumTyped Data.Text.Internal.Text
  | ScheduledQueryRunObject'EnumStringScheduledQueryRun
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ScheduledQueryRunObject' where
  toJSON (ScheduledQueryRunObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ScheduledQueryRunObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ScheduledQueryRunObject'EnumStringScheduledQueryRun) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "scheduled_query_run"

instance Data.Aeson.FromJSON ScheduledQueryRunObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "scheduled_query_run")
          then ScheduledQueryRunObject'EnumStringScheduledQueryRun
          else ScheduledQueryRunObject'EnumOther val
      )

-- | Defines the data type for the schema setup_intent
--
-- A SetupIntent guides you through the process of setting up a customer\'s payment credentials for future payments.
-- For example, you could use a SetupIntent to set up your customer\'s card without immediately collecting a payment.
-- Later, you can use [PaymentIntents](https:\/\/stripe.com\/docs\/api\#payment_intents) to drive the payment flow.
--
-- Create a SetupIntent as soon as you\'re ready to collect your customer\'s payment credentials.
-- Do not maintain long-lived, unconfirmed SetupIntents as they may no longer be valid.
-- The SetupIntent then transitions through multiple [statuses](https:\/\/stripe.com\/docs\/payments\/intents\#intent-statuses) as it guides
-- you through the setup process.
--
-- Successful SetupIntents result in payment credentials that are optimized for future payments.
-- For example, cardholders in [certain regions](\/guides\/strong-customer-authentication) may need to be run through
-- [Strong Customer Authentication](https:\/\/stripe.com\/docs\/strong-customer-authentication) at the time of payment method collection
-- in order to streamline later [off-session payments](https:\/\/stripe.com\/docs\/payments\/setup-intents).
--
-- By using SetupIntents, you ensure that your customers experience the minimum set of required friction,
-- even as regulations change over time.
data SetupIntent
  = SetupIntent
      { -- | application: ID of the Connect application that created the SetupIntent.
        setupIntentApplication :: (GHC.Maybe.Maybe SetupIntentApplication'Variants),
        -- | cancellation_reason: Reason for cancellation of this SetupIntent, one of \`abandoned\`, \`requested_by_customer\`, or \`duplicate\`.
        setupIntentCancellationReason :: (GHC.Maybe.Maybe SetupIntentCancellationReason'),
        -- | client_secret: The client secret of this SetupIntent. Used for client-side retrieval using a publishable key.
        --
        -- The client secret can be used to complete payment setup from your frontend. It should not be stored, logged, embedded in URLs, or exposed to anyone other than the customer. Make sure that you have TLS enabled on any page that includes the client secret.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentClientSecret :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        setupIntentCreated :: GHC.Integer.Type.Integer,
        -- | customer: ID of the Customer this SetupIntent belongs to, if one exists.
        --
        -- If present, payment methods used with this SetupIntent can only be attached to this Customer, and payment methods attached to other Customers cannot be used with this SetupIntent.
        setupIntentCustomer :: (GHC.Maybe.Maybe SetupIntentCustomer'Variants),
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentId :: Data.Text.Internal.Text,
        -- | last_setup_error: The error encountered in the previous SetupIntent confirmation.
        setupIntentLastSetupError :: (GHC.Maybe.Maybe SetupIntentLastSetupError'),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        setupIntentLivemode :: GHC.Types.Bool,
        -- | mandate: ID of the multi use Mandate generated by the SetupIntent.
        setupIntentMandate :: (GHC.Maybe.Maybe SetupIntentMandate'Variants),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        setupIntentMetadata :: (GHC.Maybe.Maybe SetupIntentMetadata'),
        -- | next_action: If present, this property tells you what actions you need to take in order for your customer to continue payment setup.
        setupIntentNextAction :: (GHC.Maybe.Maybe SetupIntentNextAction'),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        setupIntentObject :: SetupIntentObject',
        -- | on_behalf_of: The account (if any) for which the setup is intended.
        setupIntentOnBehalfOf :: (GHC.Maybe.Maybe SetupIntentOnBehalfOf'Variants),
        -- | payment_method: ID of the payment method used with this SetupIntent.
        setupIntentPaymentMethod :: (GHC.Maybe.Maybe SetupIntentPaymentMethod'Variants),
        -- | payment_method_options: Payment-method-specific configuration for this SetupIntent.
        setupIntentPaymentMethodOptions :: (GHC.Maybe.Maybe SetupIntentPaymentMethodOptions'),
        -- | payment_method_types: The list of payment method types (e.g. card) that this SetupIntent is allowed to set up.
        setupIntentPaymentMethodTypes :: ([] Data.Text.Internal.Text),
        -- | single_use_mandate: ID of the single_use Mandate generated by the SetupIntent.
        setupIntentSingleUseMandate :: (GHC.Maybe.Maybe SetupIntentSingleUseMandate'Variants),
        -- | status: [Status](https:\/\/stripe.com\/docs\/payments\/intents\#intent-statuses) of this SetupIntent, one of \`requires_payment_method\`, \`requires_confirmation\`, \`requires_action\`, \`processing\`, \`canceled\`, or \`succeeded\`.
        setupIntentStatus :: SetupIntentStatus',
        -- | usage: Indicates how the payment method is intended to be used in the future.
        --
        -- Use \`on_session\` if you intend to only reuse the payment method when the customer is in your checkout flow. Use \`off_session\` if your customer may or may not be in your checkout flow. If not provided, this value defaults to \`off_session\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentUsage :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SetupIntent where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "application" (setupIntentApplication obj) : (Data.Aeson..=) "cancellation_reason" (setupIntentCancellationReason obj) : (Data.Aeson..=) "client_secret" (setupIntentClientSecret obj) : (Data.Aeson..=) "created" (setupIntentCreated obj) : (Data.Aeson..=) "customer" (setupIntentCustomer obj) : (Data.Aeson..=) "description" (setupIntentDescription obj) : (Data.Aeson..=) "id" (setupIntentId obj) : (Data.Aeson..=) "last_setup_error" (setupIntentLastSetupError obj) : (Data.Aeson..=) "livemode" (setupIntentLivemode obj) : (Data.Aeson..=) "mandate" (setupIntentMandate obj) : (Data.Aeson..=) "metadata" (setupIntentMetadata obj) : (Data.Aeson..=) "next_action" (setupIntentNextAction obj) : (Data.Aeson..=) "object" (setupIntentObject obj) : (Data.Aeson..=) "on_behalf_of" (setupIntentOnBehalfOf obj) : (Data.Aeson..=) "payment_method" (setupIntentPaymentMethod obj) : (Data.Aeson..=) "payment_method_options" (setupIntentPaymentMethodOptions obj) : (Data.Aeson..=) "payment_method_types" (setupIntentPaymentMethodTypes obj) : (Data.Aeson..=) "single_use_mandate" (setupIntentSingleUseMandate obj) : (Data.Aeson..=) "status" (setupIntentStatus obj) : (Data.Aeson..=) "usage" (setupIntentUsage obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "application" (setupIntentApplication obj) GHC.Base.<> ((Data.Aeson..=) "cancellation_reason" (setupIntentCancellationReason obj) GHC.Base.<> ((Data.Aeson..=) "client_secret" (setupIntentClientSecret obj) GHC.Base.<> ((Data.Aeson..=) "created" (setupIntentCreated obj) GHC.Base.<> ((Data.Aeson..=) "customer" (setupIntentCustomer obj) GHC.Base.<> ((Data.Aeson..=) "description" (setupIntentDescription obj) GHC.Base.<> ((Data.Aeson..=) "id" (setupIntentId obj) GHC.Base.<> ((Data.Aeson..=) "last_setup_error" (setupIntentLastSetupError obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (setupIntentLivemode obj) GHC.Base.<> ((Data.Aeson..=) "mandate" (setupIntentMandate obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (setupIntentMetadata obj) GHC.Base.<> ((Data.Aeson..=) "next_action" (setupIntentNextAction obj) GHC.Base.<> ((Data.Aeson..=) "object" (setupIntentObject obj) GHC.Base.<> ((Data.Aeson..=) "on_behalf_of" (setupIntentOnBehalfOf obj) GHC.Base.<> ((Data.Aeson..=) "payment_method" (setupIntentPaymentMethod obj) GHC.Base.<> ((Data.Aeson..=) "payment_method_options" (setupIntentPaymentMethodOptions obj) GHC.Base.<> ((Data.Aeson..=) "payment_method_types" (setupIntentPaymentMethodTypes obj) GHC.Base.<> ((Data.Aeson..=) "single_use_mandate" (setupIntentSingleUseMandate obj) GHC.Base.<> ((Data.Aeson..=) "status" (setupIntentStatus obj) GHC.Base.<> (Data.Aeson..=) "usage" (setupIntentUsage obj))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON SetupIntent where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SetupIntent" (\obj -> (((((((((((((((((((GHC.Base.pure SetupIntent GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "application")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cancellation_reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "client_secret")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last_setup_error")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "mandate")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "next_action")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "on_behalf_of")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_method_options")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "payment_method_types")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "single_use_mandate")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "usage"))

-- | Define the one-of schema setup_intentApplication\'
--
-- ID of the Connect application that created the SetupIntent.
data SetupIntentApplication'Variants
  = SetupIntentApplication'Application Application
  | SetupIntentApplication'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SetupIntentApplication'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SetupIntentApplication'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema setup_intentCancellation_reason\'
--
-- Reason for cancellation of this SetupIntent, one of \`abandoned\`, \`requested_by_customer\`, or \`duplicate\`.
data SetupIntentCancellationReason'
  = SetupIntentCancellationReason'EnumOther Data.Aeson.Types.Internal.Value
  | SetupIntentCancellationReason'EnumTyped Data.Text.Internal.Text
  | SetupIntentCancellationReason'EnumStringAbandoned
  | SetupIntentCancellationReason'EnumStringDuplicate
  | SetupIntentCancellationReason'EnumStringRequestedByCustomer
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SetupIntentCancellationReason' where
  toJSON (SetupIntentCancellationReason'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SetupIntentCancellationReason'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SetupIntentCancellationReason'EnumStringAbandoned) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "abandoned"
  toJSON (SetupIntentCancellationReason'EnumStringDuplicate) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "duplicate"
  toJSON (SetupIntentCancellationReason'EnumStringRequestedByCustomer) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requested_by_customer"

instance Data.Aeson.FromJSON SetupIntentCancellationReason' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "abandoned")
          then SetupIntentCancellationReason'EnumStringAbandoned
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "duplicate")
              then SetupIntentCancellationReason'EnumStringDuplicate
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requested_by_customer")
                  then SetupIntentCancellationReason'EnumStringRequestedByCustomer
                  else SetupIntentCancellationReason'EnumOther val
      )

-- | Define the one-of schema setup_intentCustomer\'
--
-- ID of the Customer this SetupIntent belongs to, if one exists.
--
-- If present, payment methods used with this SetupIntent can only be attached to this Customer, and payment methods attached to other Customers cannot be used with this SetupIntent.
data SetupIntentCustomer'Variants
  = SetupIntentCustomer'Customer Customer
  | SetupIntentCustomer'DeletedCustomer DeletedCustomer
  | SetupIntentCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SetupIntentCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SetupIntentCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema setup_intentLast_setup_error\'
--
-- The error encountered in the previous SetupIntent confirmation.
data SetupIntentLastSetupError'
  = SetupIntentLastSetupError'
      { -- | charge: For card errors, the ID of the failed charge.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Charge :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | code: For some errors that could be handled programmatically, a short string indicating the [error code](https:\/\/stripe.com\/docs\/error-codes) reported.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Code :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | decline_code: For card errors resulting from a card issuer decline, a short string indicating the [card issuer\'s reason for the decline](https:\/\/stripe.com\/docs\/declines\#issuer-declines) if they provide one.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'DeclineCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | doc_url: A URL to more information about the [error code](https:\/\/stripe.com\/docs\/error-codes) reported.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'DocUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | message: A human-readable message providing more details about the error. For card errors, these messages can be shown to your users.
        --
        -- Constraints:
        --
        -- * Maximum length of 40000
        setupIntentLastSetupError'Message :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | param: If the error is parameter-specific, the parameter related to the error. For example, you can use this to display a message near the correct form field.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Param :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | payment_intent: A PaymentIntent guides you through the process of collecting a payment from your customer.
        -- We recommend that you create exactly one PaymentIntent for each order or
        -- customer session in your system. You can reference the PaymentIntent later to
        -- see the history of payment attempts for a particular session.
        --
        -- A PaymentIntent transitions through
        -- [multiple statuses](https:\/\/stripe.com\/docs\/payments\/intents\#intent-statuses)
        -- throughout its lifetime as it interfaces with Stripe.js to perform
        -- authentication flows and ultimately creates at most one successful charge.
        --
        -- Related guide: [Payment Intents API](https:\/\/stripe.com\/docs\/payments\/payment-intents\/creating-payment-intents).
        setupIntentLastSetupError'PaymentIntent :: (GHC.Maybe.Maybe PaymentIntent),
        -- | payment_method: PaymentMethod objects represent your customer\'s payment instruments.
        -- They can be used with [PaymentIntents](https:\/\/stripe.com\/docs\/payments\/payment-intents) to collect payments or saved to
        -- Customer objects to store instrument details for future payments.
        --
        -- Related guides: [Payment Methods](https:\/\/stripe.com\/docs\/payments\/payment-methods) and [More Payment Scenarios](https:\/\/stripe.com\/docs\/payments\/more-payment-scenarios).
        setupIntentLastSetupError'PaymentMethod :: (GHC.Maybe.Maybe PaymentMethod),
        -- | setup_intent: A SetupIntent guides you through the process of setting up a customer\'s payment credentials for future payments.
        -- For example, you could use a SetupIntent to set up your customer\'s card without immediately collecting a payment.
        -- Later, you can use [PaymentIntents](https:\/\/stripe.com\/docs\/api\#payment_intents) to drive the payment flow.
        --
        -- Create a SetupIntent as soon as you\'re ready to collect your customer\'s payment credentials.
        -- Do not maintain long-lived, unconfirmed SetupIntents as they may no longer be valid.
        -- The SetupIntent then transitions through multiple [statuses](https:\/\/stripe.com\/docs\/payments\/intents\#intent-statuses) as it guides
        -- you through the setup process.
        --
        -- Successful SetupIntents result in payment credentials that are optimized for future payments.
        -- For example, cardholders in [certain regions](\/guides\/strong-customer-authentication) may need to be run through
        -- [Strong Customer Authentication](https:\/\/stripe.com\/docs\/strong-customer-authentication) at the time of payment method collection
        -- in order to streamline later [off-session payments](https:\/\/stripe.com\/docs\/payments\/setup-intents).
        --
        -- By using SetupIntents, you ensure that your customers experience the minimum set of required friction,
        -- even as regulations change over time.
        setupIntentLastSetupError'SetupIntent :: (GHC.Maybe.Maybe SetupIntent),
        -- | source: The source object for errors returned on a request involving a source.
        setupIntentLastSetupError'Source :: (GHC.Maybe.Maybe SetupIntentLastSetupError'Source'),
        -- | type: The type of error returned. One of \`api_connection_error\`, \`api_error\`, \`authentication_error\`, \`card_error\`, \`idempotency_error\`, \`invalid_request_error\`, or \`rate_limit_error\`
        setupIntentLastSetupError'Type :: (GHC.Maybe.Maybe SetupIntentLastSetupError'Type')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SetupIntentLastSetupError' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "charge" (setupIntentLastSetupError'Charge obj) : (Data.Aeson..=) "code" (setupIntentLastSetupError'Code obj) : (Data.Aeson..=) "decline_code" (setupIntentLastSetupError'DeclineCode obj) : (Data.Aeson..=) "doc_url" (setupIntentLastSetupError'DocUrl obj) : (Data.Aeson..=) "message" (setupIntentLastSetupError'Message obj) : (Data.Aeson..=) "param" (setupIntentLastSetupError'Param obj) : (Data.Aeson..=) "payment_intent" (setupIntentLastSetupError'PaymentIntent obj) : (Data.Aeson..=) "payment_method" (setupIntentLastSetupError'PaymentMethod obj) : (Data.Aeson..=) "setup_intent" (setupIntentLastSetupError'SetupIntent obj) : (Data.Aeson..=) "source" (setupIntentLastSetupError'Source obj) : (Data.Aeson..=) "type" (setupIntentLastSetupError'Type obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "charge" (setupIntentLastSetupError'Charge obj) GHC.Base.<> ((Data.Aeson..=) "code" (setupIntentLastSetupError'Code obj) GHC.Base.<> ((Data.Aeson..=) "decline_code" (setupIntentLastSetupError'DeclineCode obj) GHC.Base.<> ((Data.Aeson..=) "doc_url" (setupIntentLastSetupError'DocUrl obj) GHC.Base.<> ((Data.Aeson..=) "message" (setupIntentLastSetupError'Message obj) GHC.Base.<> ((Data.Aeson..=) "param" (setupIntentLastSetupError'Param obj) GHC.Base.<> ((Data.Aeson..=) "payment_intent" (setupIntentLastSetupError'PaymentIntent obj) GHC.Base.<> ((Data.Aeson..=) "payment_method" (setupIntentLastSetupError'PaymentMethod obj) GHC.Base.<> ((Data.Aeson..=) "setup_intent" (setupIntentLastSetupError'SetupIntent obj) GHC.Base.<> ((Data.Aeson..=) "source" (setupIntentLastSetupError'Source obj) GHC.Base.<> (Data.Aeson..=) "type" (setupIntentLastSetupError'Type obj)))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON SetupIntentLastSetupError' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SetupIntentLastSetupError'" (\obj -> ((((((((((GHC.Base.pure SetupIntentLastSetupError' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "charge")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "decline_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "doc_url")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "message")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "param")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_intent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "setup_intent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type"))

-- | Defines the data type for the schema setup_intentLast_setup_error\'Source\'
--
-- The source object for errors returned on a request involving a source.
data SetupIntentLastSetupError'Source'
  = SetupIntentLastSetupError'Source'
      { -- | account: The ID of the account that the bank account is associated with.
        setupIntentLastSetupError'Source'Account :: (GHC.Maybe.Maybe SetupIntentLastSetupError'Source'Account'Variants),
        -- | account_holder_name: The name of the person or business that owns the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'AccountHolderName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | account_holder_type: The type of entity that holds the account. This can be either \`individual\` or \`company\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'AccountHolderType :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | ach_credit_transfer
        setupIntentLastSetupError'Source'AchCreditTransfer :: (GHC.Maybe.Maybe SourceTypeAchCreditTransfer),
        -- | ach_debit
        setupIntentLastSetupError'Source'AchDebit :: (GHC.Maybe.Maybe SourceTypeAchDebit),
        -- | address_city: City\/District\/Suburb\/Town\/Village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'AddressCity :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_country: Billing address country, if provided when creating card.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'AddressCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1: Address line 1 (Street address\/PO Box\/Company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'AddressLine1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line1_check: If \`address_line1\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'AddressLine1Check :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_line2: Address line 2 (Apartment\/Suite\/Unit\/Building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'AddressLine2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_state: State\/County\/Province\/Region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'AddressState :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'AddressZip :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | address_zip_check: If \`address_zip\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'AddressZipCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | alipay
        setupIntentLastSetupError'Source'Alipay :: (GHC.Maybe.Maybe SourceTypeAlipay),
        -- | amount: A positive integer in the smallest currency unit (that is, 100 cents for \$1.00, or 1 for ¥1, Japanese Yen being a zero-decimal currency) representing the total amount associated with the source. This is the amount for which the source will be chargeable once ready. Required for \`single_use\` sources.
        setupIntentLastSetupError'Source'Amount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | available_payout_methods: A set of available payout methods for this card. Will be either \`[\"standard\"]\` or \`[\"standard\", \"instant\"]\`. Only values from this set should be passed as the \`method\` when creating a transfer.
        setupIntentLastSetupError'Source'AvailablePayoutMethods :: (GHC.Maybe.Maybe ([] SetupIntentLastSetupError'Source'AvailablePayoutMethods')),
        -- | bancontact
        setupIntentLastSetupError'Source'Bancontact :: (GHC.Maybe.Maybe SourceTypeBancontact),
        -- | bank_name: Name of the bank associated with the routing number (e.g., \`WELLS FARGO\`).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'BankName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | brand: Card brand. Can be \`American Express\`, \`Diners Club\`, \`Discover\`, \`JCB\`, \`MasterCard\`, \`UnionPay\`, \`Visa\`, or \`Unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Brand :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | card
        setupIntentLastSetupError'Source'Card :: (GHC.Maybe.Maybe SourceTypeCard),
        -- | card_present
        setupIntentLastSetupError'Source'CardPresent :: (GHC.Maybe.Maybe SourceTypeCardPresent),
        -- | client_secret: The client secret of the source. Used for client-side retrieval using a publishable key.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'ClientSecret :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | code_verification:
        setupIntentLastSetupError'Source'CodeVerification :: (GHC.Maybe.Maybe SourceCodeVerificationFlow),
        -- | country: Two-letter ISO code representing the country the bank account is located in.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        setupIntentLastSetupError'Source'Created :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/payouts) paid out to the bank account.
        setupIntentLastSetupError'Source'Currency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer: The ID of the customer that the bank account is associated with.
        setupIntentLastSetupError'Source'Customer :: (GHC.Maybe.Maybe SetupIntentLastSetupError'Source'Customer'Variants),
        -- | cvc_check: If a CVC was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'CvcCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | default_for_currency: Whether this bank account is the default external account for its currency.
        setupIntentLastSetupError'Source'DefaultForCurrency :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'DynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | eps
        setupIntentLastSetupError'Source'Eps :: (GHC.Maybe.Maybe SourceTypeEps),
        -- | exp_month: Two-digit number representing the card\'s expiration month.
        setupIntentLastSetupError'Source'ExpMonth :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | exp_year: Four-digit number representing the card\'s expiration year.
        setupIntentLastSetupError'Source'ExpYear :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | fingerprint: Uniquely identifies this particular bank account. You can use this attribute to check whether two bank accounts are the same.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Fingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | flow: The authentication \`flow\` of the source. \`flow\` is one of \`redirect\`, \`receiver\`, \`code_verification\`, \`none\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Flow :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Funding :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | giropay
        setupIntentLastSetupError'Source'Giropay :: (GHC.Maybe.Maybe SourceTypeGiropay),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | ideal
        setupIntentLastSetupError'Source'Ideal :: (GHC.Maybe.Maybe SourceTypeIdeal),
        -- | klarna
        setupIntentLastSetupError'Source'Klarna :: (GHC.Maybe.Maybe SourceTypeKlarna),
        -- | last4: The last four digits of the bank account number.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Last4 :: (GHC.Maybe.Maybe 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.
        setupIntentLastSetupError'Source'Livemode :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        setupIntentLastSetupError'Source'Metadata :: (GHC.Maybe.Maybe SetupIntentLastSetupError'Source'Metadata'),
        -- | multibanco
        setupIntentLastSetupError'Source'Multibanco :: (GHC.Maybe.Maybe SourceTypeMultibanco),
        -- | name: Cardholder name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        setupIntentLastSetupError'Source'Object :: (GHC.Maybe.Maybe SetupIntentLastSetupError'Source'Object'),
        -- | owner: Information about the owner of the payment instrument that may be used or required by particular source types.
        setupIntentLastSetupError'Source'Owner :: (GHC.Maybe.Maybe SetupIntentLastSetupError'Source'Owner'),
        -- | p24
        setupIntentLastSetupError'Source'P24 :: (GHC.Maybe.Maybe SourceTypeP24),
        -- | receiver:
        setupIntentLastSetupError'Source'Receiver :: (GHC.Maybe.Maybe SourceReceiverFlow),
        -- | recipient: The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
        setupIntentLastSetupError'Source'Recipient :: (GHC.Maybe.Maybe SetupIntentLastSetupError'Source'Recipient'Variants),
        -- | redirect:
        setupIntentLastSetupError'Source'Redirect :: (GHC.Maybe.Maybe SourceRedirectFlow),
        -- | routing_number: The routing transit number for the bank account.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'RoutingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | sepa_debit
        setupIntentLastSetupError'Source'SepaDebit :: (GHC.Maybe.Maybe SourceTypeSepaDebit),
        -- | sofort
        setupIntentLastSetupError'Source'Sofort :: (GHC.Maybe.Maybe SourceTypeSofort),
        -- | source_order:
        setupIntentLastSetupError'Source'SourceOrder :: (GHC.Maybe.Maybe SourceOrder),
        -- | statement_descriptor: Extra information about a source. This will appear on your customer\'s statement every time you charge the source.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'StatementDescriptor :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: For bank accounts, possible values are \`new\`, \`validated\`, \`verified\`, \`verification_failed\`, or \`errored\`. A bank account that hasn\'t had any activity or validation performed is \`new\`. If Stripe can determine that the bank account exists, its status will be \`validated\`. Note that there often isn’t enough information to know (e.g., for smaller credit unions), and the validation is not always run. If customer bank account verification has succeeded, the bank account status will be \`verified\`. If the verification failed for any reason, such as microdeposit failure, the status will be \`verification_failed\`. If a transfer sent to this bank account fails, we\'ll set the status to \`errored\` and will not continue to send transfers until the bank details are updated.
        --
        -- For external accounts, possible values are \`new\` and \`errored\`. Validations aren\'t run against external accounts because they\'re only used for payouts. This means the other statuses don\'t apply. If a transfer fails, the status is set to \`errored\` and transfers are stopped until account details are updated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Status :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | three_d_secure
        setupIntentLastSetupError'Source'ThreeDSecure :: (GHC.Maybe.Maybe SourceTypeThreeDSecure),
        -- | tokenization_method: If the card number is tokenized, this is the method that was used. Can be \`amex_express_checkout\`, \`android_pay\` (includes Google Pay), \`apple_pay\`, \`masterpass\`, \`visa_checkout\`, or null.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'TokenizationMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | type: The \`type\` of the source. The \`type\` is a payment method, one of \`ach_credit_transfer\`, \`ach_debit\`, \`alipay\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`multibanco\`, \`klarna\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`three_d_secure\`, or \`wechat\`. An additional hash is included on the source with a name matching this value. It contains additional information specific to the [payment method](https:\/\/stripe.com\/docs\/sources) used.
        setupIntentLastSetupError'Source'Type :: (GHC.Maybe.Maybe SetupIntentLastSetupError'Source'Type'),
        -- | usage: Either \`reusable\` or \`single_use\`. Whether this source should be reusable or not. Some source types may or may not be reusable by construction, while others may leave the option at creation. If an incompatible value is passed, an error will be returned.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Usage :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | wechat
        setupIntentLastSetupError'Source'Wechat :: (GHC.Maybe.Maybe SourceTypeWechat)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SetupIntentLastSetupError'Source' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "account" (setupIntentLastSetupError'Source'Account obj) : (Data.Aeson..=) "account_holder_name" (setupIntentLastSetupError'Source'AccountHolderName obj) : (Data.Aeson..=) "account_holder_type" (setupIntentLastSetupError'Source'AccountHolderType obj) : (Data.Aeson..=) "ach_credit_transfer" (setupIntentLastSetupError'Source'AchCreditTransfer obj) : (Data.Aeson..=) "ach_debit" (setupIntentLastSetupError'Source'AchDebit obj) : (Data.Aeson..=) "address_city" (setupIntentLastSetupError'Source'AddressCity obj) : (Data.Aeson..=) "address_country" (setupIntentLastSetupError'Source'AddressCountry obj) : (Data.Aeson..=) "address_line1" (setupIntentLastSetupError'Source'AddressLine1 obj) : (Data.Aeson..=) "address_line1_check" (setupIntentLastSetupError'Source'AddressLine1Check obj) : (Data.Aeson..=) "address_line2" (setupIntentLastSetupError'Source'AddressLine2 obj) : (Data.Aeson..=) "address_state" (setupIntentLastSetupError'Source'AddressState obj) : (Data.Aeson..=) "address_zip" (setupIntentLastSetupError'Source'AddressZip obj) : (Data.Aeson..=) "address_zip_check" (setupIntentLastSetupError'Source'AddressZipCheck obj) : (Data.Aeson..=) "alipay" (setupIntentLastSetupError'Source'Alipay obj) : (Data.Aeson..=) "amount" (setupIntentLastSetupError'Source'Amount obj) : (Data.Aeson..=) "available_payout_methods" (setupIntentLastSetupError'Source'AvailablePayoutMethods obj) : (Data.Aeson..=) "bancontact" (setupIntentLastSetupError'Source'Bancontact obj) : (Data.Aeson..=) "bank_name" (setupIntentLastSetupError'Source'BankName obj) : (Data.Aeson..=) "brand" (setupIntentLastSetupError'Source'Brand obj) : (Data.Aeson..=) "card" (setupIntentLastSetupError'Source'Card obj) : (Data.Aeson..=) "card_present" (setupIntentLastSetupError'Source'CardPresent obj) : (Data.Aeson..=) "client_secret" (setupIntentLastSetupError'Source'ClientSecret obj) : (Data.Aeson..=) "code_verification" (setupIntentLastSetupError'Source'CodeVerification obj) : (Data.Aeson..=) "country" (setupIntentLastSetupError'Source'Country obj) : (Data.Aeson..=) "created" (setupIntentLastSetupError'Source'Created obj) : (Data.Aeson..=) "currency" (setupIntentLastSetupError'Source'Currency obj) : (Data.Aeson..=) "customer" (setupIntentLastSetupError'Source'Customer obj) : (Data.Aeson..=) "cvc_check" (setupIntentLastSetupError'Source'CvcCheck obj) : (Data.Aeson..=) "default_for_currency" (setupIntentLastSetupError'Source'DefaultForCurrency obj) : (Data.Aeson..=) "dynamic_last4" (setupIntentLastSetupError'Source'DynamicLast4 obj) : (Data.Aeson..=) "eps" (setupIntentLastSetupError'Source'Eps obj) : (Data.Aeson..=) "exp_month" (setupIntentLastSetupError'Source'ExpMonth obj) : (Data.Aeson..=) "exp_year" (setupIntentLastSetupError'Source'ExpYear obj) : (Data.Aeson..=) "fingerprint" (setupIntentLastSetupError'Source'Fingerprint obj) : (Data.Aeson..=) "flow" (setupIntentLastSetupError'Source'Flow obj) : (Data.Aeson..=) "funding" (setupIntentLastSetupError'Source'Funding obj) : (Data.Aeson..=) "giropay" (setupIntentLastSetupError'Source'Giropay obj) : (Data.Aeson..=) "id" (setupIntentLastSetupError'Source'Id obj) : (Data.Aeson..=) "ideal" (setupIntentLastSetupError'Source'Ideal obj) : (Data.Aeson..=) "klarna" (setupIntentLastSetupError'Source'Klarna obj) : (Data.Aeson..=) "last4" (setupIntentLastSetupError'Source'Last4 obj) : (Data.Aeson..=) "livemode" (setupIntentLastSetupError'Source'Livemode obj) : (Data.Aeson..=) "metadata" (setupIntentLastSetupError'Source'Metadata obj) : (Data.Aeson..=) "multibanco" (setupIntentLastSetupError'Source'Multibanco obj) : (Data.Aeson..=) "name" (setupIntentLastSetupError'Source'Name obj) : (Data.Aeson..=) "object" (setupIntentLastSetupError'Source'Object obj) : (Data.Aeson..=) "owner" (setupIntentLastSetupError'Source'Owner obj) : (Data.Aeson..=) "p24" (setupIntentLastSetupError'Source'P24 obj) : (Data.Aeson..=) "receiver" (setupIntentLastSetupError'Source'Receiver obj) : (Data.Aeson..=) "recipient" (setupIntentLastSetupError'Source'Recipient obj) : (Data.Aeson..=) "redirect" (setupIntentLastSetupError'Source'Redirect obj) : (Data.Aeson..=) "routing_number" (setupIntentLastSetupError'Source'RoutingNumber obj) : (Data.Aeson..=) "sepa_debit" (setupIntentLastSetupError'Source'SepaDebit obj) : (Data.Aeson..=) "sofort" (setupIntentLastSetupError'Source'Sofort obj) : (Data.Aeson..=) "source_order" (setupIntentLastSetupError'Source'SourceOrder obj) : (Data.Aeson..=) "statement_descriptor" (setupIntentLastSetupError'Source'StatementDescriptor obj) : (Data.Aeson..=) "status" (setupIntentLastSetupError'Source'Status obj) : (Data.Aeson..=) "three_d_secure" (setupIntentLastSetupError'Source'ThreeDSecure obj) : (Data.Aeson..=) "tokenization_method" (setupIntentLastSetupError'Source'TokenizationMethod obj) : (Data.Aeson..=) "type" (setupIntentLastSetupError'Source'Type obj) : (Data.Aeson..=) "usage" (setupIntentLastSetupError'Source'Usage obj) : (Data.Aeson..=) "wechat" (setupIntentLastSetupError'Source'Wechat obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "account" (setupIntentLastSetupError'Source'Account obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_name" (setupIntentLastSetupError'Source'AccountHolderName obj) GHC.Base.<> ((Data.Aeson..=) "account_holder_type" (setupIntentLastSetupError'Source'AccountHolderType obj) GHC.Base.<> ((Data.Aeson..=) "ach_credit_transfer" (setupIntentLastSetupError'Source'AchCreditTransfer obj) GHC.Base.<> ((Data.Aeson..=) "ach_debit" (setupIntentLastSetupError'Source'AchDebit obj) GHC.Base.<> ((Data.Aeson..=) "address_city" (setupIntentLastSetupError'Source'AddressCity obj) GHC.Base.<> ((Data.Aeson..=) "address_country" (setupIntentLastSetupError'Source'AddressCountry obj) GHC.Base.<> ((Data.Aeson..=) "address_line1" (setupIntentLastSetupError'Source'AddressLine1 obj) GHC.Base.<> ((Data.Aeson..=) "address_line1_check" (setupIntentLastSetupError'Source'AddressLine1Check obj) GHC.Base.<> ((Data.Aeson..=) "address_line2" (setupIntentLastSetupError'Source'AddressLine2 obj) GHC.Base.<> ((Data.Aeson..=) "address_state" (setupIntentLastSetupError'Source'AddressState obj) GHC.Base.<> ((Data.Aeson..=) "address_zip" (setupIntentLastSetupError'Source'AddressZip obj) GHC.Base.<> ((Data.Aeson..=) "address_zip_check" (setupIntentLastSetupError'Source'AddressZipCheck obj) GHC.Base.<> ((Data.Aeson..=) "alipay" (setupIntentLastSetupError'Source'Alipay obj) GHC.Base.<> ((Data.Aeson..=) "amount" (setupIntentLastSetupError'Source'Amount obj) GHC.Base.<> ((Data.Aeson..=) "available_payout_methods" (setupIntentLastSetupError'Source'AvailablePayoutMethods obj) GHC.Base.<> ((Data.Aeson..=) "bancontact" (setupIntentLastSetupError'Source'Bancontact obj) GHC.Base.<> ((Data.Aeson..=) "bank_name" (setupIntentLastSetupError'Source'BankName obj) GHC.Base.<> ((Data.Aeson..=) "brand" (setupIntentLastSetupError'Source'Brand obj) GHC.Base.<> ((Data.Aeson..=) "card" (setupIntentLastSetupError'Source'Card obj) GHC.Base.<> ((Data.Aeson..=) "card_present" (setupIntentLastSetupError'Source'CardPresent obj) GHC.Base.<> ((Data.Aeson..=) "client_secret" (setupIntentLastSetupError'Source'ClientSecret obj) GHC.Base.<> ((Data.Aeson..=) "code_verification" (setupIntentLastSetupError'Source'CodeVerification obj) GHC.Base.<> ((Data.Aeson..=) "country" (setupIntentLastSetupError'Source'Country obj) GHC.Base.<> ((Data.Aeson..=) "created" (setupIntentLastSetupError'Source'Created obj) GHC.Base.<> ((Data.Aeson..=) "currency" (setupIntentLastSetupError'Source'Currency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (setupIntentLastSetupError'Source'Customer obj) GHC.Base.<> ((Data.Aeson..=) "cvc_check" (setupIntentLastSetupError'Source'CvcCheck obj) GHC.Base.<> ((Data.Aeson..=) "default_for_currency" (setupIntentLastSetupError'Source'DefaultForCurrency obj) GHC.Base.<> ((Data.Aeson..=) "dynamic_last4" (setupIntentLastSetupError'Source'DynamicLast4 obj) GHC.Base.<> ((Data.Aeson..=) "eps" (setupIntentLastSetupError'Source'Eps obj) GHC.Base.<> ((Data.Aeson..=) "exp_month" (setupIntentLastSetupError'Source'ExpMonth obj) GHC.Base.<> ((Data.Aeson..=) "exp_year" (setupIntentLastSetupError'Source'ExpYear obj) GHC.Base.<> ((Data.Aeson..=) "fingerprint" (setupIntentLastSetupError'Source'Fingerprint obj) GHC.Base.<> ((Data.Aeson..=) "flow" (setupIntentLastSetupError'Source'Flow obj) GHC.Base.<> ((Data.Aeson..=) "funding" (setupIntentLastSetupError'Source'Funding obj) GHC.Base.<> ((Data.Aeson..=) "giropay" (setupIntentLastSetupError'Source'Giropay obj) GHC.Base.<> ((Data.Aeson..=) "id" (setupIntentLastSetupError'Source'Id obj) GHC.Base.<> ((Data.Aeson..=) "ideal" (setupIntentLastSetupError'Source'Ideal obj) GHC.Base.<> ((Data.Aeson..=) "klarna" (setupIntentLastSetupError'Source'Klarna obj) GHC.Base.<> ((Data.Aeson..=) "last4" (setupIntentLastSetupError'Source'Last4 obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (setupIntentLastSetupError'Source'Livemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (setupIntentLastSetupError'Source'Metadata obj) GHC.Base.<> ((Data.Aeson..=) "multibanco" (setupIntentLastSetupError'Source'Multibanco obj) GHC.Base.<> ((Data.Aeson..=) "name" (setupIntentLastSetupError'Source'Name obj) GHC.Base.<> ((Data.Aeson..=) "object" (setupIntentLastSetupError'Source'Object obj) GHC.Base.<> ((Data.Aeson..=) "owner" (setupIntentLastSetupError'Source'Owner obj) GHC.Base.<> ((Data.Aeson..=) "p24" (setupIntentLastSetupError'Source'P24 obj) GHC.Base.<> ((Data.Aeson..=) "receiver" (setupIntentLastSetupError'Source'Receiver obj) GHC.Base.<> ((Data.Aeson..=) "recipient" (setupIntentLastSetupError'Source'Recipient obj) GHC.Base.<> ((Data.Aeson..=) "redirect" (setupIntentLastSetupError'Source'Redirect obj) GHC.Base.<> ((Data.Aeson..=) "routing_number" (setupIntentLastSetupError'Source'RoutingNumber obj) GHC.Base.<> ((Data.Aeson..=) "sepa_debit" (setupIntentLastSetupError'Source'SepaDebit obj) GHC.Base.<> ((Data.Aeson..=) "sofort" (setupIntentLastSetupError'Source'Sofort obj) GHC.Base.<> ((Data.Aeson..=) "source_order" (setupIntentLastSetupError'Source'SourceOrder obj) GHC.Base.<> ((Data.Aeson..=) "statement_descriptor" (setupIntentLastSetupError'Source'StatementDescriptor obj) GHC.Base.<> ((Data.Aeson..=) "status" (setupIntentLastSetupError'Source'Status obj) GHC.Base.<> ((Data.Aeson..=) "three_d_secure" (setupIntentLastSetupError'Source'ThreeDSecure obj) GHC.Base.<> ((Data.Aeson..=) "tokenization_method" (setupIntentLastSetupError'Source'TokenizationMethod obj) GHC.Base.<> ((Data.Aeson..=) "type" (setupIntentLastSetupError'Source'Type obj) GHC.Base.<> ((Data.Aeson..=) "usage" (setupIntentLastSetupError'Source'Usage obj) GHC.Base.<> (Data.Aeson..=) "wechat" (setupIntentLastSetupError'Source'Wechat obj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON SetupIntentLastSetupError'Source' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SetupIntentLastSetupError'Source'" (\obj -> (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((GHC.Base.pure SetupIntentLastSetupError'Source' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "account_holder_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_credit_transfer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_state")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_zip_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "alipay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "available_payout_methods")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bancontact")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bank_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "brand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card_present")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "client_secret")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "code_verification")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cvc_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_for_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dynamic_last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "eps")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "flow")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "funding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "giropay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ideal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "klarna")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "multibanco")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "owner")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "p24")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "receiver")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "recipient")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "redirect")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "routing_number")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sepa_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sofort")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source_order")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "statement_descriptor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "three_d_secure")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tokenization_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "wechat"))

-- | Define the one-of schema setup_intentLast_setup_error\'Source\'Account\'
--
-- The ID of the account that the bank account is associated with.
data SetupIntentLastSetupError'Source'Account'Variants
  = SetupIntentLastSetupError'Source'Account'Account Account
  | SetupIntentLastSetupError'Source'Account'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SetupIntentLastSetupError'Source'Account'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SetupIntentLastSetupError'Source'Account'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema setup_intentLast_setup_error\'Source\'Available_payout_methods\'
data SetupIntentLastSetupError'Source'AvailablePayoutMethods'
  = SetupIntentLastSetupError'Source'AvailablePayoutMethods'EnumOther Data.Aeson.Types.Internal.Value
  | SetupIntentLastSetupError'Source'AvailablePayoutMethods'EnumTyped Data.Text.Internal.Text
  | SetupIntentLastSetupError'Source'AvailablePayoutMethods'EnumStringInstant
  | SetupIntentLastSetupError'Source'AvailablePayoutMethods'EnumStringStandard
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SetupIntentLastSetupError'Source'AvailablePayoutMethods' where
  toJSON (SetupIntentLastSetupError'Source'AvailablePayoutMethods'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SetupIntentLastSetupError'Source'AvailablePayoutMethods'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SetupIntentLastSetupError'Source'AvailablePayoutMethods'EnumStringInstant) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant"
  toJSON (SetupIntentLastSetupError'Source'AvailablePayoutMethods'EnumStringStandard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard"

instance Data.Aeson.FromJSON SetupIntentLastSetupError'Source'AvailablePayoutMethods' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "instant")
          then SetupIntentLastSetupError'Source'AvailablePayoutMethods'EnumStringInstant
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "standard")
              then SetupIntentLastSetupError'Source'AvailablePayoutMethods'EnumStringStandard
              else SetupIntentLastSetupError'Source'AvailablePayoutMethods'EnumOther val
      )

-- | Define the one-of schema setup_intentLast_setup_error\'Source\'Customer\'
--
-- The ID of the customer that the bank account is associated with.
data SetupIntentLastSetupError'Source'Customer'Variants
  = SetupIntentLastSetupError'Source'Customer'Customer Customer
  | SetupIntentLastSetupError'Source'Customer'DeletedCustomer DeletedCustomer
  | SetupIntentLastSetupError'Source'Customer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SetupIntentLastSetupError'Source'Customer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SetupIntentLastSetupError'Source'Customer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema setup_intentLast_setup_error\'Source\'Metadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data SetupIntentLastSetupError'Source'Metadata'
  = SetupIntentLastSetupError'Source'Metadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SetupIntentLastSetupError'Source'Metadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON SetupIntentLastSetupError'Source'Metadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SetupIntentLastSetupError'Source'Metadata'" (\obj -> GHC.Base.pure SetupIntentLastSetupError'Source'Metadata')

-- | Defines the enum schema setup_intentLast_setup_error\'Source\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data SetupIntentLastSetupError'Source'Object'
  = SetupIntentLastSetupError'Source'Object'EnumOther Data.Aeson.Types.Internal.Value
  | SetupIntentLastSetupError'Source'Object'EnumTyped Data.Text.Internal.Text
  | SetupIntentLastSetupError'Source'Object'EnumStringBankAccount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SetupIntentLastSetupError'Source'Object' where
  toJSON (SetupIntentLastSetupError'Source'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SetupIntentLastSetupError'Source'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SetupIntentLastSetupError'Source'Object'EnumStringBankAccount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account"

instance Data.Aeson.FromJSON SetupIntentLastSetupError'Source'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bank_account")
          then SetupIntentLastSetupError'Source'Object'EnumStringBankAccount
          else SetupIntentLastSetupError'Source'Object'EnumOther val
      )

-- | Defines the data type for the schema setup_intentLast_setup_error\'Source\'Owner\'
--
-- Information about the owner of the payment instrument that may be used or required by particular source types.
data SetupIntentLastSetupError'Source'Owner'
  = SetupIntentLastSetupError'Source'Owner'
      { -- | address: Owner\'s address.
        setupIntentLastSetupError'Source'Owner'Address :: (GHC.Maybe.Maybe SetupIntentLastSetupError'Source'Owner'Address'),
        -- | email: Owner\'s email address.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'Email :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Owner\'s full name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | phone: Owner\'s phone number (including extension).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'Phone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_address: Verified owner\'s address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        setupIntentLastSetupError'Source'Owner'VerifiedAddress :: (GHC.Maybe.Maybe SetupIntentLastSetupError'Source'Owner'VerifiedAddress'),
        -- | verified_email: Verified owner\'s email address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'VerifiedEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_name: Verified owner\'s full name. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'VerifiedName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_phone: Verified owner\'s phone number (including extension). Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'VerifiedPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SetupIntentLastSetupError'Source'Owner' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (setupIntentLastSetupError'Source'Owner'Address obj) : (Data.Aeson..=) "email" (setupIntentLastSetupError'Source'Owner'Email obj) : (Data.Aeson..=) "name" (setupIntentLastSetupError'Source'Owner'Name obj) : (Data.Aeson..=) "phone" (setupIntentLastSetupError'Source'Owner'Phone obj) : (Data.Aeson..=) "verified_address" (setupIntentLastSetupError'Source'Owner'VerifiedAddress obj) : (Data.Aeson..=) "verified_email" (setupIntentLastSetupError'Source'Owner'VerifiedEmail obj) : (Data.Aeson..=) "verified_name" (setupIntentLastSetupError'Source'Owner'VerifiedName obj) : (Data.Aeson..=) "verified_phone" (setupIntentLastSetupError'Source'Owner'VerifiedPhone obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (setupIntentLastSetupError'Source'Owner'Address obj) GHC.Base.<> ((Data.Aeson..=) "email" (setupIntentLastSetupError'Source'Owner'Email obj) GHC.Base.<> ((Data.Aeson..=) "name" (setupIntentLastSetupError'Source'Owner'Name obj) GHC.Base.<> ((Data.Aeson..=) "phone" (setupIntentLastSetupError'Source'Owner'Phone obj) GHC.Base.<> ((Data.Aeson..=) "verified_address" (setupIntentLastSetupError'Source'Owner'VerifiedAddress obj) GHC.Base.<> ((Data.Aeson..=) "verified_email" (setupIntentLastSetupError'Source'Owner'VerifiedEmail obj) GHC.Base.<> ((Data.Aeson..=) "verified_name" (setupIntentLastSetupError'Source'Owner'VerifiedName obj) GHC.Base.<> (Data.Aeson..=) "verified_phone" (setupIntentLastSetupError'Source'Owner'VerifiedPhone obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON SetupIntentLastSetupError'Source'Owner' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SetupIntentLastSetupError'Source'Owner'" (\obj -> (((((((GHC.Base.pure SetupIntentLastSetupError'Source'Owner' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_phone"))

-- | Defines the data type for the schema setup_intentLast_setup_error\'Source\'Owner\'Address\'
--
-- Owner\\\'s address.
data SetupIntentLastSetupError'Source'Owner'Address'
  = SetupIntentLastSetupError'Source'Owner'Address'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'Address'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'Address'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'Address'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'Address'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'Address'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'Address'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SetupIntentLastSetupError'Source'Owner'Address' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (setupIntentLastSetupError'Source'Owner'Address'City obj) : (Data.Aeson..=) "country" (setupIntentLastSetupError'Source'Owner'Address'Country obj) : (Data.Aeson..=) "line1" (setupIntentLastSetupError'Source'Owner'Address'Line1 obj) : (Data.Aeson..=) "line2" (setupIntentLastSetupError'Source'Owner'Address'Line2 obj) : (Data.Aeson..=) "postal_code" (setupIntentLastSetupError'Source'Owner'Address'PostalCode obj) : (Data.Aeson..=) "state" (setupIntentLastSetupError'Source'Owner'Address'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (setupIntentLastSetupError'Source'Owner'Address'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (setupIntentLastSetupError'Source'Owner'Address'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (setupIntentLastSetupError'Source'Owner'Address'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (setupIntentLastSetupError'Source'Owner'Address'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (setupIntentLastSetupError'Source'Owner'Address'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (setupIntentLastSetupError'Source'Owner'Address'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON SetupIntentLastSetupError'Source'Owner'Address' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SetupIntentLastSetupError'Source'Owner'Address'" (\obj -> (((((GHC.Base.pure SetupIntentLastSetupError'Source'Owner'Address' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema setup_intentLast_setup_error\'Source\'Owner\'Verified_address\'
--
-- Verified owner\\\'s address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
data SetupIntentLastSetupError'Source'Owner'VerifiedAddress'
  = SetupIntentLastSetupError'Source'Owner'VerifiedAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'VerifiedAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'VerifiedAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'VerifiedAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'VerifiedAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'VerifiedAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentLastSetupError'Source'Owner'VerifiedAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SetupIntentLastSetupError'Source'Owner'VerifiedAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (setupIntentLastSetupError'Source'Owner'VerifiedAddress'City obj) : (Data.Aeson..=) "country" (setupIntentLastSetupError'Source'Owner'VerifiedAddress'Country obj) : (Data.Aeson..=) "line1" (setupIntentLastSetupError'Source'Owner'VerifiedAddress'Line1 obj) : (Data.Aeson..=) "line2" (setupIntentLastSetupError'Source'Owner'VerifiedAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (setupIntentLastSetupError'Source'Owner'VerifiedAddress'PostalCode obj) : (Data.Aeson..=) "state" (setupIntentLastSetupError'Source'Owner'VerifiedAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (setupIntentLastSetupError'Source'Owner'VerifiedAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (setupIntentLastSetupError'Source'Owner'VerifiedAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (setupIntentLastSetupError'Source'Owner'VerifiedAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (setupIntentLastSetupError'Source'Owner'VerifiedAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (setupIntentLastSetupError'Source'Owner'VerifiedAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (setupIntentLastSetupError'Source'Owner'VerifiedAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON SetupIntentLastSetupError'Source'Owner'VerifiedAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SetupIntentLastSetupError'Source'Owner'VerifiedAddress'" (\obj -> (((((GHC.Base.pure SetupIntentLastSetupError'Source'Owner'VerifiedAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Define the one-of schema setup_intentLast_setup_error\'Source\'Recipient\'
--
-- The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
data SetupIntentLastSetupError'Source'Recipient'Variants
  = SetupIntentLastSetupError'Source'Recipient'Recipient Recipient
  | SetupIntentLastSetupError'Source'Recipient'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SetupIntentLastSetupError'Source'Recipient'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SetupIntentLastSetupError'Source'Recipient'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema setup_intentLast_setup_error\'Source\'Type\'
--
-- The \`type\` of the source. The \`type\` is a payment method, one of \`ach_credit_transfer\`, \`ach_debit\`, \`alipay\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`multibanco\`, \`klarna\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`three_d_secure\`, or \`wechat\`. An additional hash is included on the source with a name matching this value. It contains additional information specific to the [payment method](https:\/\/stripe.com\/docs\/sources) used.
data SetupIntentLastSetupError'Source'Type'
  = SetupIntentLastSetupError'Source'Type'EnumOther Data.Aeson.Types.Internal.Value
  | SetupIntentLastSetupError'Source'Type'EnumTyped Data.Text.Internal.Text
  | SetupIntentLastSetupError'Source'Type'EnumStringAchCreditTransfer
  | SetupIntentLastSetupError'Source'Type'EnumStringAchDebit
  | SetupIntentLastSetupError'Source'Type'EnumStringAlipay
  | SetupIntentLastSetupError'Source'Type'EnumStringBancontact
  | SetupIntentLastSetupError'Source'Type'EnumStringCard
  | SetupIntentLastSetupError'Source'Type'EnumStringCardPresent
  | SetupIntentLastSetupError'Source'Type'EnumStringEps
  | SetupIntentLastSetupError'Source'Type'EnumStringGiropay
  | SetupIntentLastSetupError'Source'Type'EnumStringIdeal
  | SetupIntentLastSetupError'Source'Type'EnumStringKlarna
  | SetupIntentLastSetupError'Source'Type'EnumStringMultibanco
  | SetupIntentLastSetupError'Source'Type'EnumStringP24
  | SetupIntentLastSetupError'Source'Type'EnumStringSepaDebit
  | SetupIntentLastSetupError'Source'Type'EnumStringSofort
  | SetupIntentLastSetupError'Source'Type'EnumStringThreeDSecure
  | SetupIntentLastSetupError'Source'Type'EnumStringWechat
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SetupIntentLastSetupError'Source'Type' where
  toJSON (SetupIntentLastSetupError'Source'Type'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SetupIntentLastSetupError'Source'Type'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringAchCreditTransfer) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_credit_transfer"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringAchDebit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_debit"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringAlipay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringBancontact) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bancontact"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringCard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringCardPresent) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_present"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringEps) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eps"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringGiropay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "giropay"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringIdeal) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ideal"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringKlarna) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "klarna"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringMultibanco) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "multibanco"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringP24) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "p24"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringSepaDebit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sepa_debit"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringSofort) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sofort"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringThreeDSecure) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "three_d_secure"
  toJSON (SetupIntentLastSetupError'Source'Type'EnumStringWechat) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wechat"

instance Data.Aeson.FromJSON SetupIntentLastSetupError'Source'Type' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_credit_transfer")
          then SetupIntentLastSetupError'Source'Type'EnumStringAchCreditTransfer
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_debit")
              then SetupIntentLastSetupError'Source'Type'EnumStringAchDebit
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay")
                  then SetupIntentLastSetupError'Source'Type'EnumStringAlipay
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bancontact")
                      then SetupIntentLastSetupError'Source'Type'EnumStringBancontact
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card")
                          then SetupIntentLastSetupError'Source'Type'EnumStringCard
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_present")
                              then SetupIntentLastSetupError'Source'Type'EnumStringCardPresent
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eps")
                                  then SetupIntentLastSetupError'Source'Type'EnumStringEps
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "giropay")
                                      then SetupIntentLastSetupError'Source'Type'EnumStringGiropay
                                      else
                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ideal")
                                          then SetupIntentLastSetupError'Source'Type'EnumStringIdeal
                                          else
                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "klarna")
                                              then SetupIntentLastSetupError'Source'Type'EnumStringKlarna
                                              else
                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "multibanco")
                                                  then SetupIntentLastSetupError'Source'Type'EnumStringMultibanco
                                                  else
                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "p24")
                                                      then SetupIntentLastSetupError'Source'Type'EnumStringP24
                                                      else
                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sepa_debit")
                                                          then SetupIntentLastSetupError'Source'Type'EnumStringSepaDebit
                                                          else
                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sofort")
                                                              then SetupIntentLastSetupError'Source'Type'EnumStringSofort
                                                              else
                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "three_d_secure")
                                                                  then SetupIntentLastSetupError'Source'Type'EnumStringThreeDSecure
                                                                  else
                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wechat")
                                                                      then SetupIntentLastSetupError'Source'Type'EnumStringWechat
                                                                      else SetupIntentLastSetupError'Source'Type'EnumOther val
      )

-- | Defines the enum schema setup_intentLast_setup_error\'Type\'
--
-- The type of error returned. One of \`api_connection_error\`, \`api_error\`, \`authentication_error\`, \`card_error\`, \`idempotency_error\`, \`invalid_request_error\`, or \`rate_limit_error\`
data SetupIntentLastSetupError'Type'
  = SetupIntentLastSetupError'Type'EnumOther Data.Aeson.Types.Internal.Value
  | SetupIntentLastSetupError'Type'EnumTyped Data.Text.Internal.Text
  | SetupIntentLastSetupError'Type'EnumStringApiConnectionError
  | SetupIntentLastSetupError'Type'EnumStringApiError
  | SetupIntentLastSetupError'Type'EnumStringAuthenticationError
  | SetupIntentLastSetupError'Type'EnumStringCardError
  | SetupIntentLastSetupError'Type'EnumStringIdempotencyError
  | SetupIntentLastSetupError'Type'EnumStringInvalidRequestError
  | SetupIntentLastSetupError'Type'EnumStringRateLimitError
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SetupIntentLastSetupError'Type' where
  toJSON (SetupIntentLastSetupError'Type'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SetupIntentLastSetupError'Type'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SetupIntentLastSetupError'Type'EnumStringApiConnectionError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "api_connection_error"
  toJSON (SetupIntentLastSetupError'Type'EnumStringApiError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "api_error"
  toJSON (SetupIntentLastSetupError'Type'EnumStringAuthenticationError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "authentication_error"
  toJSON (SetupIntentLastSetupError'Type'EnumStringCardError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_error"
  toJSON (SetupIntentLastSetupError'Type'EnumStringIdempotencyError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "idempotency_error"
  toJSON (SetupIntentLastSetupError'Type'EnumStringInvalidRequestError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invalid_request_error"
  toJSON (SetupIntentLastSetupError'Type'EnumStringRateLimitError) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "rate_limit_error"

instance Data.Aeson.FromJSON SetupIntentLastSetupError'Type' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "api_connection_error")
          then SetupIntentLastSetupError'Type'EnumStringApiConnectionError
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "api_error")
              then SetupIntentLastSetupError'Type'EnumStringApiError
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "authentication_error")
                  then SetupIntentLastSetupError'Type'EnumStringAuthenticationError
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_error")
                      then SetupIntentLastSetupError'Type'EnumStringCardError
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "idempotency_error")
                          then SetupIntentLastSetupError'Type'EnumStringIdempotencyError
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "invalid_request_error")
                              then SetupIntentLastSetupError'Type'EnumStringInvalidRequestError
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "rate_limit_error")
                                  then SetupIntentLastSetupError'Type'EnumStringRateLimitError
                                  else SetupIntentLastSetupError'Type'EnumOther val
      )

-- | Define the one-of schema setup_intentMandate\'
--
-- ID of the multi use Mandate generated by the SetupIntent.
data SetupIntentMandate'Variants
  = SetupIntentMandate'Mandate Mandate
  | SetupIntentMandate'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SetupIntentMandate'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SetupIntentMandate'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema setup_intentMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data SetupIntentMetadata'
  = SetupIntentMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SetupIntentMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON SetupIntentMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SetupIntentMetadata'" (\obj -> GHC.Base.pure SetupIntentMetadata')

-- | Defines the data type for the schema setup_intentNext_action\'
--
-- If present, this property tells you what actions you need to take in order for your customer to continue payment setup.
data SetupIntentNextAction'
  = SetupIntentNextAction'
      { -- | redirect_to_url:
        setupIntentNextAction'RedirectToUrl :: (GHC.Maybe.Maybe SetupIntentNextActionRedirectToUrl),
        -- | type: Type of the next action to perform, one of \`redirect_to_url\` or \`use_stripe_sdk\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        setupIntentNextAction'Type :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | use_stripe_sdk: When confirming a SetupIntent with Stripe.js, Stripe.js depends on the contents of this dictionary to invoke authentication flows. The shape of the contents is subject to change and is only intended to be used by Stripe.js.
        setupIntentNextAction'UseStripeSdk :: (GHC.Maybe.Maybe SetupIntentNextAction'UseStripeSdk')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SetupIntentNextAction' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "redirect_to_url" (setupIntentNextAction'RedirectToUrl obj) : (Data.Aeson..=) "type" (setupIntentNextAction'Type obj) : (Data.Aeson..=) "use_stripe_sdk" (setupIntentNextAction'UseStripeSdk obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "redirect_to_url" (setupIntentNextAction'RedirectToUrl obj) GHC.Base.<> ((Data.Aeson..=) "type" (setupIntentNextAction'Type obj) GHC.Base.<> (Data.Aeson..=) "use_stripe_sdk" (setupIntentNextAction'UseStripeSdk obj)))

instance Data.Aeson.Types.FromJSON.FromJSON SetupIntentNextAction' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SetupIntentNextAction'" (\obj -> ((GHC.Base.pure SetupIntentNextAction' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "redirect_to_url")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "use_stripe_sdk"))

-- | Defines the data type for the schema setup_intentNext_action\'Use_stripe_sdk\'
--
-- When confirming a SetupIntent with Stripe.js, Stripe.js depends on the contents of this dictionary to invoke authentication flows. The shape of the contents is subject to change and is only intended to be used by Stripe.js.
data SetupIntentNextAction'UseStripeSdk'
  = SetupIntentNextAction'UseStripeSdk'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SetupIntentNextAction'UseStripeSdk' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON SetupIntentNextAction'UseStripeSdk' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SetupIntentNextAction'UseStripeSdk'" (\obj -> GHC.Base.pure SetupIntentNextAction'UseStripeSdk')

-- | Defines the enum schema setup_intentObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data SetupIntentObject'
  = SetupIntentObject'EnumOther Data.Aeson.Types.Internal.Value
  | SetupIntentObject'EnumTyped Data.Text.Internal.Text
  | SetupIntentObject'EnumStringSetupIntent
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SetupIntentObject' where
  toJSON (SetupIntentObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SetupIntentObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SetupIntentObject'EnumStringSetupIntent) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "setup_intent"

instance Data.Aeson.FromJSON SetupIntentObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "setup_intent")
          then SetupIntentObject'EnumStringSetupIntent
          else SetupIntentObject'EnumOther val
      )

-- | Define the one-of schema setup_intentOn_behalf_of\'
--
-- The account (if any) for which the setup is intended.
data SetupIntentOnBehalfOf'Variants
  = SetupIntentOnBehalfOf'Account Account
  | SetupIntentOnBehalfOf'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SetupIntentOnBehalfOf'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SetupIntentOnBehalfOf'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema setup_intentPayment_method\'
--
-- ID of the payment method used with this SetupIntent.
data SetupIntentPaymentMethod'Variants
  = SetupIntentPaymentMethod'PaymentMethod PaymentMethod
  | SetupIntentPaymentMethod'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SetupIntentPaymentMethod'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SetupIntentPaymentMethod'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema setup_intentPayment_method_options\'
--
-- Payment-method-specific configuration for this SetupIntent.
data SetupIntentPaymentMethodOptions'
  = SetupIntentPaymentMethodOptions'
      { -- | card:
        setupIntentPaymentMethodOptions'Card :: (GHC.Maybe.Maybe SetupIntentPaymentMethodOptionsCard)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SetupIntentPaymentMethodOptions' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "card" (setupIntentPaymentMethodOptions'Card obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "card" (setupIntentPaymentMethodOptions'Card obj))

instance Data.Aeson.Types.FromJSON.FromJSON SetupIntentPaymentMethodOptions' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SetupIntentPaymentMethodOptions'" (\obj -> GHC.Base.pure SetupIntentPaymentMethodOptions' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card"))

-- | Define the one-of schema setup_intentSingle_use_mandate\'
--
-- ID of the single_use Mandate generated by the SetupIntent.
data SetupIntentSingleUseMandate'Variants
  = SetupIntentSingleUseMandate'Mandate Mandate
  | SetupIntentSingleUseMandate'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SetupIntentSingleUseMandate'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SetupIntentSingleUseMandate'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema setup_intentStatus\'
--
-- [Status](https:\/\/stripe.com\/docs\/payments\/intents\#intent-statuses) of this SetupIntent, one of \`requires_payment_method\`, \`requires_confirmation\`, \`requires_action\`, \`processing\`, \`canceled\`, or \`succeeded\`.
data SetupIntentStatus'
  = SetupIntentStatus'EnumOther Data.Aeson.Types.Internal.Value
  | SetupIntentStatus'EnumTyped Data.Text.Internal.Text
  | SetupIntentStatus'EnumStringCanceled
  | SetupIntentStatus'EnumStringProcessing
  | SetupIntentStatus'EnumStringRequiresAction
  | SetupIntentStatus'EnumStringRequiresConfirmation
  | SetupIntentStatus'EnumStringRequiresPaymentMethod
  | SetupIntentStatus'EnumStringSucceeded
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SetupIntentStatus' where
  toJSON (SetupIntentStatus'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SetupIntentStatus'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SetupIntentStatus'EnumStringCanceled) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "canceled"
  toJSON (SetupIntentStatus'EnumStringProcessing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "processing"
  toJSON (SetupIntentStatus'EnumStringRequiresAction) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requires_action"
  toJSON (SetupIntentStatus'EnumStringRequiresConfirmation) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requires_confirmation"
  toJSON (SetupIntentStatus'EnumStringRequiresPaymentMethod) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requires_payment_method"
  toJSON (SetupIntentStatus'EnumStringSucceeded) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "succeeded"

instance Data.Aeson.FromJSON SetupIntentStatus' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "canceled")
          then SetupIntentStatus'EnumStringCanceled
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "processing")
              then SetupIntentStatus'EnumStringProcessing
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requires_action")
                  then SetupIntentStatus'EnumStringRequiresAction
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requires_confirmation")
                      then SetupIntentStatus'EnumStringRequiresConfirmation
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "requires_payment_method")
                          then SetupIntentStatus'EnumStringRequiresPaymentMethod
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "succeeded")
                              then SetupIntentStatus'EnumStringSucceeded
                              else SetupIntentStatus'EnumOther val
      )

-- | Defines the data type for the schema shipping_method
data ShippingMethod
  = ShippingMethod
      { -- | amount: A positive integer in the smallest currency unit (that is, 100 cents for \$1.00, or 1 for ¥1, Japanese Yen being a zero-decimal currency) representing the total amount for the line item.
        shippingMethodAmount :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        shippingMethodCurrency :: Data.Text.Internal.Text,
        -- | delivery_estimate: The estimated delivery date for the given shipping method. Can be either a specific date or a range.
        shippingMethodDeliveryEstimate :: (GHC.Maybe.Maybe ShippingMethodDeliveryEstimate'),
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        shippingMethodDescription :: Data.Text.Internal.Text,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        shippingMethodId :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ShippingMethod where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (shippingMethodAmount obj) : (Data.Aeson..=) "currency" (shippingMethodCurrency obj) : (Data.Aeson..=) "delivery_estimate" (shippingMethodDeliveryEstimate obj) : (Data.Aeson..=) "description" (shippingMethodDescription obj) : (Data.Aeson..=) "id" (shippingMethodId obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (shippingMethodAmount obj) GHC.Base.<> ((Data.Aeson..=) "currency" (shippingMethodCurrency obj) GHC.Base.<> ((Data.Aeson..=) "delivery_estimate" (shippingMethodDeliveryEstimate obj) GHC.Base.<> ((Data.Aeson..=) "description" (shippingMethodDescription obj) GHC.Base.<> (Data.Aeson..=) "id" (shippingMethodId obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON ShippingMethod where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ShippingMethod" (\obj -> ((((GHC.Base.pure ShippingMethod GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "delivery_estimate")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id"))

-- | Defines the data type for the schema shipping_methodDelivery_estimate\'
--
-- The estimated delivery date for the given shipping method. Can be either a specific date or a range.
data ShippingMethodDeliveryEstimate'
  = ShippingMethodDeliveryEstimate'
      { -- | date: If \`type\` is \`\"exact\"\`, \`date\` will be the expected delivery date in the format YYYY-MM-DD.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        shippingMethodDeliveryEstimate'Date :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | earliest: If \`type\` is \`\"range\"\`, \`earliest\` will be be the earliest delivery date in the format YYYY-MM-DD.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        shippingMethodDeliveryEstimate'Earliest :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | latest: If \`type\` is \`\"range\"\`, \`latest\` will be the latest delivery date in the format YYYY-MM-DD.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        shippingMethodDeliveryEstimate'Latest :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | type: The type of estimate. Must be either \`\"range\"\` or \`\"exact\"\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        shippingMethodDeliveryEstimate'Type :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ShippingMethodDeliveryEstimate' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "date" (shippingMethodDeliveryEstimate'Date obj) : (Data.Aeson..=) "earliest" (shippingMethodDeliveryEstimate'Earliest obj) : (Data.Aeson..=) "latest" (shippingMethodDeliveryEstimate'Latest obj) : (Data.Aeson..=) "type" (shippingMethodDeliveryEstimate'Type obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "date" (shippingMethodDeliveryEstimate'Date obj) GHC.Base.<> ((Data.Aeson..=) "earliest" (shippingMethodDeliveryEstimate'Earliest obj) GHC.Base.<> ((Data.Aeson..=) "latest" (shippingMethodDeliveryEstimate'Latest obj) GHC.Base.<> (Data.Aeson..=) "type" (shippingMethodDeliveryEstimate'Type obj))))

instance Data.Aeson.Types.FromJSON.FromJSON ShippingMethodDeliveryEstimate' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ShippingMethodDeliveryEstimate'" (\obj -> (((GHC.Base.pure ShippingMethodDeliveryEstimate' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "date")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "earliest")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "latest")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type"))

-- | Defines the data type for the schema sku
--
-- Stores representations of [stock keeping units](http:\/\/en.wikipedia.org\/wiki\/Stock_keeping_unit).
-- SKUs describe specific product variations, taking into account any combination of: attributes,
-- currency, and cost. For example, a product may be a T-shirt, whereas a specific SKU represents
-- the \`size: large\`, \`color: red\` version of that shirt.
--
-- Can also be used to manage inventory.
--
-- Related guide: [Tax, Shipping, and Inventory](https:\/\/stripe.com\/docs\/orders).
data Sku
  = Sku
      { -- | active: Whether the SKU is available for purchase.
        skuActive :: GHC.Types.Bool,
        -- | attributes: A dictionary of attributes and values for the attributes defined by the product. If, for example, a product\'s attributes are \`[\"size\", \"gender\"]\`, a valid SKU has the following dictionary of attributes: \`{\"size\": \"Medium\", \"gender\": \"Unisex\"}\`.
        skuAttributes :: SkuAttributes',
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        skuCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        skuCurrency :: Data.Text.Internal.Text,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        skuId :: Data.Text.Internal.Text,
        -- | image: The URL of an image for this SKU, meant to be displayable to the customer.
        --
        -- Constraints:
        --
        -- * Maximum length of 2048
        skuImage :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | inventory:
        skuInventory :: Inventory,
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        skuLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        skuMetadata :: SkuMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        skuObject :: SkuObject',
        -- | package_dimensions: The dimensions of this SKU for shipping purposes.
        skuPackageDimensions :: (GHC.Maybe.Maybe SkuPackageDimensions'),
        -- | price: The cost of the item as a positive integer in the smallest currency unit (that is, 100 cents to charge \$1.00, or 100 to charge ¥100, Japanese Yen being a zero-decimal currency).
        skuPrice :: GHC.Integer.Type.Integer,
        -- | product: The ID of the product this SKU is associated with. The product must be currently active.
        skuProduct :: SkuProduct'Variants,
        -- | updated: Time at which the object was last updated. Measured in seconds since the Unix epoch.
        skuUpdated :: GHC.Integer.Type.Integer
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Sku where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "active" (skuActive obj) : (Data.Aeson..=) "attributes" (skuAttributes obj) : (Data.Aeson..=) "created" (skuCreated obj) : (Data.Aeson..=) "currency" (skuCurrency obj) : (Data.Aeson..=) "id" (skuId obj) : (Data.Aeson..=) "image" (skuImage obj) : (Data.Aeson..=) "inventory" (skuInventory obj) : (Data.Aeson..=) "livemode" (skuLivemode obj) : (Data.Aeson..=) "metadata" (skuMetadata obj) : (Data.Aeson..=) "object" (skuObject obj) : (Data.Aeson..=) "package_dimensions" (skuPackageDimensions obj) : (Data.Aeson..=) "price" (skuPrice obj) : (Data.Aeson..=) "product" (skuProduct obj) : (Data.Aeson..=) "updated" (skuUpdated obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "active" (skuActive obj) GHC.Base.<> ((Data.Aeson..=) "attributes" (skuAttributes obj) GHC.Base.<> ((Data.Aeson..=) "created" (skuCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (skuCurrency obj) GHC.Base.<> ((Data.Aeson..=) "id" (skuId obj) GHC.Base.<> ((Data.Aeson..=) "image" (skuImage obj) GHC.Base.<> ((Data.Aeson..=) "inventory" (skuInventory obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (skuLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (skuMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (skuObject obj) GHC.Base.<> ((Data.Aeson..=) "package_dimensions" (skuPackageDimensions obj) GHC.Base.<> ((Data.Aeson..=) "price" (skuPrice obj) GHC.Base.<> ((Data.Aeson..=) "product" (skuProduct obj) GHC.Base.<> (Data.Aeson..=) "updated" (skuUpdated obj))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Sku where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Sku" (\obj -> (((((((((((((GHC.Base.pure Sku GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "active")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "attributes")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "image")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "inventory")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "package_dimensions")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "price")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "product")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "updated"))

-- | Defines the data type for the schema skuAttributes\'
--
-- A dictionary of attributes and values for the attributes defined by the product. If, for example, a product\'s attributes are \`[\"size\", \"gender\"]\`, a valid SKU has the following dictionary of attributes: \`{\"size\": \"Medium\", \"gender\": \"Unisex\"}\`.
data SkuAttributes'
  = SkuAttributes'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SkuAttributes' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON SkuAttributes' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SkuAttributes'" (\obj -> GHC.Base.pure SkuAttributes')

-- | Defines the data type for the schema skuMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data SkuMetadata'
  = SkuMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SkuMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON SkuMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SkuMetadata'" (\obj -> GHC.Base.pure SkuMetadata')

-- | Defines the enum schema skuObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data SkuObject'
  = SkuObject'EnumOther Data.Aeson.Types.Internal.Value
  | SkuObject'EnumTyped Data.Text.Internal.Text
  | SkuObject'EnumStringSku
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SkuObject' where
  toJSON (SkuObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SkuObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SkuObject'EnumStringSku) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sku"

instance Data.Aeson.FromJSON SkuObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sku")
          then SkuObject'EnumStringSku
          else SkuObject'EnumOther val
      )

-- | Defines the data type for the schema skuPackage_dimensions\'
--
-- The dimensions of this SKU for shipping purposes.
data SkuPackageDimensions'
  = SkuPackageDimensions'
      { -- | height: Height, in inches.
        skuPackageDimensions'Height :: (GHC.Maybe.Maybe GHC.Types.Double),
        -- | length: Length, in inches.
        skuPackageDimensions'Length :: (GHC.Maybe.Maybe GHC.Types.Double),
        -- | weight: Weight, in ounces.
        skuPackageDimensions'Weight :: (GHC.Maybe.Maybe GHC.Types.Double),
        -- | width: Width, in inches.
        skuPackageDimensions'Width :: (GHC.Maybe.Maybe GHC.Types.Double)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SkuPackageDimensions' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "height" (skuPackageDimensions'Height obj) : (Data.Aeson..=) "length" (skuPackageDimensions'Length obj) : (Data.Aeson..=) "weight" (skuPackageDimensions'Weight obj) : (Data.Aeson..=) "width" (skuPackageDimensions'Width obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "height" (skuPackageDimensions'Height obj) GHC.Base.<> ((Data.Aeson..=) "length" (skuPackageDimensions'Length obj) GHC.Base.<> ((Data.Aeson..=) "weight" (skuPackageDimensions'Weight obj) GHC.Base.<> (Data.Aeson..=) "width" (skuPackageDimensions'Width obj))))

instance Data.Aeson.Types.FromJSON.FromJSON SkuPackageDimensions' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SkuPackageDimensions'" (\obj -> (((GHC.Base.pure SkuPackageDimensions' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "height")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "length")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "weight")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "width"))

-- | Define the one-of schema skuProduct\'
--
-- The ID of the product this SKU is associated with. The product must be currently active.
data SkuProduct'Variants
  = SkuProduct'Product Product
  | SkuProduct'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SkuProduct'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SkuProduct'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema source
--
-- \`Source\` objects allow you to accept a variety of payment methods. They
-- represent a customer\'s payment instrument, and can be used with the Stripe API
-- just like a \`Card\` object: once chargeable, they can be charged, or can be
-- attached to customers.
--
-- Related guides: [Sources API](https:\/\/stripe.com\/docs\/sources) and [Sources & Customers](https:\/\/stripe.com\/docs\/sources\/customers).
data Source
  = Source
      { -- | ach_credit_transfer
        sourceAchCreditTransfer :: (GHC.Maybe.Maybe SourceTypeAchCreditTransfer),
        -- | ach_debit
        sourceAchDebit :: (GHC.Maybe.Maybe SourceTypeAchDebit),
        -- | alipay
        sourceAlipay :: (GHC.Maybe.Maybe SourceTypeAlipay),
        -- | amount: A positive integer in the smallest currency unit (that is, 100 cents for \$1.00, or 1 for ¥1, Japanese Yen being a zero-decimal currency) representing the total amount associated with the source. This is the amount for which the source will be chargeable once ready. Required for \`single_use\` sources.
        sourceAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | bancontact
        sourceBancontact :: (GHC.Maybe.Maybe SourceTypeBancontact),
        -- | card
        sourceCard :: (GHC.Maybe.Maybe SourceTypeCard),
        -- | card_present
        sourceCardPresent :: (GHC.Maybe.Maybe SourceTypeCardPresent),
        -- | client_secret: The client secret of the source. Used for client-side retrieval using a publishable key.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceClientSecret :: Data.Text.Internal.Text,
        -- | code_verification:
        sourceCodeVerification :: (GHC.Maybe.Maybe SourceCodeVerificationFlow),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        sourceCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/currencies) associated with the source. This is the currency for which the source will be chargeable once ready. Required for \`single_use\` sources.
        sourceCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | customer: The ID of the customer to which this source is attached. This will not be present when the source has not been attached to a customer.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceCustomer :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | eps
        sourceEps :: (GHC.Maybe.Maybe SourceTypeEps),
        -- | flow: The authentication \`flow\` of the source. \`flow\` is one of \`redirect\`, \`receiver\`, \`code_verification\`, \`none\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceFlow :: Data.Text.Internal.Text,
        -- | giropay
        sourceGiropay :: (GHC.Maybe.Maybe SourceTypeGiropay),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceId :: Data.Text.Internal.Text,
        -- | ideal
        sourceIdeal :: (GHC.Maybe.Maybe SourceTypeIdeal),
        -- | klarna
        sourceKlarna :: (GHC.Maybe.Maybe SourceTypeKlarna),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        sourceLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        sourceMetadata :: (GHC.Maybe.Maybe SourceMetadata'),
        -- | multibanco
        sourceMultibanco :: (GHC.Maybe.Maybe SourceTypeMultibanco),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        sourceObject :: SourceObject',
        -- | owner: Information about the owner of the payment instrument that may be used or required by particular source types.
        sourceOwner :: (GHC.Maybe.Maybe SourceOwner'),
        -- | p24
        sourceP24 :: (GHC.Maybe.Maybe SourceTypeP24),
        -- | receiver:
        sourceReceiver :: (GHC.Maybe.Maybe SourceReceiverFlow),
        -- | redirect:
        sourceRedirect :: (GHC.Maybe.Maybe SourceRedirectFlow),
        -- | sepa_debit
        sourceSepaDebit :: (GHC.Maybe.Maybe SourceTypeSepaDebit),
        -- | sofort
        sourceSofort :: (GHC.Maybe.Maybe SourceTypeSofort),
        -- | source_order:
        sourceSourceOrder :: (GHC.Maybe.Maybe SourceOrder),
        -- | statement_descriptor: Extra information about a source. This will appear on your customer\'s statement every time you charge the source.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceStatementDescriptor :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: The status of the source, one of \`canceled\`, \`chargeable\`, \`consumed\`, \`failed\`, or \`pending\`. Only \`chargeable\` sources can be used to create a charge.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceStatus :: Data.Text.Internal.Text,
        -- | three_d_secure
        sourceThreeDSecure :: (GHC.Maybe.Maybe SourceTypeThreeDSecure),
        -- | type: The \`type\` of the source. The \`type\` is a payment method, one of \`ach_credit_transfer\`, \`ach_debit\`, \`alipay\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`multibanco\`, \`klarna\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`three_d_secure\`, or \`wechat\`. An additional hash is included on the source with a name matching this value. It contains additional information specific to the [payment method](https:\/\/stripe.com\/docs\/sources) used.
        sourceType :: SourceType',
        -- | usage: Either \`reusable\` or \`single_use\`. Whether this source should be reusable or not. Some source types may or may not be reusable by construction, while others may leave the option at creation. If an incompatible value is passed, an error will be returned.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceUsage :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | wechat
        sourceWechat :: (GHC.Maybe.Maybe SourceTypeWechat)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Source where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "ach_credit_transfer" (sourceAchCreditTransfer obj) : (Data.Aeson..=) "ach_debit" (sourceAchDebit obj) : (Data.Aeson..=) "alipay" (sourceAlipay obj) : (Data.Aeson..=) "amount" (sourceAmount obj) : (Data.Aeson..=) "bancontact" (sourceBancontact obj) : (Data.Aeson..=) "card" (sourceCard obj) : (Data.Aeson..=) "card_present" (sourceCardPresent obj) : (Data.Aeson..=) "client_secret" (sourceClientSecret obj) : (Data.Aeson..=) "code_verification" (sourceCodeVerification obj) : (Data.Aeson..=) "created" (sourceCreated obj) : (Data.Aeson..=) "currency" (sourceCurrency obj) : (Data.Aeson..=) "customer" (sourceCustomer obj) : (Data.Aeson..=) "eps" (sourceEps obj) : (Data.Aeson..=) "flow" (sourceFlow obj) : (Data.Aeson..=) "giropay" (sourceGiropay obj) : (Data.Aeson..=) "id" (sourceId obj) : (Data.Aeson..=) "ideal" (sourceIdeal obj) : (Data.Aeson..=) "klarna" (sourceKlarna obj) : (Data.Aeson..=) "livemode" (sourceLivemode obj) : (Data.Aeson..=) "metadata" (sourceMetadata obj) : (Data.Aeson..=) "multibanco" (sourceMultibanco obj) : (Data.Aeson..=) "object" (sourceObject obj) : (Data.Aeson..=) "owner" (sourceOwner obj) : (Data.Aeson..=) "p24" (sourceP24 obj) : (Data.Aeson..=) "receiver" (sourceReceiver obj) : (Data.Aeson..=) "redirect" (sourceRedirect obj) : (Data.Aeson..=) "sepa_debit" (sourceSepaDebit obj) : (Data.Aeson..=) "sofort" (sourceSofort obj) : (Data.Aeson..=) "source_order" (sourceSourceOrder obj) : (Data.Aeson..=) "statement_descriptor" (sourceStatementDescriptor obj) : (Data.Aeson..=) "status" (sourceStatus obj) : (Data.Aeson..=) "three_d_secure" (sourceThreeDSecure obj) : (Data.Aeson..=) "type" (sourceType obj) : (Data.Aeson..=) "usage" (sourceUsage obj) : (Data.Aeson..=) "wechat" (sourceWechat obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "ach_credit_transfer" (sourceAchCreditTransfer obj) GHC.Base.<> ((Data.Aeson..=) "ach_debit" (sourceAchDebit obj) GHC.Base.<> ((Data.Aeson..=) "alipay" (sourceAlipay obj) GHC.Base.<> ((Data.Aeson..=) "amount" (sourceAmount obj) GHC.Base.<> ((Data.Aeson..=) "bancontact" (sourceBancontact obj) GHC.Base.<> ((Data.Aeson..=) "card" (sourceCard obj) GHC.Base.<> ((Data.Aeson..=) "card_present" (sourceCardPresent obj) GHC.Base.<> ((Data.Aeson..=) "client_secret" (sourceClientSecret obj) GHC.Base.<> ((Data.Aeson..=) "code_verification" (sourceCodeVerification obj) GHC.Base.<> ((Data.Aeson..=) "created" (sourceCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (sourceCurrency obj) GHC.Base.<> ((Data.Aeson..=) "customer" (sourceCustomer obj) GHC.Base.<> ((Data.Aeson..=) "eps" (sourceEps obj) GHC.Base.<> ((Data.Aeson..=) "flow" (sourceFlow obj) GHC.Base.<> ((Data.Aeson..=) "giropay" (sourceGiropay obj) GHC.Base.<> ((Data.Aeson..=) "id" (sourceId obj) GHC.Base.<> ((Data.Aeson..=) "ideal" (sourceIdeal obj) GHC.Base.<> ((Data.Aeson..=) "klarna" (sourceKlarna obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (sourceLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (sourceMetadata obj) GHC.Base.<> ((Data.Aeson..=) "multibanco" (sourceMultibanco obj) GHC.Base.<> ((Data.Aeson..=) "object" (sourceObject obj) GHC.Base.<> ((Data.Aeson..=) "owner" (sourceOwner obj) GHC.Base.<> ((Data.Aeson..=) "p24" (sourceP24 obj) GHC.Base.<> ((Data.Aeson..=) "receiver" (sourceReceiver obj) GHC.Base.<> ((Data.Aeson..=) "redirect" (sourceRedirect obj) GHC.Base.<> ((Data.Aeson..=) "sepa_debit" (sourceSepaDebit obj) GHC.Base.<> ((Data.Aeson..=) "sofort" (sourceSofort obj) GHC.Base.<> ((Data.Aeson..=) "source_order" (sourceSourceOrder obj) GHC.Base.<> ((Data.Aeson..=) "statement_descriptor" (sourceStatementDescriptor obj) GHC.Base.<> ((Data.Aeson..=) "status" (sourceStatus obj) GHC.Base.<> ((Data.Aeson..=) "three_d_secure" (sourceThreeDSecure obj) GHC.Base.<> ((Data.Aeson..=) "type" (sourceType obj) GHC.Base.<> ((Data.Aeson..=) "usage" (sourceUsage obj) GHC.Base.<> (Data.Aeson..=) "wechat" (sourceWechat obj)))))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Source where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Source" (\obj -> ((((((((((((((((((((((((((((((((((GHC.Base.pure Source GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_credit_transfer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ach_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "alipay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bancontact")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card_present")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "client_secret")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "code_verification")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "eps")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "flow")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "giropay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ideal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "klarna")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "multibanco")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "owner")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "p24")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "receiver")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "redirect")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sepa_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sofort")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source_order")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "statement_descriptor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "three_d_secure")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "wechat"))

-- | Defines the data type for the schema sourceMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data SourceMetadata'
  = SourceMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SourceMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON SourceMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SourceMetadata'" (\obj -> GHC.Base.pure SourceMetadata')

-- | Defines the enum schema sourceObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data SourceObject'
  = SourceObject'EnumOther Data.Aeson.Types.Internal.Value
  | SourceObject'EnumTyped Data.Text.Internal.Text
  | SourceObject'EnumStringSource
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SourceObject' where
  toJSON (SourceObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SourceObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SourceObject'EnumStringSource) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "source"

instance Data.Aeson.FromJSON SourceObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "source")
          then SourceObject'EnumStringSource
          else SourceObject'EnumOther val
      )

-- | Defines the data type for the schema sourceOwner\'
--
-- Information about the owner of the payment instrument that may be used or required by particular source types.
data SourceOwner'
  = SourceOwner'
      { -- | address: Owner\'s address.
        sourceOwner'Address :: (GHC.Maybe.Maybe SourceOwner'Address'),
        -- | email: Owner\'s email address.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'Email :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Owner\'s full name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | phone: Owner\'s phone number (including extension).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'Phone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_address: Verified owner\'s address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        sourceOwner'VerifiedAddress :: (GHC.Maybe.Maybe SourceOwner'VerifiedAddress'),
        -- | verified_email: Verified owner\'s email address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'VerifiedEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_name: Verified owner\'s full name. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'VerifiedName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_phone: Verified owner\'s phone number (including extension). Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'VerifiedPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SourceOwner' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (sourceOwner'Address obj) : (Data.Aeson..=) "email" (sourceOwner'Email obj) : (Data.Aeson..=) "name" (sourceOwner'Name obj) : (Data.Aeson..=) "phone" (sourceOwner'Phone obj) : (Data.Aeson..=) "verified_address" (sourceOwner'VerifiedAddress obj) : (Data.Aeson..=) "verified_email" (sourceOwner'VerifiedEmail obj) : (Data.Aeson..=) "verified_name" (sourceOwner'VerifiedName obj) : (Data.Aeson..=) "verified_phone" (sourceOwner'VerifiedPhone obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (sourceOwner'Address obj) GHC.Base.<> ((Data.Aeson..=) "email" (sourceOwner'Email obj) GHC.Base.<> ((Data.Aeson..=) "name" (sourceOwner'Name obj) GHC.Base.<> ((Data.Aeson..=) "phone" (sourceOwner'Phone obj) GHC.Base.<> ((Data.Aeson..=) "verified_address" (sourceOwner'VerifiedAddress obj) GHC.Base.<> ((Data.Aeson..=) "verified_email" (sourceOwner'VerifiedEmail obj) GHC.Base.<> ((Data.Aeson..=) "verified_name" (sourceOwner'VerifiedName obj) GHC.Base.<> (Data.Aeson..=) "verified_phone" (sourceOwner'VerifiedPhone obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON SourceOwner' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SourceOwner'" (\obj -> (((((((GHC.Base.pure SourceOwner' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_phone"))

-- | Defines the data type for the schema sourceOwner\'Address\'
--
-- Owner\\\'s address.
data SourceOwner'Address'
  = SourceOwner'Address'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'Address'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'Address'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'Address'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'Address'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'Address'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'Address'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SourceOwner'Address' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (sourceOwner'Address'City obj) : (Data.Aeson..=) "country" (sourceOwner'Address'Country obj) : (Data.Aeson..=) "line1" (sourceOwner'Address'Line1 obj) : (Data.Aeson..=) "line2" (sourceOwner'Address'Line2 obj) : (Data.Aeson..=) "postal_code" (sourceOwner'Address'PostalCode obj) : (Data.Aeson..=) "state" (sourceOwner'Address'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (sourceOwner'Address'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (sourceOwner'Address'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (sourceOwner'Address'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (sourceOwner'Address'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (sourceOwner'Address'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (sourceOwner'Address'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON SourceOwner'Address' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SourceOwner'Address'" (\obj -> (((((GHC.Base.pure SourceOwner'Address' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema sourceOwner\'Verified_address\'
--
-- Verified owner\\\'s address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
data SourceOwner'VerifiedAddress'
  = SourceOwner'VerifiedAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'VerifiedAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'VerifiedAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'VerifiedAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'VerifiedAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'VerifiedAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwner'VerifiedAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SourceOwner'VerifiedAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (sourceOwner'VerifiedAddress'City obj) : (Data.Aeson..=) "country" (sourceOwner'VerifiedAddress'Country obj) : (Data.Aeson..=) "line1" (sourceOwner'VerifiedAddress'Line1 obj) : (Data.Aeson..=) "line2" (sourceOwner'VerifiedAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (sourceOwner'VerifiedAddress'PostalCode obj) : (Data.Aeson..=) "state" (sourceOwner'VerifiedAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (sourceOwner'VerifiedAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (sourceOwner'VerifiedAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (sourceOwner'VerifiedAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (sourceOwner'VerifiedAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (sourceOwner'VerifiedAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (sourceOwner'VerifiedAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON SourceOwner'VerifiedAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SourceOwner'VerifiedAddress'" (\obj -> (((((GHC.Base.pure SourceOwner'VerifiedAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the enum schema sourceType\'
--
-- The \`type\` of the source. The \`type\` is a payment method, one of \`ach_credit_transfer\`, \`ach_debit\`, \`alipay\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`multibanco\`, \`klarna\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`three_d_secure\`, or \`wechat\`. An additional hash is included on the source with a name matching this value. It contains additional information specific to the [payment method](https:\/\/stripe.com\/docs\/sources) used.
data SourceType'
  = SourceType'EnumOther Data.Aeson.Types.Internal.Value
  | SourceType'EnumTyped Data.Text.Internal.Text
  | SourceType'EnumStringAchCreditTransfer
  | SourceType'EnumStringAchDebit
  | SourceType'EnumStringAlipay
  | SourceType'EnumStringBancontact
  | SourceType'EnumStringCard
  | SourceType'EnumStringCardPresent
  | SourceType'EnumStringEps
  | SourceType'EnumStringGiropay
  | SourceType'EnumStringIdeal
  | SourceType'EnumStringKlarna
  | SourceType'EnumStringMultibanco
  | SourceType'EnumStringP24
  | SourceType'EnumStringSepaDebit
  | SourceType'EnumStringSofort
  | SourceType'EnumStringThreeDSecure
  | SourceType'EnumStringWechat
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SourceType' where
  toJSON (SourceType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SourceType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SourceType'EnumStringAchCreditTransfer) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_credit_transfer"
  toJSON (SourceType'EnumStringAchDebit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_debit"
  toJSON (SourceType'EnumStringAlipay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay"
  toJSON (SourceType'EnumStringBancontact) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bancontact"
  toJSON (SourceType'EnumStringCard) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card"
  toJSON (SourceType'EnumStringCardPresent) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_present"
  toJSON (SourceType'EnumStringEps) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eps"
  toJSON (SourceType'EnumStringGiropay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "giropay"
  toJSON (SourceType'EnumStringIdeal) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ideal"
  toJSON (SourceType'EnumStringKlarna) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "klarna"
  toJSON (SourceType'EnumStringMultibanco) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "multibanco"
  toJSON (SourceType'EnumStringP24) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "p24"
  toJSON (SourceType'EnumStringSepaDebit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sepa_debit"
  toJSON (SourceType'EnumStringSofort) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sofort"
  toJSON (SourceType'EnumStringThreeDSecure) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "three_d_secure"
  toJSON (SourceType'EnumStringWechat) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wechat"

instance Data.Aeson.FromJSON SourceType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_credit_transfer")
          then SourceType'EnumStringAchCreditTransfer
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ach_debit")
              then SourceType'EnumStringAchDebit
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "alipay")
                  then SourceType'EnumStringAlipay
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "bancontact")
                      then SourceType'EnumStringBancontact
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card")
                          then SourceType'EnumStringCard
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "card_present")
                              then SourceType'EnumStringCardPresent
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eps")
                                  then SourceType'EnumStringEps
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "giropay")
                                      then SourceType'EnumStringGiropay
                                      else
                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ideal")
                                          then SourceType'EnumStringIdeal
                                          else
                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "klarna")
                                              then SourceType'EnumStringKlarna
                                              else
                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "multibanco")
                                                  then SourceType'EnumStringMultibanco
                                                  else
                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "p24")
                                                      then SourceType'EnumStringP24
                                                      else
                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sepa_debit")
                                                          then SourceType'EnumStringSepaDebit
                                                          else
                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sofort")
                                                              then SourceType'EnumStringSofort
                                                              else
                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "three_d_secure")
                                                                  then SourceType'EnumStringThreeDSecure
                                                                  else
                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "wechat")
                                                                      then SourceType'EnumStringWechat
                                                                      else SourceType'EnumOther val
      )

-- | Defines the data type for the schema source_mandate_notification
--
-- Source mandate notifications should be created when a notification related to
-- a source mandate must be sent to the payer. They will trigger a webhook or
-- deliver an email to the customer.
data SourceMandateNotification
  = SourceMandateNotification
      { -- | amount: A positive integer in the smallest currency unit (that is, 100 cents for \$1.00, or 1 for ¥1, Japanese Yen being a zero-decimal currency) representing the amount associated with the mandate notification. The amount is expressed in the currency of the underlying source. Required if the notification type is \`debit_initiated\`.
        sourceMandateNotificationAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | bacs_debit:
        sourceMandateNotificationBacsDebit :: (GHC.Maybe.Maybe SourceMandateNotificationBacsDebitData),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        sourceMandateNotificationCreated :: GHC.Integer.Type.Integer,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceMandateNotificationId :: 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.
        sourceMandateNotificationLivemode :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        sourceMandateNotificationObject :: SourceMandateNotificationObject',
        -- | reason: The reason of the mandate notification. Valid reasons are \`mandate_confirmed\` or \`debit_initiated\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceMandateNotificationReason :: Data.Text.Internal.Text,
        -- | sepa_debit:
        sourceMandateNotificationSepaDebit :: (GHC.Maybe.Maybe SourceMandateNotificationSepaDebitData),
        -- | source: \`Source\` objects allow you to accept a variety of payment methods. They
        -- represent a customer\'s payment instrument, and can be used with the Stripe API
        -- just like a \`Card\` object: once chargeable, they can be charged, or can be
        -- attached to customers.
        --
        -- Related guides: [Sources API](https:\/\/stripe.com\/docs\/sources) and [Sources & Customers](https:\/\/stripe.com\/docs\/sources\/customers).
        sourceMandateNotificationSource :: Source,
        -- | status: The status of the mandate notification. Valid statuses are \`pending\` or \`submitted\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceMandateNotificationStatus :: Data.Text.Internal.Text,
        -- | type: The type of source this mandate notification is attached to. Should be the source type identifier code for the payment method, such as \`three_d_secure\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceMandateNotificationType :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SourceMandateNotification where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (sourceMandateNotificationAmount obj) : (Data.Aeson..=) "bacs_debit" (sourceMandateNotificationBacsDebit obj) : (Data.Aeson..=) "created" (sourceMandateNotificationCreated obj) : (Data.Aeson..=) "id" (sourceMandateNotificationId obj) : (Data.Aeson..=) "livemode" (sourceMandateNotificationLivemode obj) : (Data.Aeson..=) "object" (sourceMandateNotificationObject obj) : (Data.Aeson..=) "reason" (sourceMandateNotificationReason obj) : (Data.Aeson..=) "sepa_debit" (sourceMandateNotificationSepaDebit obj) : (Data.Aeson..=) "source" (sourceMandateNotificationSource obj) : (Data.Aeson..=) "status" (sourceMandateNotificationStatus obj) : (Data.Aeson..=) "type" (sourceMandateNotificationType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (sourceMandateNotificationAmount obj) GHC.Base.<> ((Data.Aeson..=) "bacs_debit" (sourceMandateNotificationBacsDebit obj) GHC.Base.<> ((Data.Aeson..=) "created" (sourceMandateNotificationCreated obj) GHC.Base.<> ((Data.Aeson..=) "id" (sourceMandateNotificationId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (sourceMandateNotificationLivemode obj) GHC.Base.<> ((Data.Aeson..=) "object" (sourceMandateNotificationObject obj) GHC.Base.<> ((Data.Aeson..=) "reason" (sourceMandateNotificationReason obj) GHC.Base.<> ((Data.Aeson..=) "sepa_debit" (sourceMandateNotificationSepaDebit obj) GHC.Base.<> ((Data.Aeson..=) "source" (sourceMandateNotificationSource obj) GHC.Base.<> ((Data.Aeson..=) "status" (sourceMandateNotificationStatus obj) GHC.Base.<> (Data.Aeson..=) "type" (sourceMandateNotificationType obj)))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON SourceMandateNotification where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SourceMandateNotification" (\obj -> ((((((((((GHC.Base.pure SourceMandateNotification GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bacs_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "reason")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "sepa_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "source")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type"))

-- | Defines the enum schema source_mandate_notificationObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data SourceMandateNotificationObject'
  = SourceMandateNotificationObject'EnumOther Data.Aeson.Types.Internal.Value
  | SourceMandateNotificationObject'EnumTyped Data.Text.Internal.Text
  | SourceMandateNotificationObject'EnumStringSourceMandateNotification
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SourceMandateNotificationObject' where
  toJSON (SourceMandateNotificationObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SourceMandateNotificationObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SourceMandateNotificationObject'EnumStringSourceMandateNotification) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "source_mandate_notification"

instance Data.Aeson.FromJSON SourceMandateNotificationObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "source_mandate_notification")
          then SourceMandateNotificationObject'EnumStringSourceMandateNotification
          else SourceMandateNotificationObject'EnumOther val
      )

-- | Defines the data type for the schema source_owner
data SourceOwner
  = SourceOwner
      { -- | address: Owner\'s address.
        sourceOwnerAddress :: (GHC.Maybe.Maybe SourceOwnerAddress'),
        -- | email: Owner\'s email address.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | name: Owner\'s full name.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | phone: Owner\'s phone number (including extension).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_address: Verified owner\'s address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        sourceOwnerVerifiedAddress :: (GHC.Maybe.Maybe SourceOwnerVerifiedAddress'),
        -- | verified_email: Verified owner\'s email address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerVerifiedEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_name: Verified owner\'s full name. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerVerifiedName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | verified_phone: Verified owner\'s phone number (including extension). Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerVerifiedPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SourceOwner where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "address" (sourceOwnerAddress obj) : (Data.Aeson..=) "email" (sourceOwnerEmail obj) : (Data.Aeson..=) "name" (sourceOwnerName obj) : (Data.Aeson..=) "phone" (sourceOwnerPhone obj) : (Data.Aeson..=) "verified_address" (sourceOwnerVerifiedAddress obj) : (Data.Aeson..=) "verified_email" (sourceOwnerVerifiedEmail obj) : (Data.Aeson..=) "verified_name" (sourceOwnerVerifiedName obj) : (Data.Aeson..=) "verified_phone" (sourceOwnerVerifiedPhone obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "address" (sourceOwnerAddress obj) GHC.Base.<> ((Data.Aeson..=) "email" (sourceOwnerEmail obj) GHC.Base.<> ((Data.Aeson..=) "name" (sourceOwnerName obj) GHC.Base.<> ((Data.Aeson..=) "phone" (sourceOwnerPhone obj) GHC.Base.<> ((Data.Aeson..=) "verified_address" (sourceOwnerVerifiedAddress obj) GHC.Base.<> ((Data.Aeson..=) "verified_email" (sourceOwnerVerifiedEmail obj) GHC.Base.<> ((Data.Aeson..=) "verified_name" (sourceOwnerVerifiedName obj) GHC.Base.<> (Data.Aeson..=) "verified_phone" (sourceOwnerVerifiedPhone obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON SourceOwner where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SourceOwner" (\obj -> (((((((GHC.Base.pure SourceOwner GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "phone")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_address")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_email")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "verified_phone"))

-- | Defines the data type for the schema source_ownerAddress\'
--
-- Owner\\\'s address.
data SourceOwnerAddress'
  = SourceOwnerAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SourceOwnerAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (sourceOwnerAddress'City obj) : (Data.Aeson..=) "country" (sourceOwnerAddress'Country obj) : (Data.Aeson..=) "line1" (sourceOwnerAddress'Line1 obj) : (Data.Aeson..=) "line2" (sourceOwnerAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (sourceOwnerAddress'PostalCode obj) : (Data.Aeson..=) "state" (sourceOwnerAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (sourceOwnerAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (sourceOwnerAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (sourceOwnerAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (sourceOwnerAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (sourceOwnerAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (sourceOwnerAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON SourceOwnerAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SourceOwnerAddress'" (\obj -> (((((GHC.Base.pure SourceOwnerAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema source_ownerVerified_address\'
--
-- Verified owner\\\'s address. Verified values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement. They cannot be set or mutated.
data SourceOwnerVerifiedAddress'
  = SourceOwnerVerifiedAddress'
      { -- | city: City, district, suburb, town, or village.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerVerifiedAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerVerifiedAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line1: Address line 1 (e.g., street, PO Box, or company name).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerVerifiedAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerVerifiedAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | postal_code: ZIP or postal code.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerVerifiedAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | state: State, county, province, or region.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        sourceOwnerVerifiedAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SourceOwnerVerifiedAddress' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "city" (sourceOwnerVerifiedAddress'City obj) : (Data.Aeson..=) "country" (sourceOwnerVerifiedAddress'Country obj) : (Data.Aeson..=) "line1" (sourceOwnerVerifiedAddress'Line1 obj) : (Data.Aeson..=) "line2" (sourceOwnerVerifiedAddress'Line2 obj) : (Data.Aeson..=) "postal_code" (sourceOwnerVerifiedAddress'PostalCode obj) : (Data.Aeson..=) "state" (sourceOwnerVerifiedAddress'State obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "city" (sourceOwnerVerifiedAddress'City obj) GHC.Base.<> ((Data.Aeson..=) "country" (sourceOwnerVerifiedAddress'Country obj) GHC.Base.<> ((Data.Aeson..=) "line1" (sourceOwnerVerifiedAddress'Line1 obj) GHC.Base.<> ((Data.Aeson..=) "line2" (sourceOwnerVerifiedAddress'Line2 obj) GHC.Base.<> ((Data.Aeson..=) "postal_code" (sourceOwnerVerifiedAddress'PostalCode obj) GHC.Base.<> (Data.Aeson..=) "state" (sourceOwnerVerifiedAddress'State obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON SourceOwnerVerifiedAddress' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SourceOwnerVerifiedAddress'" (\obj -> (((((GHC.Base.pure SourceOwnerVerifiedAddress' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "city")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line1")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "line2")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "postal_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "state"))

-- | Defines the data type for the schema subscription
--
-- Subscriptions allow you to charge a customer on a recurring basis.
--
-- Related guide: [Creating Subscriptions](https:\/\/stripe.com\/docs\/billing\/subscriptions\/creating).
data Subscription
  = Subscription
      { -- | application_fee_percent: A non-negative decimal between 0 and 100, with at most two decimal places. This represents the percentage of the subscription invoice subtotal that will be transferred to the application owner\'s Stripe account.
        subscriptionApplicationFeePercent :: (GHC.Maybe.Maybe GHC.Types.Double),
        -- | billing_cycle_anchor: Determines the date of the first full invoice, and, for plans with \`month\` or \`year\` intervals, the day of the month for subsequent invoices.
        subscriptionBillingCycleAnchor :: GHC.Integer.Type.Integer,
        -- | billing_thresholds: Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period
        subscriptionBillingThresholds :: (GHC.Maybe.Maybe SubscriptionBillingThresholds'),
        -- | cancel_at: A date in the future at which the subscription will automatically get canceled
        subscriptionCancelAt :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | cancel_at_period_end: If the subscription has been canceled with the \`at_period_end\` flag set to \`true\`, \`cancel_at_period_end\` on the subscription will be true. You can use this attribute to determine whether a subscription that has a status of active is scheduled to be canceled at the end of the current period.
        subscriptionCancelAtPeriodEnd :: GHC.Types.Bool,
        -- | canceled_at: If the subscription has been canceled, the date of that cancellation. If the subscription was canceled with \`cancel_at_period_end\`, \`canceled_at\` will still reflect the date of the initial cancellation request, not the end of the subscription period when the subscription is automatically moved to a canceled state.
        subscriptionCanceledAt :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | collection_method: Either \`charge_automatically\`, or \`send_invoice\`. When charging automatically, Stripe will attempt to pay this subscription at the end of the cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions.
        subscriptionCollectionMethod :: (GHC.Maybe.Maybe SubscriptionCollectionMethod'),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        subscriptionCreated :: GHC.Integer.Type.Integer,
        -- | current_period_end: End of the current period that the subscription has been invoiced for. At the end of this period, a new invoice will be created.
        subscriptionCurrentPeriodEnd :: GHC.Integer.Type.Integer,
        -- | current_period_start: Start of the current period that the subscription has been invoiced for.
        subscriptionCurrentPeriodStart :: GHC.Integer.Type.Integer,
        -- | customer: ID of the customer who owns the subscription.
        subscriptionCustomer :: SubscriptionCustomer'Variants,
        -- | days_until_due: Number of days a customer has to pay invoices generated by this subscription. This value will be \`null\` for subscriptions where \`collection_method=charge_automatically\`.
        subscriptionDaysUntilDue :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | default_payment_method: ID of the default payment method for the subscription. It must belong to the customer associated with the subscription. If not set, invoices will use the default payment method in the customer\'s invoice settings.
        subscriptionDefaultPaymentMethod :: (GHC.Maybe.Maybe SubscriptionDefaultPaymentMethod'Variants),
        -- | default_source: ID of the default payment source for the subscription. It must belong to the customer associated with the subscription and be in a chargeable state. If not set, defaults to the customer\'s default source.
        subscriptionDefaultSource :: (GHC.Maybe.Maybe SubscriptionDefaultSource'Variants),
        -- | default_tax_rates: The tax rates that will apply to any subscription item that does not have \`tax_rates\` set. Invoices created will have their \`default_tax_rates\` populated from the subscription.
        subscriptionDefaultTaxRates :: (GHC.Maybe.Maybe ([] TaxRate)),
        -- | discount: Describes the current discount applied to this subscription, if there is one. When billing, a discount applied to a subscription overrides a discount applied on a customer-wide basis.
        subscriptionDiscount :: (GHC.Maybe.Maybe SubscriptionDiscount'),
        -- | ended_at: If the subscription has ended, the date the subscription ended.
        subscriptionEndedAt :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        subscriptionId :: Data.Text.Internal.Text,
        -- | items: List of subscription items, each with an attached plan.
        subscriptionItems :: SubscriptionItems',
        -- | latest_invoice: The most recent invoice this subscription has generated.
        subscriptionLatestInvoice :: (GHC.Maybe.Maybe SubscriptionLatestInvoice'Variants),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        subscriptionLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        subscriptionMetadata :: SubscriptionMetadata',
        -- | next_pending_invoice_item_invoice: Specifies the approximate timestamp on which any pending invoice items will be billed according to the schedule provided at \`pending_invoice_item_interval\`.
        subscriptionNextPendingInvoiceItemInvoice :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        subscriptionObject :: SubscriptionObject',
        -- | pending_invoice_item_interval: Specifies an interval for how often to bill for any pending invoice items. It is analogous to calling [Create an invoice](https:\/\/stripe.com\/docs\/api\#create_invoice) for the given subscription at the specified interval.
        subscriptionPendingInvoiceItemInterval :: (GHC.Maybe.Maybe SubscriptionPendingInvoiceItemInterval'),
        -- | pending_setup_intent: You can use this [SetupIntent](https:\/\/stripe.com\/docs\/api\/setup_intents) to collect user authentication when creating a subscription without immediate payment or updating a subscription\'s payment method, allowing you to optimize for off-session payments. Learn more in the [SCA Migration Guide](https:\/\/stripe.com\/docs\/billing\/migration\/strong-customer-authentication\#scenario-2).
        subscriptionPendingSetupIntent :: (GHC.Maybe.Maybe SubscriptionPendingSetupIntent'Variants),
        -- | pending_update: If specified, [pending updates](https:\/\/stripe.com\/docs\/billing\/subscriptions\/pending-updates) that will be applied to the subscription once the \`latest_invoice\` has been paid.
        subscriptionPendingUpdate :: (GHC.Maybe.Maybe SubscriptionPendingUpdate'),
        -- | plan: Hash describing the plan the customer is subscribed to. Only set if the subscription contains a single plan.
        subscriptionPlan :: (GHC.Maybe.Maybe SubscriptionPlan'),
        -- | quantity: The quantity of the plan to which the customer is subscribed. For example, if your plan is \$10\/user\/month, and your customer has 5 users, you could pass 5 as the quantity to have the customer charged \$50 (5 x \$10) monthly. Only set if the subscription contains a single plan.
        subscriptionQuantity :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | schedule: The schedule attached to the subscription
        subscriptionSchedule :: (GHC.Maybe.Maybe SubscriptionSchedule'Variants),
        -- | start_date: Date when the subscription was first created. The date might differ from the \`created\` date due to backdating.
        subscriptionStartDate :: GHC.Integer.Type.Integer,
        -- | status: Possible values are \`incomplete\`, \`incomplete_expired\`, \`trialing\`, \`active\`, \`past_due\`, \`canceled\`, or \`unpaid\`.
        --
        -- For \`collection_method=charge_automatically\` a subscription moves into \`incomplete\` if the initial payment attempt fails. A subscription in this state can only have metadata and default_source updated. Once the first invoice is paid, the subscription moves into an \`active\` state. If the first invoice is not paid within 23 hours, the subscription transitions to \`incomplete_expired\`. This is a terminal state, the open invoice will be voided and no further invoices will be generated.
        --
        -- A subscription that is currently in a trial period is \`trialing\` and moves to \`active\` when the trial period is over.
        --
        -- If subscription \`collection_method=charge_automatically\` it becomes \`past_due\` when payment to renew it fails and \`canceled\` or \`unpaid\` (depending on your subscriptions settings) when Stripe has exhausted all payment retry attempts.
        --
        -- If subscription \`collection_method=send_invoice\` it becomes \`past_due\` when its invoice is not paid by the due date, and \`canceled\` or \`unpaid\` if it is still not paid by an additional deadline after that. Note that when a subscription has a status of \`unpaid\`, no subsequent invoices will be attempted (invoices will be created, but then immediately automatically closed). After receiving updated payment information from a customer, you may choose to reopen and pay their closed invoices.
        subscriptionStatus :: SubscriptionStatus',
        -- | tax_percent: If provided, each invoice created by this subscription will apply the tax rate, increasing the amount billed to the customer.
        subscriptionTaxPercent :: (GHC.Maybe.Maybe GHC.Types.Double),
        -- | trial_end: If the subscription has a trial, the end of that trial.
        subscriptionTrialEnd :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | trial_start: If the subscription has a trial, the beginning of that trial.
        subscriptionTrialStart :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Subscription where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "application_fee_percent" (subscriptionApplicationFeePercent obj) : (Data.Aeson..=) "billing_cycle_anchor" (subscriptionBillingCycleAnchor obj) : (Data.Aeson..=) "billing_thresholds" (subscriptionBillingThresholds obj) : (Data.Aeson..=) "cancel_at" (subscriptionCancelAt obj) : (Data.Aeson..=) "cancel_at_period_end" (subscriptionCancelAtPeriodEnd obj) : (Data.Aeson..=) "canceled_at" (subscriptionCanceledAt obj) : (Data.Aeson..=) "collection_method" (subscriptionCollectionMethod obj) : (Data.Aeson..=) "created" (subscriptionCreated obj) : (Data.Aeson..=) "current_period_end" (subscriptionCurrentPeriodEnd obj) : (Data.Aeson..=) "current_period_start" (subscriptionCurrentPeriodStart obj) : (Data.Aeson..=) "customer" (subscriptionCustomer obj) : (Data.Aeson..=) "days_until_due" (subscriptionDaysUntilDue obj) : (Data.Aeson..=) "default_payment_method" (subscriptionDefaultPaymentMethod obj) : (Data.Aeson..=) "default_source" (subscriptionDefaultSource obj) : (Data.Aeson..=) "default_tax_rates" (subscriptionDefaultTaxRates obj) : (Data.Aeson..=) "discount" (subscriptionDiscount obj) : (Data.Aeson..=) "ended_at" (subscriptionEndedAt obj) : (Data.Aeson..=) "id" (subscriptionId obj) : (Data.Aeson..=) "items" (subscriptionItems obj) : (Data.Aeson..=) "latest_invoice" (subscriptionLatestInvoice obj) : (Data.Aeson..=) "livemode" (subscriptionLivemode obj) : (Data.Aeson..=) "metadata" (subscriptionMetadata obj) : (Data.Aeson..=) "next_pending_invoice_item_invoice" (subscriptionNextPendingInvoiceItemInvoice obj) : (Data.Aeson..=) "object" (subscriptionObject obj) : (Data.Aeson..=) "pending_invoice_item_interval" (subscriptionPendingInvoiceItemInterval obj) : (Data.Aeson..=) "pending_setup_intent" (subscriptionPendingSetupIntent obj) : (Data.Aeson..=) "pending_update" (subscriptionPendingUpdate obj) : (Data.Aeson..=) "plan" (subscriptionPlan obj) : (Data.Aeson..=) "quantity" (subscriptionQuantity obj) : (Data.Aeson..=) "schedule" (subscriptionSchedule obj) : (Data.Aeson..=) "start_date" (subscriptionStartDate obj) : (Data.Aeson..=) "status" (subscriptionStatus obj) : (Data.Aeson..=) "tax_percent" (subscriptionTaxPercent obj) : (Data.Aeson..=) "trial_end" (subscriptionTrialEnd obj) : (Data.Aeson..=) "trial_start" (subscriptionTrialStart obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "application_fee_percent" (subscriptionApplicationFeePercent obj) GHC.Base.<> ((Data.Aeson..=) "billing_cycle_anchor" (subscriptionBillingCycleAnchor obj) GHC.Base.<> ((Data.Aeson..=) "billing_thresholds" (subscriptionBillingThresholds obj) GHC.Base.<> ((Data.Aeson..=) "cancel_at" (subscriptionCancelAt obj) GHC.Base.<> ((Data.Aeson..=) "cancel_at_period_end" (subscriptionCancelAtPeriodEnd obj) GHC.Base.<> ((Data.Aeson..=) "canceled_at" (subscriptionCanceledAt obj) GHC.Base.<> ((Data.Aeson..=) "collection_method" (subscriptionCollectionMethod obj) GHC.Base.<> ((Data.Aeson..=) "created" (subscriptionCreated obj) GHC.Base.<> ((Data.Aeson..=) "current_period_end" (subscriptionCurrentPeriodEnd obj) GHC.Base.<> ((Data.Aeson..=) "current_period_start" (subscriptionCurrentPeriodStart obj) GHC.Base.<> ((Data.Aeson..=) "customer" (subscriptionCustomer obj) GHC.Base.<> ((Data.Aeson..=) "days_until_due" (subscriptionDaysUntilDue obj) GHC.Base.<> ((Data.Aeson..=) "default_payment_method" (subscriptionDefaultPaymentMethod obj) GHC.Base.<> ((Data.Aeson..=) "default_source" (subscriptionDefaultSource obj) GHC.Base.<> ((Data.Aeson..=) "default_tax_rates" (subscriptionDefaultTaxRates obj) GHC.Base.<> ((Data.Aeson..=) "discount" (subscriptionDiscount obj) GHC.Base.<> ((Data.Aeson..=) "ended_at" (subscriptionEndedAt obj) GHC.Base.<> ((Data.Aeson..=) "id" (subscriptionId obj) GHC.Base.<> ((Data.Aeson..=) "items" (subscriptionItems obj) GHC.Base.<> ((Data.Aeson..=) "latest_invoice" (subscriptionLatestInvoice obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (subscriptionLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (subscriptionMetadata obj) GHC.Base.<> ((Data.Aeson..=) "next_pending_invoice_item_invoice" (subscriptionNextPendingInvoiceItemInvoice obj) GHC.Base.<> ((Data.Aeson..=) "object" (subscriptionObject obj) GHC.Base.<> ((Data.Aeson..=) "pending_invoice_item_interval" (subscriptionPendingInvoiceItemInterval obj) GHC.Base.<> ((Data.Aeson..=) "pending_setup_intent" (subscriptionPendingSetupIntent obj) GHC.Base.<> ((Data.Aeson..=) "pending_update" (subscriptionPendingUpdate obj) GHC.Base.<> ((Data.Aeson..=) "plan" (subscriptionPlan obj) GHC.Base.<> ((Data.Aeson..=) "quantity" (subscriptionQuantity obj) GHC.Base.<> ((Data.Aeson..=) "schedule" (subscriptionSchedule obj) GHC.Base.<> ((Data.Aeson..=) "start_date" (subscriptionStartDate obj) GHC.Base.<> ((Data.Aeson..=) "status" (subscriptionStatus obj) GHC.Base.<> ((Data.Aeson..=) "tax_percent" (subscriptionTaxPercent obj) GHC.Base.<> ((Data.Aeson..=) "trial_end" (subscriptionTrialEnd obj) GHC.Base.<> (Data.Aeson..=) "trial_start" (subscriptionTrialStart obj)))))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Subscription where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Subscription" (\obj -> ((((((((((((((((((((((((((((((((((GHC.Base.pure Subscription GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "application_fee_percent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "billing_cycle_anchor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_thresholds")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cancel_at")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "cancel_at_period_end")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "canceled_at")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "collection_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "current_period_end")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "current_period_start")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "days_until_due")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_payment_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_source")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_tax_rates")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "discount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "ended_at")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "items")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "latest_invoice")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "next_pending_invoice_item_invoice")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "pending_invoice_item_interval")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "pending_setup_intent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "pending_update")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "plan")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "quantity")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "schedule")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "start_date")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_percent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "trial_end")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "trial_start"))

-- | Defines the data type for the schema subscriptionBilling_thresholds\'
--
-- Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period
data SubscriptionBillingThresholds'
  = SubscriptionBillingThresholds'
      { -- | amount_gte: Monetary threshold that triggers the subscription to create an invoice
        subscriptionBillingThresholds'AmountGte :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | reset_billing_cycle_anchor: Indicates if the \`billing_cycle_anchor\` should be reset when a threshold is reached. If true, \`billing_cycle_anchor\` will be updated to the date\/time the threshold was last reached; otherwise, the value will remain unchanged. This value may not be \`true\` if the subscription contains items with plans that have \`aggregate_usage=last_ever\`.
        subscriptionBillingThresholds'ResetBillingCycleAnchor :: (GHC.Maybe.Maybe GHC.Types.Bool)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionBillingThresholds' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount_gte" (subscriptionBillingThresholds'AmountGte obj) : (Data.Aeson..=) "reset_billing_cycle_anchor" (subscriptionBillingThresholds'ResetBillingCycleAnchor obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount_gte" (subscriptionBillingThresholds'AmountGte obj) GHC.Base.<> (Data.Aeson..=) "reset_billing_cycle_anchor" (subscriptionBillingThresholds'ResetBillingCycleAnchor obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionBillingThresholds' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionBillingThresholds'" (\obj -> (GHC.Base.pure SubscriptionBillingThresholds' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount_gte")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "reset_billing_cycle_anchor"))

-- | Defines the enum schema subscriptionCollection_method\'
--
-- Either \`charge_automatically\`, or \`send_invoice\`. When charging automatically, Stripe will attempt to pay this subscription at the end of the cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions.
data SubscriptionCollectionMethod'
  = SubscriptionCollectionMethod'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionCollectionMethod'EnumTyped Data.Text.Internal.Text
  | SubscriptionCollectionMethod'EnumStringChargeAutomatically
  | SubscriptionCollectionMethod'EnumStringSendInvoice
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionCollectionMethod' where
  toJSON (SubscriptionCollectionMethod'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionCollectionMethod'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionCollectionMethod'EnumStringChargeAutomatically) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charge_automatically"
  toJSON (SubscriptionCollectionMethod'EnumStringSendInvoice) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "send_invoice"

instance Data.Aeson.FromJSON SubscriptionCollectionMethod' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charge_automatically")
          then SubscriptionCollectionMethod'EnumStringChargeAutomatically
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "send_invoice")
              then SubscriptionCollectionMethod'EnumStringSendInvoice
              else SubscriptionCollectionMethod'EnumOther val
      )

-- | Define the one-of schema subscriptionCustomer\'
--
-- ID of the customer who owns the subscription.
data SubscriptionCustomer'Variants
  = SubscriptionCustomer'Customer Customer
  | SubscriptionCustomer'DeletedCustomer DeletedCustomer
  | SubscriptionCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SubscriptionCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SubscriptionCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema subscriptionDefault_payment_method\'
--
-- ID of the default payment method for the subscription. It must belong to the customer associated with the subscription. If not set, invoices will use the default payment method in the customer\'s invoice settings.
data SubscriptionDefaultPaymentMethod'Variants
  = SubscriptionDefaultPaymentMethod'PaymentMethod PaymentMethod
  | SubscriptionDefaultPaymentMethod'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SubscriptionDefaultPaymentMethod'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SubscriptionDefaultPaymentMethod'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema subscriptionDefault_source\'
--
-- ID of the default payment source for the subscription. It must belong to the customer associated with the subscription and be in a chargeable state. If not set, defaults to the customer\'s default source.
data SubscriptionDefaultSource'Variants
  = SubscriptionDefaultSource'AlipayAccount AlipayAccount
  | SubscriptionDefaultSource'BankAccount BankAccount
  | SubscriptionDefaultSource'BitcoinReceiver BitcoinReceiver
  | SubscriptionDefaultSource'Card Card
  | SubscriptionDefaultSource'Source Source
  | SubscriptionDefaultSource'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SubscriptionDefaultSource'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SubscriptionDefaultSource'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema subscriptionDiscount\'
--
-- Describes the current discount applied to this subscription, if there is one. When billing, a discount applied to a subscription overrides a discount applied on a customer-wide basis.
data SubscriptionDiscount'
  = SubscriptionDiscount'
      { -- | coupon: A coupon contains information about a percent-off or amount-off discount you
        -- might want to apply to a customer. Coupons may be applied to [invoices](https:\/\/stripe.com\/docs\/api\#invoices) or
        -- [orders](https:\/\/stripe.com\/docs\/api\#create_order-coupon). Coupons do not work with conventional one-off [charges](https:\/\/stripe.com\/docs\/api\#create_charge).
        subscriptionDiscount'Coupon :: (GHC.Maybe.Maybe Coupon),
        -- | customer: The ID of the customer associated with this discount.
        subscriptionDiscount'Customer :: (GHC.Maybe.Maybe SubscriptionDiscount'Customer'Variants),
        -- | end: If the coupon has a duration of \`repeating\`, the date that this discount will end. If the coupon has a duration of \`once\` or \`forever\`, this attribute will be null.
        subscriptionDiscount'End :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        subscriptionDiscount'Object :: (GHC.Maybe.Maybe SubscriptionDiscount'Object'),
        -- | start: Date that the coupon was applied.
        subscriptionDiscount'Start :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | subscription: The subscription that this coupon is applied to, if it is applied to a particular subscription.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        subscriptionDiscount'Subscription :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionDiscount' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "coupon" (subscriptionDiscount'Coupon obj) : (Data.Aeson..=) "customer" (subscriptionDiscount'Customer obj) : (Data.Aeson..=) "end" (subscriptionDiscount'End obj) : (Data.Aeson..=) "object" (subscriptionDiscount'Object obj) : (Data.Aeson..=) "start" (subscriptionDiscount'Start obj) : (Data.Aeson..=) "subscription" (subscriptionDiscount'Subscription obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "coupon" (subscriptionDiscount'Coupon obj) GHC.Base.<> ((Data.Aeson..=) "customer" (subscriptionDiscount'Customer obj) GHC.Base.<> ((Data.Aeson..=) "end" (subscriptionDiscount'End obj) GHC.Base.<> ((Data.Aeson..=) "object" (subscriptionDiscount'Object obj) GHC.Base.<> ((Data.Aeson..=) "start" (subscriptionDiscount'Start obj) GHC.Base.<> (Data.Aeson..=) "subscription" (subscriptionDiscount'Subscription obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionDiscount' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionDiscount'" (\obj -> (((((GHC.Base.pure SubscriptionDiscount' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "coupon")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "end")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "start")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscription"))

-- | Define the one-of schema subscriptionDiscount\'Customer\'
--
-- The ID of the customer associated with this discount.
data SubscriptionDiscount'Customer'Variants
  = SubscriptionDiscount'Customer'Customer Customer
  | SubscriptionDiscount'Customer'DeletedCustomer DeletedCustomer
  | SubscriptionDiscount'Customer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SubscriptionDiscount'Customer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SubscriptionDiscount'Customer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema subscriptionDiscount\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data SubscriptionDiscount'Object'
  = SubscriptionDiscount'Object'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionDiscount'Object'EnumTyped Data.Text.Internal.Text
  | SubscriptionDiscount'Object'EnumStringDiscount
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionDiscount'Object' where
  toJSON (SubscriptionDiscount'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionDiscount'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionDiscount'Object'EnumStringDiscount) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount"

instance Data.Aeson.FromJSON SubscriptionDiscount'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "discount")
          then SubscriptionDiscount'Object'EnumStringDiscount
          else SubscriptionDiscount'Object'EnumOther val
      )

-- | Defines the data type for the schema subscriptionItems\'
--
-- List of subscription items, each with an attached plan.
data SubscriptionItems'
  = SubscriptionItems'
      { -- | data: Details about each object.
        subscriptionItems'Data :: ([] SubscriptionItem),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        subscriptionItems'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        subscriptionItems'Object :: SubscriptionItems'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        subscriptionItems'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionItems' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (subscriptionItems'Data obj) : (Data.Aeson..=) "has_more" (subscriptionItems'HasMore obj) : (Data.Aeson..=) "object" (subscriptionItems'Object obj) : (Data.Aeson..=) "url" (subscriptionItems'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (subscriptionItems'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (subscriptionItems'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (subscriptionItems'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (subscriptionItems'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionItems' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionItems'" (\obj -> (((GHC.Base.pure SubscriptionItems' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema subscriptionItems\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data SubscriptionItems'Object'
  = SubscriptionItems'Object'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionItems'Object'EnumTyped Data.Text.Internal.Text
  | SubscriptionItems'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionItems'Object' where
  toJSON (SubscriptionItems'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionItems'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionItems'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON SubscriptionItems'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then SubscriptionItems'Object'EnumStringList
          else SubscriptionItems'Object'EnumOther val
      )

-- | Define the one-of schema subscriptionLatest_invoice\'
--
-- The most recent invoice this subscription has generated.
data SubscriptionLatestInvoice'Variants
  = SubscriptionLatestInvoice'Invoice Invoice
  | SubscriptionLatestInvoice'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SubscriptionLatestInvoice'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SubscriptionLatestInvoice'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema subscriptionMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data SubscriptionMetadata'
  = SubscriptionMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionMetadata'" (\obj -> GHC.Base.pure SubscriptionMetadata')

-- | Defines the enum schema subscriptionObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data SubscriptionObject'
  = SubscriptionObject'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionObject'EnumTyped Data.Text.Internal.Text
  | SubscriptionObject'EnumStringSubscription
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionObject' where
  toJSON (SubscriptionObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionObject'EnumStringSubscription) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription"

instance Data.Aeson.FromJSON SubscriptionObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription")
          then SubscriptionObject'EnumStringSubscription
          else SubscriptionObject'EnumOther val
      )

-- | Defines the data type for the schema subscriptionPending_invoice_item_interval\'
--
-- Specifies an interval for how often to bill for any pending invoice items. It is analogous to calling [Create an invoice](https:\\\/\\\/stripe.com\\\/docs\\\/api\\\#create_invoice) for the given subscription at the specified interval.
data SubscriptionPendingInvoiceItemInterval'
  = SubscriptionPendingInvoiceItemInterval'
      { -- | interval: Specifies invoicing frequency. Either \`day\`, \`week\`, \`month\` or \`year\`.
        subscriptionPendingInvoiceItemInterval'Interval :: (GHC.Maybe.Maybe SubscriptionPendingInvoiceItemInterval'Interval'),
        -- | interval_count: The number of intervals between invoices. For example, \`interval=month\` and \`interval_count=3\` bills every 3 months. Maximum of one year interval allowed (1 year, 12 months, or 52 weeks).
        subscriptionPendingInvoiceItemInterval'IntervalCount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionPendingInvoiceItemInterval' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "interval" (subscriptionPendingInvoiceItemInterval'Interval obj) : (Data.Aeson..=) "interval_count" (subscriptionPendingInvoiceItemInterval'IntervalCount obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "interval" (subscriptionPendingInvoiceItemInterval'Interval obj) GHC.Base.<> (Data.Aeson..=) "interval_count" (subscriptionPendingInvoiceItemInterval'IntervalCount obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionPendingInvoiceItemInterval' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionPendingInvoiceItemInterval'" (\obj -> (GHC.Base.pure SubscriptionPendingInvoiceItemInterval' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "interval")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "interval_count"))

-- | Defines the enum schema subscriptionPending_invoice_item_interval\'Interval\'
--
-- Specifies invoicing frequency. Either \`day\`, \`week\`, \`month\` or \`year\`.
data SubscriptionPendingInvoiceItemInterval'Interval'
  = SubscriptionPendingInvoiceItemInterval'Interval'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionPendingInvoiceItemInterval'Interval'EnumTyped Data.Text.Internal.Text
  | SubscriptionPendingInvoiceItemInterval'Interval'EnumStringDay
  | SubscriptionPendingInvoiceItemInterval'Interval'EnumStringMonth
  | SubscriptionPendingInvoiceItemInterval'Interval'EnumStringWeek
  | SubscriptionPendingInvoiceItemInterval'Interval'EnumStringYear
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionPendingInvoiceItemInterval'Interval' where
  toJSON (SubscriptionPendingInvoiceItemInterval'Interval'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPendingInvoiceItemInterval'Interval'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPendingInvoiceItemInterval'Interval'EnumStringDay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "day"
  toJSON (SubscriptionPendingInvoiceItemInterval'Interval'EnumStringMonth) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month"
  toJSON (SubscriptionPendingInvoiceItemInterval'Interval'EnumStringWeek) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "week"
  toJSON (SubscriptionPendingInvoiceItemInterval'Interval'EnumStringYear) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "year"

instance Data.Aeson.FromJSON SubscriptionPendingInvoiceItemInterval'Interval' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "day")
          then SubscriptionPendingInvoiceItemInterval'Interval'EnumStringDay
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month")
              then SubscriptionPendingInvoiceItemInterval'Interval'EnumStringMonth
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "week")
                  then SubscriptionPendingInvoiceItemInterval'Interval'EnumStringWeek
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "year")
                      then SubscriptionPendingInvoiceItemInterval'Interval'EnumStringYear
                      else SubscriptionPendingInvoiceItemInterval'Interval'EnumOther val
      )

-- | Define the one-of schema subscriptionPending_setup_intent\'
--
-- You can use this [SetupIntent](https:\/\/stripe.com\/docs\/api\/setup_intents) to collect user authentication when creating a subscription without immediate payment or updating a subscription\'s payment method, allowing you to optimize for off-session payments. Learn more in the [SCA Migration Guide](https:\/\/stripe.com\/docs\/billing\/migration\/strong-customer-authentication\#scenario-2).
data SubscriptionPendingSetupIntent'Variants
  = SubscriptionPendingSetupIntent'SetupIntent SetupIntent
  | SubscriptionPendingSetupIntent'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SubscriptionPendingSetupIntent'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SubscriptionPendingSetupIntent'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema subscriptionPending_update\'
--
-- If specified, [pending updates](https:\\\/\\\/stripe.com\\\/docs\\\/billing\\\/subscriptions\\\/pending-updates) that will be applied to the subscription once the \\\`latest_invoice\\\` has been paid.
data SubscriptionPendingUpdate'
  = SubscriptionPendingUpdate'
      { -- | billing_cycle_anchor: If the update is applied, determines the date of the first full invoice, and, for plans with \`month\` or \`year\` intervals, the day of the month for subsequent invoices.
        subscriptionPendingUpdate'BillingCycleAnchor :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | expires_at: The point after which the changes reflected by this update will be discarded and no longer applied.
        subscriptionPendingUpdate'ExpiresAt :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | subscription_items: List of subscription items, each with an attached plan, that will be set if the update is applied.
        subscriptionPendingUpdate'SubscriptionItems :: (GHC.Maybe.Maybe ([] SubscriptionItem)),
        -- | trial_end: Unix timestamp representing the end of the trial period the customer will get before being charged for the first time, if the update is applied.
        subscriptionPendingUpdate'TrialEnd :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | trial_from_plan: Indicates if a plan\'s \`trial_period_days\` should be applied to the subscription. Setting \`trial_end\` per subscription is preferred, and this defaults to \`false\`. Setting this flag to \`true\` together with \`trial_end\` is not allowed.
        subscriptionPendingUpdate'TrialFromPlan :: (GHC.Maybe.Maybe GHC.Types.Bool)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionPendingUpdate' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "billing_cycle_anchor" (subscriptionPendingUpdate'BillingCycleAnchor obj) : (Data.Aeson..=) "expires_at" (subscriptionPendingUpdate'ExpiresAt obj) : (Data.Aeson..=) "subscription_items" (subscriptionPendingUpdate'SubscriptionItems obj) : (Data.Aeson..=) "trial_end" (subscriptionPendingUpdate'TrialEnd obj) : (Data.Aeson..=) "trial_from_plan" (subscriptionPendingUpdate'TrialFromPlan obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "billing_cycle_anchor" (subscriptionPendingUpdate'BillingCycleAnchor obj) GHC.Base.<> ((Data.Aeson..=) "expires_at" (subscriptionPendingUpdate'ExpiresAt obj) GHC.Base.<> ((Data.Aeson..=) "subscription_items" (subscriptionPendingUpdate'SubscriptionItems obj) GHC.Base.<> ((Data.Aeson..=) "trial_end" (subscriptionPendingUpdate'TrialEnd obj) GHC.Base.<> (Data.Aeson..=) "trial_from_plan" (subscriptionPendingUpdate'TrialFromPlan obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionPendingUpdate' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionPendingUpdate'" (\obj -> ((((GHC.Base.pure SubscriptionPendingUpdate' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_cycle_anchor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "expires_at")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscription_items")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "trial_end")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "trial_from_plan"))

-- | Defines the data type for the schema subscriptionPlan\'
--
-- Hash describing the plan the customer is subscribed to. Only set if the subscription contains a single plan.
data SubscriptionPlan'
  = SubscriptionPlan'
      { -- | active: Whether the plan is currently available for new subscriptions.
        subscriptionPlan'Active :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | aggregate_usage: Specifies a usage aggregation strategy for plans of \`usage_type=metered\`. Allowed values are \`sum\` for summing up all usage during a period, \`last_during_period\` for using the last usage record reported within a period, \`last_ever\` for using the last usage record ever (across period bounds) or \`max\` which uses the usage record with the maximum reported usage during a period. Defaults to \`sum\`.
        subscriptionPlan'AggregateUsage :: (GHC.Maybe.Maybe SubscriptionPlan'AggregateUsage'),
        -- | amount: The amount in %s to be charged on the interval specified.
        subscriptionPlan'Amount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | amount_decimal: Same as \`amount\`, but contains a decimal value with at most 12 decimal places.
        subscriptionPlan'AmountDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | billing_scheme: Describes how to compute the price per period. Either \`per_unit\` or \`tiered\`. \`per_unit\` indicates that the fixed amount (specified in \`amount\`) will be charged per unit in \`quantity\` (for plans with \`usage_type=licensed\`), or per unit of total usage (for plans with \`usage_type=metered\`). \`tiered\` indicates that the unit pricing will be computed using a tiering strategy as defined using the \`tiers\` and \`tiers_mode\` attributes.
        subscriptionPlan'BillingScheme :: (GHC.Maybe.Maybe SubscriptionPlan'BillingScheme'),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        subscriptionPlan'Created :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        subscriptionPlan'Currency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        subscriptionPlan'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | interval: The frequency at which a subscription is billed. One of \`day\`, \`week\`, \`month\` or \`year\`.
        subscriptionPlan'Interval :: (GHC.Maybe.Maybe SubscriptionPlan'Interval'),
        -- | interval_count: The number of intervals (specified in the \`interval\` attribute) between subscription billings. For example, \`interval=month\` and \`interval_count=3\` bills every 3 months.
        subscriptionPlan'IntervalCount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
        subscriptionPlan'Livemode :: (GHC.Maybe.Maybe GHC.Types.Bool),
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        subscriptionPlan'Metadata :: (GHC.Maybe.Maybe SubscriptionPlan'Metadata'),
        -- | nickname: A brief description of the plan, hidden from customers.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        subscriptionPlan'Nickname :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        subscriptionPlan'Object :: (GHC.Maybe.Maybe SubscriptionPlan'Object'),
        -- | product: The product whose pricing this plan determines.
        subscriptionPlan'Product :: (GHC.Maybe.Maybe SubscriptionPlan'Product'Variants),
        -- | tiers: Each element represents a pricing tier. This parameter requires \`billing_scheme\` to be set to \`tiered\`. See also the documentation for \`billing_scheme\`.
        subscriptionPlan'Tiers :: (GHC.Maybe.Maybe ([] PlanTier)),
        -- | tiers_mode: Defines if the tiering price should be \`graduated\` or \`volume\` based. In \`volume\`-based tiering, the maximum quantity within a period determines the per unit price. In \`graduated\` tiering, pricing can change as the quantity grows.
        subscriptionPlan'TiersMode :: (GHC.Maybe.Maybe SubscriptionPlan'TiersMode'),
        -- | transform_usage: Apply a transformation to the reported usage or set quantity before computing the amount billed. Cannot be combined with \`tiers\`.
        subscriptionPlan'TransformUsage :: (GHC.Maybe.Maybe SubscriptionPlan'TransformUsage'),
        -- | trial_period_days: Default number of trial days when subscribing a customer to this plan using [\`trial_from_plan=true\`](https:\/\/stripe.com\/docs\/api\#create_subscription-trial_from_plan).
        subscriptionPlan'TrialPeriodDays :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | usage_type: Configures how the quantity per period should be determined. Can be either \`metered\` or \`licensed\`. \`licensed\` automatically bills the \`quantity\` set when adding it to a subscription. \`metered\` aggregates the total usage based on usage records. Defaults to \`licensed\`.
        subscriptionPlan'UsageType :: (GHC.Maybe.Maybe SubscriptionPlan'UsageType')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionPlan' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "active" (subscriptionPlan'Active obj) : (Data.Aeson..=) "aggregate_usage" (subscriptionPlan'AggregateUsage obj) : (Data.Aeson..=) "amount" (subscriptionPlan'Amount obj) : (Data.Aeson..=) "amount_decimal" (subscriptionPlan'AmountDecimal obj) : (Data.Aeson..=) "billing_scheme" (subscriptionPlan'BillingScheme obj) : (Data.Aeson..=) "created" (subscriptionPlan'Created obj) : (Data.Aeson..=) "currency" (subscriptionPlan'Currency obj) : (Data.Aeson..=) "id" (subscriptionPlan'Id obj) : (Data.Aeson..=) "interval" (subscriptionPlan'Interval obj) : (Data.Aeson..=) "interval_count" (subscriptionPlan'IntervalCount obj) : (Data.Aeson..=) "livemode" (subscriptionPlan'Livemode obj) : (Data.Aeson..=) "metadata" (subscriptionPlan'Metadata obj) : (Data.Aeson..=) "nickname" (subscriptionPlan'Nickname obj) : (Data.Aeson..=) "object" (subscriptionPlan'Object obj) : (Data.Aeson..=) "product" (subscriptionPlan'Product obj) : (Data.Aeson..=) "tiers" (subscriptionPlan'Tiers obj) : (Data.Aeson..=) "tiers_mode" (subscriptionPlan'TiersMode obj) : (Data.Aeson..=) "transform_usage" (subscriptionPlan'TransformUsage obj) : (Data.Aeson..=) "trial_period_days" (subscriptionPlan'TrialPeriodDays obj) : (Data.Aeson..=) "usage_type" (subscriptionPlan'UsageType obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "active" (subscriptionPlan'Active obj) GHC.Base.<> ((Data.Aeson..=) "aggregate_usage" (subscriptionPlan'AggregateUsage obj) GHC.Base.<> ((Data.Aeson..=) "amount" (subscriptionPlan'Amount obj) GHC.Base.<> ((Data.Aeson..=) "amount_decimal" (subscriptionPlan'AmountDecimal obj) GHC.Base.<> ((Data.Aeson..=) "billing_scheme" (subscriptionPlan'BillingScheme obj) GHC.Base.<> ((Data.Aeson..=) "created" (subscriptionPlan'Created obj) GHC.Base.<> ((Data.Aeson..=) "currency" (subscriptionPlan'Currency obj) GHC.Base.<> ((Data.Aeson..=) "id" (subscriptionPlan'Id obj) GHC.Base.<> ((Data.Aeson..=) "interval" (subscriptionPlan'Interval obj) GHC.Base.<> ((Data.Aeson..=) "interval_count" (subscriptionPlan'IntervalCount obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (subscriptionPlan'Livemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (subscriptionPlan'Metadata obj) GHC.Base.<> ((Data.Aeson..=) "nickname" (subscriptionPlan'Nickname obj) GHC.Base.<> ((Data.Aeson..=) "object" (subscriptionPlan'Object obj) GHC.Base.<> ((Data.Aeson..=) "product" (subscriptionPlan'Product obj) GHC.Base.<> ((Data.Aeson..=) "tiers" (subscriptionPlan'Tiers obj) GHC.Base.<> ((Data.Aeson..=) "tiers_mode" (subscriptionPlan'TiersMode obj) GHC.Base.<> ((Data.Aeson..=) "transform_usage" (subscriptionPlan'TransformUsage obj) GHC.Base.<> ((Data.Aeson..=) "trial_period_days" (subscriptionPlan'TrialPeriodDays obj) GHC.Base.<> (Data.Aeson..=) "usage_type" (subscriptionPlan'UsageType obj))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionPlan' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionPlan'" (\obj -> (((((((((((((((((((GHC.Base.pure SubscriptionPlan' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "active")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "aggregate_usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount_decimal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_scheme")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "interval")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "interval_count")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "nickname")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "product")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tiers")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tiers_mode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transform_usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "trial_period_days")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "usage_type"))

-- | Defines the enum schema subscriptionPlan\'Aggregate_usage\'
--
-- Specifies a usage aggregation strategy for plans of \`usage_type=metered\`. Allowed values are \`sum\` for summing up all usage during a period, \`last_during_period\` for using the last usage record reported within a period, \`last_ever\` for using the last usage record ever (across period bounds) or \`max\` which uses the usage record with the maximum reported usage during a period. Defaults to \`sum\`.
data SubscriptionPlan'AggregateUsage'
  = SubscriptionPlan'AggregateUsage'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionPlan'AggregateUsage'EnumTyped Data.Text.Internal.Text
  | SubscriptionPlan'AggregateUsage'EnumStringLastDuringPeriod
  | SubscriptionPlan'AggregateUsage'EnumStringLastEver
  | SubscriptionPlan'AggregateUsage'EnumStringMax
  | SubscriptionPlan'AggregateUsage'EnumStringSum
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionPlan'AggregateUsage' where
  toJSON (SubscriptionPlan'AggregateUsage'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPlan'AggregateUsage'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPlan'AggregateUsage'EnumStringLastDuringPeriod) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_during_period"
  toJSON (SubscriptionPlan'AggregateUsage'EnumStringLastEver) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_ever"
  toJSON (SubscriptionPlan'AggregateUsage'EnumStringMax) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "max"
  toJSON (SubscriptionPlan'AggregateUsage'EnumStringSum) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sum"

instance Data.Aeson.FromJSON SubscriptionPlan'AggregateUsage' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_during_period")
          then SubscriptionPlan'AggregateUsage'EnumStringLastDuringPeriod
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "last_ever")
              then SubscriptionPlan'AggregateUsage'EnumStringLastEver
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "max")
                  then SubscriptionPlan'AggregateUsage'EnumStringMax
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sum")
                      then SubscriptionPlan'AggregateUsage'EnumStringSum
                      else SubscriptionPlan'AggregateUsage'EnumOther val
      )

-- | Defines the enum schema subscriptionPlan\'Billing_scheme\'
--
-- Describes how to compute the price per period. Either \`per_unit\` or \`tiered\`. \`per_unit\` indicates that the fixed amount (specified in \`amount\`) will be charged per unit in \`quantity\` (for plans with \`usage_type=licensed\`), or per unit of total usage (for plans with \`usage_type=metered\`). \`tiered\` indicates that the unit pricing will be computed using a tiering strategy as defined using the \`tiers\` and \`tiers_mode\` attributes.
data SubscriptionPlan'BillingScheme'
  = SubscriptionPlan'BillingScheme'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionPlan'BillingScheme'EnumTyped Data.Text.Internal.Text
  | SubscriptionPlan'BillingScheme'EnumStringPerUnit
  | SubscriptionPlan'BillingScheme'EnumStringTiered
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionPlan'BillingScheme' where
  toJSON (SubscriptionPlan'BillingScheme'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPlan'BillingScheme'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPlan'BillingScheme'EnumStringPerUnit) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "per_unit"
  toJSON (SubscriptionPlan'BillingScheme'EnumStringTiered) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tiered"

instance Data.Aeson.FromJSON SubscriptionPlan'BillingScheme' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "per_unit")
          then SubscriptionPlan'BillingScheme'EnumStringPerUnit
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tiered")
              then SubscriptionPlan'BillingScheme'EnumStringTiered
              else SubscriptionPlan'BillingScheme'EnumOther val
      )

-- | Defines the enum schema subscriptionPlan\'Interval\'
--
-- The frequency at which a subscription is billed. One of \`day\`, \`week\`, \`month\` or \`year\`.
data SubscriptionPlan'Interval'
  = SubscriptionPlan'Interval'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionPlan'Interval'EnumTyped Data.Text.Internal.Text
  | SubscriptionPlan'Interval'EnumStringDay
  | SubscriptionPlan'Interval'EnumStringMonth
  | SubscriptionPlan'Interval'EnumStringWeek
  | SubscriptionPlan'Interval'EnumStringYear
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionPlan'Interval' where
  toJSON (SubscriptionPlan'Interval'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPlan'Interval'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPlan'Interval'EnumStringDay) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "day"
  toJSON (SubscriptionPlan'Interval'EnumStringMonth) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month"
  toJSON (SubscriptionPlan'Interval'EnumStringWeek) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "week"
  toJSON (SubscriptionPlan'Interval'EnumStringYear) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "year"

instance Data.Aeson.FromJSON SubscriptionPlan'Interval' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "day")
          then SubscriptionPlan'Interval'EnumStringDay
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "month")
              then SubscriptionPlan'Interval'EnumStringMonth
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "week")
                  then SubscriptionPlan'Interval'EnumStringWeek
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "year")
                      then SubscriptionPlan'Interval'EnumStringYear
                      else SubscriptionPlan'Interval'EnumOther val
      )

-- | Defines the data type for the schema subscriptionPlan\'Metadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data SubscriptionPlan'Metadata'
  = SubscriptionPlan'Metadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionPlan'Metadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionPlan'Metadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionPlan'Metadata'" (\obj -> GHC.Base.pure SubscriptionPlan'Metadata')

-- | Defines the enum schema subscriptionPlan\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data SubscriptionPlan'Object'
  = SubscriptionPlan'Object'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionPlan'Object'EnumTyped Data.Text.Internal.Text
  | SubscriptionPlan'Object'EnumStringPlan
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionPlan'Object' where
  toJSON (SubscriptionPlan'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPlan'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPlan'Object'EnumStringPlan) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plan"

instance Data.Aeson.FromJSON SubscriptionPlan'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "plan")
          then SubscriptionPlan'Object'EnumStringPlan
          else SubscriptionPlan'Object'EnumOther val
      )

-- | Define the one-of schema subscriptionPlan\'Product\'
--
-- The product whose pricing this plan determines.
data SubscriptionPlan'Product'Variants
  = SubscriptionPlan'Product'DeletedProduct DeletedProduct
  | SubscriptionPlan'Product'Product Product
  | SubscriptionPlan'Product'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SubscriptionPlan'Product'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SubscriptionPlan'Product'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema subscriptionPlan\'Tiers_mode\'
--
-- Defines if the tiering price should be \`graduated\` or \`volume\` based. In \`volume\`-based tiering, the maximum quantity within a period determines the per unit price. In \`graduated\` tiering, pricing can change as the quantity grows.
data SubscriptionPlan'TiersMode'
  = SubscriptionPlan'TiersMode'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionPlan'TiersMode'EnumTyped Data.Text.Internal.Text
  | SubscriptionPlan'TiersMode'EnumStringGraduated
  | SubscriptionPlan'TiersMode'EnumStringVolume
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionPlan'TiersMode' where
  toJSON (SubscriptionPlan'TiersMode'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPlan'TiersMode'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPlan'TiersMode'EnumStringGraduated) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "graduated"
  toJSON (SubscriptionPlan'TiersMode'EnumStringVolume) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "volume"

instance Data.Aeson.FromJSON SubscriptionPlan'TiersMode' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "graduated")
          then SubscriptionPlan'TiersMode'EnumStringGraduated
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "volume")
              then SubscriptionPlan'TiersMode'EnumStringVolume
              else SubscriptionPlan'TiersMode'EnumOther val
      )

-- | Defines the data type for the schema subscriptionPlan\'Transform_usage\'
--
-- Apply a transformation to the reported usage or set quantity before computing the amount billed. Cannot be combined with \\\`tiers\\\`.
data SubscriptionPlan'TransformUsage'
  = SubscriptionPlan'TransformUsage'
      { -- | divide_by: Divide usage by this number.
        subscriptionPlan'TransformUsage'DivideBy :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | round: After division, either round the result \`up\` or \`down\`.
        subscriptionPlan'TransformUsage'Round :: (GHC.Maybe.Maybe SubscriptionPlan'TransformUsage'Round')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionPlan'TransformUsage' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "divide_by" (subscriptionPlan'TransformUsage'DivideBy obj) : (Data.Aeson..=) "round" (subscriptionPlan'TransformUsage'Round obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "divide_by" (subscriptionPlan'TransformUsage'DivideBy obj) GHC.Base.<> (Data.Aeson..=) "round" (subscriptionPlan'TransformUsage'Round obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionPlan'TransformUsage' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionPlan'TransformUsage'" (\obj -> (GHC.Base.pure SubscriptionPlan'TransformUsage' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "divide_by")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "round"))

-- | Defines the enum schema subscriptionPlan\'Transform_usage\'Round\'
--
-- After division, either round the result \`up\` or \`down\`.
data SubscriptionPlan'TransformUsage'Round'
  = SubscriptionPlan'TransformUsage'Round'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionPlan'TransformUsage'Round'EnumTyped Data.Text.Internal.Text
  | SubscriptionPlan'TransformUsage'Round'EnumStringDown
  | SubscriptionPlan'TransformUsage'Round'EnumStringUp
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionPlan'TransformUsage'Round' where
  toJSON (SubscriptionPlan'TransformUsage'Round'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPlan'TransformUsage'Round'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPlan'TransformUsage'Round'EnumStringDown) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "down"
  toJSON (SubscriptionPlan'TransformUsage'Round'EnumStringUp) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "up"

instance Data.Aeson.FromJSON SubscriptionPlan'TransformUsage'Round' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "down")
          then SubscriptionPlan'TransformUsage'Round'EnumStringDown
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "up")
              then SubscriptionPlan'TransformUsage'Round'EnumStringUp
              else SubscriptionPlan'TransformUsage'Round'EnumOther val
      )

-- | Defines the enum schema subscriptionPlan\'Usage_type\'
--
-- Configures how the quantity per period should be determined. Can be either \`metered\` or \`licensed\`. \`licensed\` automatically bills the \`quantity\` set when adding it to a subscription. \`metered\` aggregates the total usage based on usage records. Defaults to \`licensed\`.
data SubscriptionPlan'UsageType'
  = SubscriptionPlan'UsageType'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionPlan'UsageType'EnumTyped Data.Text.Internal.Text
  | SubscriptionPlan'UsageType'EnumStringLicensed
  | SubscriptionPlan'UsageType'EnumStringMetered
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionPlan'UsageType' where
  toJSON (SubscriptionPlan'UsageType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPlan'UsageType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionPlan'UsageType'EnumStringLicensed) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "licensed"
  toJSON (SubscriptionPlan'UsageType'EnumStringMetered) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metered"

instance Data.Aeson.FromJSON SubscriptionPlan'UsageType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "licensed")
          then SubscriptionPlan'UsageType'EnumStringLicensed
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "metered")
              then SubscriptionPlan'UsageType'EnumStringMetered
              else SubscriptionPlan'UsageType'EnumOther val
      )

-- | Define the one-of schema subscriptionSchedule\'
--
-- The schedule attached to the subscription
data SubscriptionSchedule'Variants
  = SubscriptionSchedule'SubscriptionSchedule SubscriptionSchedule
  | SubscriptionSchedule'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SubscriptionSchedule'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SubscriptionSchedule'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema subscriptionStatus\'
--
-- Possible values are \`incomplete\`, \`incomplete_expired\`, \`trialing\`, \`active\`, \`past_due\`, \`canceled\`, or \`unpaid\`.
--
-- For \`collection_method=charge_automatically\` a subscription moves into \`incomplete\` if the initial payment attempt fails. A subscription in this state can only have metadata and default_source updated. Once the first invoice is paid, the subscription moves into an \`active\` state. If the first invoice is not paid within 23 hours, the subscription transitions to \`incomplete_expired\`. This is a terminal state, the open invoice will be voided and no further invoices will be generated.
--
-- A subscription that is currently in a trial period is \`trialing\` and moves to \`active\` when the trial period is over.
--
-- If subscription \`collection_method=charge_automatically\` it becomes \`past_due\` when payment to renew it fails and \`canceled\` or \`unpaid\` (depending on your subscriptions settings) when Stripe has exhausted all payment retry attempts.
--
-- If subscription \`collection_method=send_invoice\` it becomes \`past_due\` when its invoice is not paid by the due date, and \`canceled\` or \`unpaid\` if it is still not paid by an additional deadline after that. Note that when a subscription has a status of \`unpaid\`, no subsequent invoices will be attempted (invoices will be created, but then immediately automatically closed). After receiving updated payment information from a customer, you may choose to reopen and pay their closed invoices.
data SubscriptionStatus'
  = SubscriptionStatus'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionStatus'EnumTyped Data.Text.Internal.Text
  | SubscriptionStatus'EnumStringActive
  | SubscriptionStatus'EnumStringCanceled
  | SubscriptionStatus'EnumStringIncomplete
  | SubscriptionStatus'EnumStringIncompleteExpired
  | SubscriptionStatus'EnumStringPastDue
  | SubscriptionStatus'EnumStringTrialing
  | SubscriptionStatus'EnumStringUnpaid
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionStatus' where
  toJSON (SubscriptionStatus'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionStatus'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionStatus'EnumStringActive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active"
  toJSON (SubscriptionStatus'EnumStringCanceled) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "canceled"
  toJSON (SubscriptionStatus'EnumStringIncomplete) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "incomplete"
  toJSON (SubscriptionStatus'EnumStringIncompleteExpired) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "incomplete_expired"
  toJSON (SubscriptionStatus'EnumStringPastDue) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "past_due"
  toJSON (SubscriptionStatus'EnumStringTrialing) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "trialing"
  toJSON (SubscriptionStatus'EnumStringUnpaid) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unpaid"

instance Data.Aeson.FromJSON SubscriptionStatus' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active")
          then SubscriptionStatus'EnumStringActive
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "canceled")
              then SubscriptionStatus'EnumStringCanceled
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "incomplete")
                  then SubscriptionStatus'EnumStringIncomplete
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "incomplete_expired")
                      then SubscriptionStatus'EnumStringIncompleteExpired
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "past_due")
                          then SubscriptionStatus'EnumStringPastDue
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "trialing")
                              then SubscriptionStatus'EnumStringTrialing
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unpaid")
                                  then SubscriptionStatus'EnumStringUnpaid
                                  else SubscriptionStatus'EnumOther val
      )

-- | Defines the data type for the schema subscription_item
--
-- Subscription items allow you to create customer subscriptions with more than
-- one plan, making it easy to represent complex billing relationships.
data SubscriptionItem
  = SubscriptionItem
      { -- | billing_thresholds: Define thresholds at which an invoice will be sent, and the related subscription advanced to a new billing period
        subscriptionItemBillingThresholds :: (GHC.Maybe.Maybe SubscriptionItemBillingThresholds'),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        subscriptionItemCreated :: GHC.Integer.Type.Integer,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        subscriptionItemId :: Data.Text.Internal.Text,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        subscriptionItemMetadata :: SubscriptionItemMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        subscriptionItemObject :: SubscriptionItemObject',
        -- | plan: Plans define the base price, currency, and billing cycle for subscriptions.
        -- For example, you might have a \<currency>5\<\/currency>\/month plan
        -- that provides limited access to your products, and a
        -- \<currency>15\<\/currency>\/month plan that allows full access.
        --
        -- Related guide: [Managing Products and Plans](https:\/\/stripe.com\/docs\/billing\/subscriptions\/products-and-plans).
        subscriptionItemPlan :: Plan,
        -- | quantity: The [quantity](https:\/\/stripe.com\/docs\/subscriptions\/quantities) of the plan to which the customer should be subscribed.
        subscriptionItemQuantity :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | subscription: The \`subscription\` this \`subscription_item\` belongs to.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        subscriptionItemSubscription :: Data.Text.Internal.Text,
        -- | tax_rates: The tax rates which apply to this \`subscription_item\`. When set, the \`default_tax_rates\` on the subscription do not apply to this \`subscription_item\`.
        subscriptionItemTaxRates :: (GHC.Maybe.Maybe ([] TaxRate))
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionItem where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "billing_thresholds" (subscriptionItemBillingThresholds obj) : (Data.Aeson..=) "created" (subscriptionItemCreated obj) : (Data.Aeson..=) "id" (subscriptionItemId obj) : (Data.Aeson..=) "metadata" (subscriptionItemMetadata obj) : (Data.Aeson..=) "object" (subscriptionItemObject obj) : (Data.Aeson..=) "plan" (subscriptionItemPlan obj) : (Data.Aeson..=) "quantity" (subscriptionItemQuantity obj) : (Data.Aeson..=) "subscription" (subscriptionItemSubscription obj) : (Data.Aeson..=) "tax_rates" (subscriptionItemTaxRates obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "billing_thresholds" (subscriptionItemBillingThresholds obj) GHC.Base.<> ((Data.Aeson..=) "created" (subscriptionItemCreated obj) GHC.Base.<> ((Data.Aeson..=) "id" (subscriptionItemId obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (subscriptionItemMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (subscriptionItemObject obj) GHC.Base.<> ((Data.Aeson..=) "plan" (subscriptionItemPlan obj) GHC.Base.<> ((Data.Aeson..=) "quantity" (subscriptionItemQuantity obj) GHC.Base.<> ((Data.Aeson..=) "subscription" (subscriptionItemSubscription obj) GHC.Base.<> (Data.Aeson..=) "tax_rates" (subscriptionItemTaxRates obj)))))))))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionItem where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionItem" (\obj -> ((((((((GHC.Base.pure SubscriptionItem GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_thresholds")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "plan")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "quantity")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "subscription")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_rates"))

-- | Defines the data type for the schema subscription_itemBilling_thresholds\'
--
-- Define thresholds at which an invoice will be sent, and the related subscription advanced to a new billing period
data SubscriptionItemBillingThresholds'
  = SubscriptionItemBillingThresholds'
      { -- | usage_gte: Usage threshold that triggers the subscription to create an invoice
        subscriptionItemBillingThresholds'UsageGte :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionItemBillingThresholds' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "usage_gte" (subscriptionItemBillingThresholds'UsageGte obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "usage_gte" (subscriptionItemBillingThresholds'UsageGte obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionItemBillingThresholds' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionItemBillingThresholds'" (\obj -> GHC.Base.pure SubscriptionItemBillingThresholds' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "usage_gte"))

-- | Defines the data type for the schema subscription_itemMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data SubscriptionItemMetadata'
  = SubscriptionItemMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionItemMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionItemMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionItemMetadata'" (\obj -> GHC.Base.pure SubscriptionItemMetadata')

-- | Defines the enum schema subscription_itemObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data SubscriptionItemObject'
  = SubscriptionItemObject'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionItemObject'EnumTyped Data.Text.Internal.Text
  | SubscriptionItemObject'EnumStringSubscriptionItem
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionItemObject' where
  toJSON (SubscriptionItemObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionItemObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionItemObject'EnumStringSubscriptionItem) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription_item"

instance Data.Aeson.FromJSON SubscriptionItemObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription_item")
          then SubscriptionItemObject'EnumStringSubscriptionItem
          else SubscriptionItemObject'EnumOther val
      )

-- | Defines the data type for the schema subscription_schedule
--
-- 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.
        subscriptionScheduleCanceledAt :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | completed_at: Time at which the subscription schedule was completed. Measured in seconds since the Unix epoch.
        subscriptionScheduleCompletedAt :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        subscriptionScheduleCreated :: GHC.Integer.Type.Integer,
        -- | current_phase: Object representing the start and end dates for the current phase of the subscription schedule, if it is \`active\`.
        subscriptionScheduleCurrentPhase :: (GHC.Maybe.Maybe SubscriptionScheduleCurrentPhase'),
        -- | customer: ID of the customer who owns the subscription schedule.
        subscriptionScheduleCustomer :: SubscriptionScheduleCustomer'Variants,
        -- | default_settings:
        subscriptionScheduleDefaultSettings :: SubscriptionSchedulesResourceDefaultSettings,
        -- | end_behavior: Behavior of the subscription schedule and underlying subscription when it ends.
        subscriptionScheduleEndBehavior :: SubscriptionScheduleEndBehavior',
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        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.
        subscriptionScheduleLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        subscriptionScheduleMetadata :: (GHC.Maybe.Maybe SubscriptionScheduleMetadata'),
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        subscriptionScheduleObject :: SubscriptionScheduleObject',
        -- | phases: Configuration for the subscription schedule\'s phases.
        subscriptionSchedulePhases :: ([] SubscriptionSchedulePhaseConfiguration),
        -- | released_at: Time at which the subscription schedule was released. Measured in seconds since the Unix epoch.
        subscriptionScheduleReleasedAt :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | released_subscription: ID of the subscription once managed by the subscription schedule (if it is released).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        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).
        subscriptionScheduleStatus :: SubscriptionScheduleStatus',
        -- | subscription: ID of the subscription managed by the subscription schedule.
        subscriptionScheduleSubscription :: (GHC.Maybe.Maybe SubscriptionScheduleSubscription'Variants)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionSchedule where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "canceled_at" (subscriptionScheduleCanceledAt obj) : (Data.Aeson..=) "completed_at" (subscriptionScheduleCompletedAt obj) : (Data.Aeson..=) "created" (subscriptionScheduleCreated obj) : (Data.Aeson..=) "current_phase" (subscriptionScheduleCurrentPhase obj) : (Data.Aeson..=) "customer" (subscriptionScheduleCustomer obj) : (Data.Aeson..=) "default_settings" (subscriptionScheduleDefaultSettings obj) : (Data.Aeson..=) "end_behavior" (subscriptionScheduleEndBehavior obj) : (Data.Aeson..=) "id" (subscriptionScheduleId obj) : (Data.Aeson..=) "livemode" (subscriptionScheduleLivemode obj) : (Data.Aeson..=) "metadata" (subscriptionScheduleMetadata obj) : (Data.Aeson..=) "object" (subscriptionScheduleObject obj) : (Data.Aeson..=) "phases" (subscriptionSchedulePhases obj) : (Data.Aeson..=) "released_at" (subscriptionScheduleReleasedAt obj) : (Data.Aeson..=) "released_subscription" (subscriptionScheduleReleasedSubscription obj) : (Data.Aeson..=) "status" (subscriptionScheduleStatus obj) : (Data.Aeson..=) "subscription" (subscriptionScheduleSubscription obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "canceled_at" (subscriptionScheduleCanceledAt obj) GHC.Base.<> ((Data.Aeson..=) "completed_at" (subscriptionScheduleCompletedAt obj) GHC.Base.<> ((Data.Aeson..=) "created" (subscriptionScheduleCreated obj) GHC.Base.<> ((Data.Aeson..=) "current_phase" (subscriptionScheduleCurrentPhase obj) GHC.Base.<> ((Data.Aeson..=) "customer" (subscriptionScheduleCustomer obj) GHC.Base.<> ((Data.Aeson..=) "default_settings" (subscriptionScheduleDefaultSettings obj) GHC.Base.<> ((Data.Aeson..=) "end_behavior" (subscriptionScheduleEndBehavior obj) GHC.Base.<> ((Data.Aeson..=) "id" (subscriptionScheduleId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (subscriptionScheduleLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (subscriptionScheduleMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (subscriptionScheduleObject obj) GHC.Base.<> ((Data.Aeson..=) "phases" (subscriptionSchedulePhases obj) GHC.Base.<> ((Data.Aeson..=) "released_at" (subscriptionScheduleReleasedAt obj) GHC.Base.<> ((Data.Aeson..=) "released_subscription" (subscriptionScheduleReleasedSubscription obj) GHC.Base.<> ((Data.Aeson..=) "status" (subscriptionScheduleStatus obj) GHC.Base.<> (Data.Aeson..=) "subscription" (subscriptionScheduleSubscription obj))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionSchedule where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionSchedule" (\obj -> (((((((((((((((GHC.Base.pure SubscriptionSchedule GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "canceled_at")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "completed_at")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "current_phase")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "default_settings")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "end_behavior")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "phases")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "released_at")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "released_subscription")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscription"))

-- | Defines the data type for the schema subscription_scheduleCurrent_phase\'
--
-- 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'EndDate :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | start_date: The start of this phase of the subscription schedule.
        subscriptionScheduleCurrentPhase'StartDate :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionScheduleCurrentPhase' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "end_date" (subscriptionScheduleCurrentPhase'EndDate obj) : (Data.Aeson..=) "start_date" (subscriptionScheduleCurrentPhase'StartDate obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "end_date" (subscriptionScheduleCurrentPhase'EndDate obj) GHC.Base.<> (Data.Aeson..=) "start_date" (subscriptionScheduleCurrentPhase'StartDate obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionScheduleCurrentPhase' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionScheduleCurrentPhase'" (\obj -> (GHC.Base.pure SubscriptionScheduleCurrentPhase' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "end_date")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "start_date"))

-- | Define the one-of schema subscription_scheduleCustomer\'
--
-- ID of the customer who owns the subscription schedule.
data SubscriptionScheduleCustomer'Variants
  = SubscriptionScheduleCustomer'Customer Customer
  | SubscriptionScheduleCustomer'DeletedCustomer DeletedCustomer
  | SubscriptionScheduleCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SubscriptionScheduleCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SubscriptionScheduleCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema subscription_scheduleEnd_behavior\'
--
-- Behavior of the subscription schedule and underlying subscription when it ends.
data SubscriptionScheduleEndBehavior'
  = SubscriptionScheduleEndBehavior'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionScheduleEndBehavior'EnumTyped Data.Text.Internal.Text
  | SubscriptionScheduleEndBehavior'EnumStringCancel
  | SubscriptionScheduleEndBehavior'EnumStringNone
  | SubscriptionScheduleEndBehavior'EnumStringRelease
  | SubscriptionScheduleEndBehavior'EnumStringRenew
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionScheduleEndBehavior' where
  toJSON (SubscriptionScheduleEndBehavior'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionScheduleEndBehavior'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionScheduleEndBehavior'EnumStringCancel) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cancel"
  toJSON (SubscriptionScheduleEndBehavior'EnumStringNone) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "none"
  toJSON (SubscriptionScheduleEndBehavior'EnumStringRelease) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "release"
  toJSON (SubscriptionScheduleEndBehavior'EnumStringRenew) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "renew"

instance Data.Aeson.FromJSON SubscriptionScheduleEndBehavior' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "cancel")
          then SubscriptionScheduleEndBehavior'EnumStringCancel
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "none")
              then SubscriptionScheduleEndBehavior'EnumStringNone
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "release")
                  then SubscriptionScheduleEndBehavior'EnumStringRelease
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "renew")
                      then SubscriptionScheduleEndBehavior'EnumStringRenew
                      else SubscriptionScheduleEndBehavior'EnumOther val
      )

-- | Defines the data type for the schema subscription_scheduleMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data SubscriptionScheduleMetadata'
  = SubscriptionScheduleMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionScheduleMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionScheduleMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionScheduleMetadata'" (\obj -> GHC.Base.pure SubscriptionScheduleMetadata')

-- | Defines the enum schema subscription_scheduleObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data SubscriptionScheduleObject'
  = SubscriptionScheduleObject'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionScheduleObject'EnumTyped Data.Text.Internal.Text
  | SubscriptionScheduleObject'EnumStringSubscriptionSchedule
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionScheduleObject' where
  toJSON (SubscriptionScheduleObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionScheduleObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionScheduleObject'EnumStringSubscriptionSchedule) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription_schedule"

instance Data.Aeson.FromJSON SubscriptionScheduleObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "subscription_schedule")
          then SubscriptionScheduleObject'EnumStringSubscriptionSchedule
          else SubscriptionScheduleObject'EnumOther val
      )

-- | Defines the enum schema subscription_scheduleStatus\'
--
-- 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'
  = SubscriptionScheduleStatus'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionScheduleStatus'EnumTyped Data.Text.Internal.Text
  | SubscriptionScheduleStatus'EnumStringActive
  | SubscriptionScheduleStatus'EnumStringCanceled
  | SubscriptionScheduleStatus'EnumStringCompleted
  | SubscriptionScheduleStatus'EnumStringNotStarted
  | SubscriptionScheduleStatus'EnumStringReleased
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionScheduleStatus' where
  toJSON (SubscriptionScheduleStatus'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionScheduleStatus'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionScheduleStatus'EnumStringActive) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active"
  toJSON (SubscriptionScheduleStatus'EnumStringCanceled) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "canceled"
  toJSON (SubscriptionScheduleStatus'EnumStringCompleted) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "completed"
  toJSON (SubscriptionScheduleStatus'EnumStringNotStarted) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "not_started"
  toJSON (SubscriptionScheduleStatus'EnumStringReleased) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "released"

instance Data.Aeson.FromJSON SubscriptionScheduleStatus' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "active")
          then SubscriptionScheduleStatus'EnumStringActive
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "canceled")
              then SubscriptionScheduleStatus'EnumStringCanceled
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "completed")
                  then SubscriptionScheduleStatus'EnumStringCompleted
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "not_started")
                      then SubscriptionScheduleStatus'EnumStringNotStarted
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "released")
                          then SubscriptionScheduleStatus'EnumStringReleased
                          else SubscriptionScheduleStatus'EnumOther val
      )

-- | Define the one-of schema subscription_scheduleSubscription\'
--
-- ID of the subscription managed by the subscription schedule.
data SubscriptionScheduleSubscription'Variants
  = SubscriptionScheduleSubscription'Subscription Subscription
  | SubscriptionScheduleSubscription'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SubscriptionScheduleSubscription'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SubscriptionScheduleSubscription'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema subscription_schedule_configuration_item
--
-- A phase item describes the plan and quantity of a phase.
data SubscriptionScheduleConfigurationItem
  = SubscriptionScheduleConfigurationItem
      { -- | billing_thresholds: Define thresholds at which an invoice will be sent, and the related subscription advanced to a new billing period
        subscriptionScheduleConfigurationItemBillingThresholds :: (GHC.Maybe.Maybe SubscriptionScheduleConfigurationItemBillingThresholds'),
        -- | plan: ID of the plan to which the customer should be subscribed.
        subscriptionScheduleConfigurationItemPlan :: SubscriptionScheduleConfigurationItemPlan'Variants,
        -- | quantity: Quantity of the plan to which the customer should be subscribed.
        subscriptionScheduleConfigurationItemQuantity :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | tax_rates: The tax rates which apply to this \`phase_item\`. When set, the \`default_tax_rates\` on the phase do not apply to this \`phase_item\`.
        subscriptionScheduleConfigurationItemTaxRates :: (GHC.Maybe.Maybe ([] TaxRate))
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionScheduleConfigurationItem where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "billing_thresholds" (subscriptionScheduleConfigurationItemBillingThresholds obj) : (Data.Aeson..=) "plan" (subscriptionScheduleConfigurationItemPlan obj) : (Data.Aeson..=) "quantity" (subscriptionScheduleConfigurationItemQuantity obj) : (Data.Aeson..=) "tax_rates" (subscriptionScheduleConfigurationItemTaxRates obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "billing_thresholds" (subscriptionScheduleConfigurationItemBillingThresholds obj) GHC.Base.<> ((Data.Aeson..=) "plan" (subscriptionScheduleConfigurationItemPlan obj) GHC.Base.<> ((Data.Aeson..=) "quantity" (subscriptionScheduleConfigurationItemQuantity obj) GHC.Base.<> (Data.Aeson..=) "tax_rates" (subscriptionScheduleConfigurationItemTaxRates obj))))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionScheduleConfigurationItem where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionScheduleConfigurationItem" (\obj -> (((GHC.Base.pure SubscriptionScheduleConfigurationItem GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_thresholds")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "plan")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "quantity")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_rates"))

-- | Defines the data type for the schema subscription_schedule_configuration_itemBilling_thresholds\'
--
-- Define thresholds at which an invoice will be sent, and the related subscription advanced to a new billing period
data SubscriptionScheduleConfigurationItemBillingThresholds'
  = SubscriptionScheduleConfigurationItemBillingThresholds'
      { -- | usage_gte: Usage threshold that triggers the subscription to create an invoice
        subscriptionScheduleConfigurationItemBillingThresholds'UsageGte :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionScheduleConfigurationItemBillingThresholds' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "usage_gte" (subscriptionScheduleConfigurationItemBillingThresholds'UsageGte obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "usage_gte" (subscriptionScheduleConfigurationItemBillingThresholds'UsageGte obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionScheduleConfigurationItemBillingThresholds' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionScheduleConfigurationItemBillingThresholds'" (\obj -> GHC.Base.pure SubscriptionScheduleConfigurationItemBillingThresholds' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "usage_gte"))

-- | Define the one-of schema subscription_schedule_configuration_itemPlan\'
--
-- ID of the plan to which the customer should be subscribed.
data SubscriptionScheduleConfigurationItemPlan'Variants
  = SubscriptionScheduleConfigurationItemPlan'DeletedPlan DeletedPlan
  | SubscriptionScheduleConfigurationItemPlan'Plan Plan
  | SubscriptionScheduleConfigurationItemPlan'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SubscriptionScheduleConfigurationItemPlan'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SubscriptionScheduleConfigurationItemPlan'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema subscription_schedule_phase_configuration
--
-- A phase describes the plans, coupon, and trialing status of a subscription for a predefined time period.
data SubscriptionSchedulePhaseConfiguration
  = SubscriptionSchedulePhaseConfiguration
      { -- | application_fee_percent: A non-negative decimal between 0 and 100, with at most two decimal places. This represents the percentage of the subscription invoice subtotal that will be transferred to the application owner\'s Stripe account during this phase of the schedule.
        subscriptionSchedulePhaseConfigurationApplicationFeePercent :: (GHC.Maybe.Maybe GHC.Types.Double),
        -- | billing_thresholds: Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period
        subscriptionSchedulePhaseConfigurationBillingThresholds :: (GHC.Maybe.Maybe SubscriptionSchedulePhaseConfigurationBillingThresholds'),
        -- | collection_method: Either \`charge_automatically\`, or \`send_invoice\`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions.
        subscriptionSchedulePhaseConfigurationCollectionMethod :: (GHC.Maybe.Maybe SubscriptionSchedulePhaseConfigurationCollectionMethod'),
        -- | coupon: ID of the coupon to use during this phase of the subscription schedule.
        subscriptionSchedulePhaseConfigurationCoupon :: (GHC.Maybe.Maybe SubscriptionSchedulePhaseConfigurationCoupon'Variants),
        -- | default_payment_method: ID of the default payment method for the subscription schedule. It must belong to the customer associated with the subscription schedule. If not set, invoices will use the default payment method in the customer\'s invoice settings.
        subscriptionSchedulePhaseConfigurationDefaultPaymentMethod :: (GHC.Maybe.Maybe SubscriptionSchedulePhaseConfigurationDefaultPaymentMethod'Variants),
        -- | default_tax_rates: The default tax rates to apply to the subscription during this phase of the subscription schedule.
        subscriptionSchedulePhaseConfigurationDefaultTaxRates :: (GHC.Maybe.Maybe ([] TaxRate)),
        -- | end_date: The end of this phase of the subscription schedule.
        subscriptionSchedulePhaseConfigurationEndDate :: GHC.Integer.Type.Integer,
        -- | invoice_settings: The subscription schedule\'s default invoice settings.
        subscriptionSchedulePhaseConfigurationInvoiceSettings :: (GHC.Maybe.Maybe SubscriptionSchedulePhaseConfigurationInvoiceSettings'),
        -- | plans: Plans to subscribe during this phase of the subscription schedule.
        subscriptionSchedulePhaseConfigurationPlans :: ([] SubscriptionScheduleConfigurationItem),
        -- | proration_behavior: Controls whether or not the subscription schedule will prorate when transitioning to this phase. Values are \`create_prorations\` and \`none\`.
        subscriptionSchedulePhaseConfigurationProrationBehavior :: (GHC.Maybe.Maybe SubscriptionSchedulePhaseConfigurationProrationBehavior'),
        -- | start_date: The start of this phase of the subscription schedule.
        subscriptionSchedulePhaseConfigurationStartDate :: GHC.Integer.Type.Integer,
        -- | tax_percent: If provided, each invoice created during this phase of the subscription schedule will apply the tax rate, increasing the amount billed to the customer.
        subscriptionSchedulePhaseConfigurationTaxPercent :: (GHC.Maybe.Maybe GHC.Types.Double),
        -- | trial_end: When the trial ends within the phase.
        subscriptionSchedulePhaseConfigurationTrialEnd :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionSchedulePhaseConfiguration where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "application_fee_percent" (subscriptionSchedulePhaseConfigurationApplicationFeePercent obj) : (Data.Aeson..=) "billing_thresholds" (subscriptionSchedulePhaseConfigurationBillingThresholds obj) : (Data.Aeson..=) "collection_method" (subscriptionSchedulePhaseConfigurationCollectionMethod obj) : (Data.Aeson..=) "coupon" (subscriptionSchedulePhaseConfigurationCoupon obj) : (Data.Aeson..=) "default_payment_method" (subscriptionSchedulePhaseConfigurationDefaultPaymentMethod obj) : (Data.Aeson..=) "default_tax_rates" (subscriptionSchedulePhaseConfigurationDefaultTaxRates obj) : (Data.Aeson..=) "end_date" (subscriptionSchedulePhaseConfigurationEndDate obj) : (Data.Aeson..=) "invoice_settings" (subscriptionSchedulePhaseConfigurationInvoiceSettings obj) : (Data.Aeson..=) "plans" (subscriptionSchedulePhaseConfigurationPlans obj) : (Data.Aeson..=) "proration_behavior" (subscriptionSchedulePhaseConfigurationProrationBehavior obj) : (Data.Aeson..=) "start_date" (subscriptionSchedulePhaseConfigurationStartDate obj) : (Data.Aeson..=) "tax_percent" (subscriptionSchedulePhaseConfigurationTaxPercent obj) : (Data.Aeson..=) "trial_end" (subscriptionSchedulePhaseConfigurationTrialEnd obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "application_fee_percent" (subscriptionSchedulePhaseConfigurationApplicationFeePercent obj) GHC.Base.<> ((Data.Aeson..=) "billing_thresholds" (subscriptionSchedulePhaseConfigurationBillingThresholds obj) GHC.Base.<> ((Data.Aeson..=) "collection_method" (subscriptionSchedulePhaseConfigurationCollectionMethod obj) GHC.Base.<> ((Data.Aeson..=) "coupon" (subscriptionSchedulePhaseConfigurationCoupon obj) GHC.Base.<> ((Data.Aeson..=) "default_payment_method" (subscriptionSchedulePhaseConfigurationDefaultPaymentMethod obj) GHC.Base.<> ((Data.Aeson..=) "default_tax_rates" (subscriptionSchedulePhaseConfigurationDefaultTaxRates obj) GHC.Base.<> ((Data.Aeson..=) "end_date" (subscriptionSchedulePhaseConfigurationEndDate obj) GHC.Base.<> ((Data.Aeson..=) "invoice_settings" (subscriptionSchedulePhaseConfigurationInvoiceSettings obj) GHC.Base.<> ((Data.Aeson..=) "plans" (subscriptionSchedulePhaseConfigurationPlans obj) GHC.Base.<> ((Data.Aeson..=) "proration_behavior" (subscriptionSchedulePhaseConfigurationProrationBehavior obj) GHC.Base.<> ((Data.Aeson..=) "start_date" (subscriptionSchedulePhaseConfigurationStartDate obj) GHC.Base.<> ((Data.Aeson..=) "tax_percent" (subscriptionSchedulePhaseConfigurationTaxPercent obj) GHC.Base.<> (Data.Aeson..=) "trial_end" (subscriptionSchedulePhaseConfigurationTrialEnd obj)))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionSchedulePhaseConfiguration where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionSchedulePhaseConfiguration" (\obj -> ((((((((((((GHC.Base.pure SubscriptionSchedulePhaseConfiguration GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "application_fee_percent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_thresholds")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "collection_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "coupon")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_payment_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_tax_rates")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "end_date")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "invoice_settings")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "plans")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "proration_behavior")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "start_date")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_percent")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "trial_end"))

-- | Defines the data type for the schema subscription_schedule_phase_configurationBilling_thresholds\'
--
-- Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period
data SubscriptionSchedulePhaseConfigurationBillingThresholds'
  = SubscriptionSchedulePhaseConfigurationBillingThresholds'
      { -- | amount_gte: Monetary threshold that triggers the subscription to create an invoice
        subscriptionSchedulePhaseConfigurationBillingThresholds'AmountGte :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | reset_billing_cycle_anchor: Indicates if the \`billing_cycle_anchor\` should be reset when a threshold is reached. If true, \`billing_cycle_anchor\` will be updated to the date\/time the threshold was last reached; otherwise, the value will remain unchanged. This value may not be \`true\` if the subscription contains items with plans that have \`aggregate_usage=last_ever\`.
        subscriptionSchedulePhaseConfigurationBillingThresholds'ResetBillingCycleAnchor :: (GHC.Maybe.Maybe GHC.Types.Bool)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionSchedulePhaseConfigurationBillingThresholds' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount_gte" (subscriptionSchedulePhaseConfigurationBillingThresholds'AmountGte obj) : (Data.Aeson..=) "reset_billing_cycle_anchor" (subscriptionSchedulePhaseConfigurationBillingThresholds'ResetBillingCycleAnchor obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount_gte" (subscriptionSchedulePhaseConfigurationBillingThresholds'AmountGte obj) GHC.Base.<> (Data.Aeson..=) "reset_billing_cycle_anchor" (subscriptionSchedulePhaseConfigurationBillingThresholds'ResetBillingCycleAnchor obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionSchedulePhaseConfigurationBillingThresholds' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionSchedulePhaseConfigurationBillingThresholds'" (\obj -> (GHC.Base.pure SubscriptionSchedulePhaseConfigurationBillingThresholds' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount_gte")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "reset_billing_cycle_anchor"))

-- | Defines the enum schema subscription_schedule_phase_configurationCollection_method\'
--
-- Either \`charge_automatically\`, or \`send_invoice\`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions.
data SubscriptionSchedulePhaseConfigurationCollectionMethod'
  = SubscriptionSchedulePhaseConfigurationCollectionMethod'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionSchedulePhaseConfigurationCollectionMethod'EnumTyped Data.Text.Internal.Text
  | SubscriptionSchedulePhaseConfigurationCollectionMethod'EnumStringChargeAutomatically
  | SubscriptionSchedulePhaseConfigurationCollectionMethod'EnumStringSendInvoice
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionSchedulePhaseConfigurationCollectionMethod' where
  toJSON (SubscriptionSchedulePhaseConfigurationCollectionMethod'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionSchedulePhaseConfigurationCollectionMethod'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionSchedulePhaseConfigurationCollectionMethod'EnumStringChargeAutomatically) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charge_automatically"
  toJSON (SubscriptionSchedulePhaseConfigurationCollectionMethod'EnumStringSendInvoice) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "send_invoice"

instance Data.Aeson.FromJSON SubscriptionSchedulePhaseConfigurationCollectionMethod' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charge_automatically")
          then SubscriptionSchedulePhaseConfigurationCollectionMethod'EnumStringChargeAutomatically
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "send_invoice")
              then SubscriptionSchedulePhaseConfigurationCollectionMethod'EnumStringSendInvoice
              else SubscriptionSchedulePhaseConfigurationCollectionMethod'EnumOther val
      )

-- | Define the one-of schema subscription_schedule_phase_configurationCoupon\'
--
-- ID of the coupon to use during this phase of the subscription schedule.
data SubscriptionSchedulePhaseConfigurationCoupon'Variants
  = SubscriptionSchedulePhaseConfigurationCoupon'Coupon Coupon
  | SubscriptionSchedulePhaseConfigurationCoupon'DeletedCoupon DeletedCoupon
  | SubscriptionSchedulePhaseConfigurationCoupon'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SubscriptionSchedulePhaseConfigurationCoupon'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SubscriptionSchedulePhaseConfigurationCoupon'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema subscription_schedule_phase_configurationDefault_payment_method\'
--
-- ID of the default payment method for the subscription schedule. It must belong to the customer associated with the subscription schedule. If not set, invoices will use the default payment method in the customer\'s invoice settings.
data SubscriptionSchedulePhaseConfigurationDefaultPaymentMethod'Variants
  = SubscriptionSchedulePhaseConfigurationDefaultPaymentMethod'PaymentMethod PaymentMethod
  | SubscriptionSchedulePhaseConfigurationDefaultPaymentMethod'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SubscriptionSchedulePhaseConfigurationDefaultPaymentMethod'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SubscriptionSchedulePhaseConfigurationDefaultPaymentMethod'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema subscription_schedule_phase_configurationInvoice_settings\'
--
-- The subscription schedule\\\'s default invoice settings.
data SubscriptionSchedulePhaseConfigurationInvoiceSettings'
  = SubscriptionSchedulePhaseConfigurationInvoiceSettings'
      { -- | days_until_due: Number of days within which a customer must pay invoices generated by this subscription schedule. This value will be \`null\` for subscription schedules where \`billing=charge_automatically\`.
        subscriptionSchedulePhaseConfigurationInvoiceSettings'DaysUntilDue :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionSchedulePhaseConfigurationInvoiceSettings' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "days_until_due" (subscriptionSchedulePhaseConfigurationInvoiceSettings'DaysUntilDue obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "days_until_due" (subscriptionSchedulePhaseConfigurationInvoiceSettings'DaysUntilDue obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionSchedulePhaseConfigurationInvoiceSettings' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionSchedulePhaseConfigurationInvoiceSettings'" (\obj -> GHC.Base.pure SubscriptionSchedulePhaseConfigurationInvoiceSettings' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "days_until_due"))

-- | Defines the enum schema subscription_schedule_phase_configurationProration_behavior\'
--
-- Controls whether or not the subscription schedule will prorate when transitioning to this phase. Values are \`create_prorations\` and \`none\`.
data SubscriptionSchedulePhaseConfigurationProrationBehavior'
  = SubscriptionSchedulePhaseConfigurationProrationBehavior'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionSchedulePhaseConfigurationProrationBehavior'EnumTyped Data.Text.Internal.Text
  | SubscriptionSchedulePhaseConfigurationProrationBehavior'EnumStringAlwaysInvoice
  | SubscriptionSchedulePhaseConfigurationProrationBehavior'EnumStringCreateProrations
  | SubscriptionSchedulePhaseConfigurationProrationBehavior'EnumStringNone
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionSchedulePhaseConfigurationProrationBehavior' where
  toJSON (SubscriptionSchedulePhaseConfigurationProrationBehavior'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionSchedulePhaseConfigurationProrationBehavior'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionSchedulePhaseConfigurationProrationBehavior'EnumStringAlwaysInvoice) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "always_invoice"
  toJSON (SubscriptionSchedulePhaseConfigurationProrationBehavior'EnumStringCreateProrations) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "create_prorations"
  toJSON (SubscriptionSchedulePhaseConfigurationProrationBehavior'EnumStringNone) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "none"

instance Data.Aeson.FromJSON SubscriptionSchedulePhaseConfigurationProrationBehavior' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "always_invoice")
          then SubscriptionSchedulePhaseConfigurationProrationBehavior'EnumStringAlwaysInvoice
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "create_prorations")
              then SubscriptionSchedulePhaseConfigurationProrationBehavior'EnumStringCreateProrations
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "none")
                  then SubscriptionSchedulePhaseConfigurationProrationBehavior'EnumStringNone
                  else SubscriptionSchedulePhaseConfigurationProrationBehavior'EnumOther val
      )

-- | Defines the data type for the schema subscription_schedules_resource_default_settings
data SubscriptionSchedulesResourceDefaultSettings
  = SubscriptionSchedulesResourceDefaultSettings
      { -- | billing_thresholds: Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period
        subscriptionSchedulesResourceDefaultSettingsBillingThresholds :: (GHC.Maybe.Maybe SubscriptionSchedulesResourceDefaultSettingsBillingThresholds'),
        -- | collection_method: Either \`charge_automatically\`, or \`send_invoice\`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions.
        subscriptionSchedulesResourceDefaultSettingsCollectionMethod :: (GHC.Maybe.Maybe SubscriptionSchedulesResourceDefaultSettingsCollectionMethod'),
        -- | default_payment_method: ID of the default payment method for the subscription schedule. If not set, invoices will use the default payment method in the customer\'s invoice settings.
        subscriptionSchedulesResourceDefaultSettingsDefaultPaymentMethod :: (GHC.Maybe.Maybe SubscriptionSchedulesResourceDefaultSettingsDefaultPaymentMethod'Variants),
        -- | invoice_settings: The subscription schedule\'s default invoice settings.
        subscriptionSchedulesResourceDefaultSettingsInvoiceSettings :: (GHC.Maybe.Maybe SubscriptionSchedulesResourceDefaultSettingsInvoiceSettings')
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionSchedulesResourceDefaultSettings where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "billing_thresholds" (subscriptionSchedulesResourceDefaultSettingsBillingThresholds obj) : (Data.Aeson..=) "collection_method" (subscriptionSchedulesResourceDefaultSettingsCollectionMethod obj) : (Data.Aeson..=) "default_payment_method" (subscriptionSchedulesResourceDefaultSettingsDefaultPaymentMethod obj) : (Data.Aeson..=) "invoice_settings" (subscriptionSchedulesResourceDefaultSettingsInvoiceSettings obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "billing_thresholds" (subscriptionSchedulesResourceDefaultSettingsBillingThresholds obj) GHC.Base.<> ((Data.Aeson..=) "collection_method" (subscriptionSchedulesResourceDefaultSettingsCollectionMethod obj) GHC.Base.<> ((Data.Aeson..=) "default_payment_method" (subscriptionSchedulesResourceDefaultSettingsDefaultPaymentMethod obj) GHC.Base.<> (Data.Aeson..=) "invoice_settings" (subscriptionSchedulesResourceDefaultSettingsInvoiceSettings obj))))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionSchedulesResourceDefaultSettings where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionSchedulesResourceDefaultSettings" (\obj -> (((GHC.Base.pure SubscriptionSchedulesResourceDefaultSettings GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_thresholds")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "collection_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "default_payment_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "invoice_settings"))

-- | Defines the data type for the schema subscription_schedules_resource_default_settingsBilling_thresholds\'
--
-- Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period
data SubscriptionSchedulesResourceDefaultSettingsBillingThresholds'
  = SubscriptionSchedulesResourceDefaultSettingsBillingThresholds'
      { -- | amount_gte: Monetary threshold that triggers the subscription to create an invoice
        subscriptionSchedulesResourceDefaultSettingsBillingThresholds'AmountGte :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | reset_billing_cycle_anchor: Indicates if the \`billing_cycle_anchor\` should be reset when a threshold is reached. If true, \`billing_cycle_anchor\` will be updated to the date\/time the threshold was last reached; otherwise, the value will remain unchanged. This value may not be \`true\` if the subscription contains items with plans that have \`aggregate_usage=last_ever\`.
        subscriptionSchedulesResourceDefaultSettingsBillingThresholds'ResetBillingCycleAnchor :: (GHC.Maybe.Maybe GHC.Types.Bool)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionSchedulesResourceDefaultSettingsBillingThresholds' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount_gte" (subscriptionSchedulesResourceDefaultSettingsBillingThresholds'AmountGte obj) : (Data.Aeson..=) "reset_billing_cycle_anchor" (subscriptionSchedulesResourceDefaultSettingsBillingThresholds'ResetBillingCycleAnchor obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount_gte" (subscriptionSchedulesResourceDefaultSettingsBillingThresholds'AmountGte obj) GHC.Base.<> (Data.Aeson..=) "reset_billing_cycle_anchor" (subscriptionSchedulesResourceDefaultSettingsBillingThresholds'ResetBillingCycleAnchor obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionSchedulesResourceDefaultSettingsBillingThresholds' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionSchedulesResourceDefaultSettingsBillingThresholds'" (\obj -> (GHC.Base.pure SubscriptionSchedulesResourceDefaultSettingsBillingThresholds' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount_gte")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "reset_billing_cycle_anchor"))

-- | Defines the enum schema subscription_schedules_resource_default_settingsCollection_method\'
--
-- Either \`charge_automatically\`, or \`send_invoice\`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions.
data SubscriptionSchedulesResourceDefaultSettingsCollectionMethod'
  = SubscriptionSchedulesResourceDefaultSettingsCollectionMethod'EnumOther Data.Aeson.Types.Internal.Value
  | SubscriptionSchedulesResourceDefaultSettingsCollectionMethod'EnumTyped Data.Text.Internal.Text
  | SubscriptionSchedulesResourceDefaultSettingsCollectionMethod'EnumStringChargeAutomatically
  | SubscriptionSchedulesResourceDefaultSettingsCollectionMethod'EnumStringSendInvoice
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON SubscriptionSchedulesResourceDefaultSettingsCollectionMethod' where
  toJSON (SubscriptionSchedulesResourceDefaultSettingsCollectionMethod'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionSchedulesResourceDefaultSettingsCollectionMethod'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (SubscriptionSchedulesResourceDefaultSettingsCollectionMethod'EnumStringChargeAutomatically) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charge_automatically"
  toJSON (SubscriptionSchedulesResourceDefaultSettingsCollectionMethod'EnumStringSendInvoice) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "send_invoice"

instance Data.Aeson.FromJSON SubscriptionSchedulesResourceDefaultSettingsCollectionMethod' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "charge_automatically")
          then SubscriptionSchedulesResourceDefaultSettingsCollectionMethod'EnumStringChargeAutomatically
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "send_invoice")
              then SubscriptionSchedulesResourceDefaultSettingsCollectionMethod'EnumStringSendInvoice
              else SubscriptionSchedulesResourceDefaultSettingsCollectionMethod'EnumOther val
      )

-- | Define the one-of schema subscription_schedules_resource_default_settingsDefault_payment_method\'
--
-- ID of the default payment method for the subscription schedule. If not set, invoices will use the default payment method in the customer\'s invoice settings.
data SubscriptionSchedulesResourceDefaultSettingsDefaultPaymentMethod'Variants
  = SubscriptionSchedulesResourceDefaultSettingsDefaultPaymentMethod'PaymentMethod PaymentMethod
  | SubscriptionSchedulesResourceDefaultSettingsDefaultPaymentMethod'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON SubscriptionSchedulesResourceDefaultSettingsDefaultPaymentMethod'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON SubscriptionSchedulesResourceDefaultSettingsDefaultPaymentMethod'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema subscription_schedules_resource_default_settingsInvoice_settings\'
--
-- The subscription schedule\\\'s default invoice settings.
data SubscriptionSchedulesResourceDefaultSettingsInvoiceSettings'
  = SubscriptionSchedulesResourceDefaultSettingsInvoiceSettings'
      { -- | days_until_due: Number of days within which a customer must pay invoices generated by this subscription schedule. This value will be \`null\` for subscription schedules where \`billing=charge_automatically\`.
        subscriptionSchedulesResourceDefaultSettingsInvoiceSettings'DaysUntilDue :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionSchedulesResourceDefaultSettingsInvoiceSettings' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "days_until_due" (subscriptionSchedulesResourceDefaultSettingsInvoiceSettings'DaysUntilDue obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "days_until_due" (subscriptionSchedulesResourceDefaultSettingsInvoiceSettings'DaysUntilDue obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionSchedulesResourceDefaultSettingsInvoiceSettings' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionSchedulesResourceDefaultSettingsInvoiceSettings'" (\obj -> GHC.Base.pure SubscriptionSchedulesResourceDefaultSettingsInvoiceSettings' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "days_until_due"))

-- | Defines the data type for the schema subscriptions_resource_pending_update
--
-- Pending Updates store the changes pending from a previous update that will be applied
-- to the Subscription upon successful payment.
data SubscriptionsResourcePendingUpdate
  = SubscriptionsResourcePendingUpdate
      { -- | billing_cycle_anchor: If the update is applied, determines the date of the first full invoice, and, for plans with \`month\` or \`year\` intervals, the day of the month for subsequent invoices.
        subscriptionsResourcePendingUpdateBillingCycleAnchor :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | expires_at: The point after which the changes reflected by this update will be discarded and no longer applied.
        subscriptionsResourcePendingUpdateExpiresAt :: GHC.Integer.Type.Integer,
        -- | subscription_items: List of subscription items, each with an attached plan, that will be set if the update is applied.
        subscriptionsResourcePendingUpdateSubscriptionItems :: (GHC.Maybe.Maybe ([] SubscriptionItem)),
        -- | trial_end: Unix timestamp representing the end of the trial period the customer will get before being charged for the first time, if the update is applied.
        subscriptionsResourcePendingUpdateTrialEnd :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | trial_from_plan: Indicates if a plan\'s \`trial_period_days\` should be applied to the subscription. Setting \`trial_end\` per subscription is preferred, and this defaults to \`false\`. Setting this flag to \`true\` together with \`trial_end\` is not allowed.
        subscriptionsResourcePendingUpdateTrialFromPlan :: (GHC.Maybe.Maybe GHC.Types.Bool)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON SubscriptionsResourcePendingUpdate where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "billing_cycle_anchor" (subscriptionsResourcePendingUpdateBillingCycleAnchor obj) : (Data.Aeson..=) "expires_at" (subscriptionsResourcePendingUpdateExpiresAt obj) : (Data.Aeson..=) "subscription_items" (subscriptionsResourcePendingUpdateSubscriptionItems obj) : (Data.Aeson..=) "trial_end" (subscriptionsResourcePendingUpdateTrialEnd obj) : (Data.Aeson..=) "trial_from_plan" (subscriptionsResourcePendingUpdateTrialFromPlan obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "billing_cycle_anchor" (subscriptionsResourcePendingUpdateBillingCycleAnchor obj) GHC.Base.<> ((Data.Aeson..=) "expires_at" (subscriptionsResourcePendingUpdateExpiresAt obj) GHC.Base.<> ((Data.Aeson..=) "subscription_items" (subscriptionsResourcePendingUpdateSubscriptionItems obj) GHC.Base.<> ((Data.Aeson..=) "trial_end" (subscriptionsResourcePendingUpdateTrialEnd obj) GHC.Base.<> (Data.Aeson..=) "trial_from_plan" (subscriptionsResourcePendingUpdateTrialFromPlan obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePendingUpdate where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionsResourcePendingUpdate" (\obj -> ((((GHC.Base.pure SubscriptionsResourcePendingUpdate GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_cycle_anchor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "expires_at")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "subscription_items")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "trial_end")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "trial_from_plan"))

-- | Defines the data type for the schema tax_id
--
-- You can add one or multiple tax IDs to a [customer](https:\/\/stripe.com\/docs\/api\/customers).
-- A customer\'s tax IDs are displayed on invoices and credit notes issued for the customer.
--
-- Related guide: [Customer Tax Identification Numbers](https:\/\/stripe.com\/docs\/billing\/taxes\/tax-ids).
data TaxId
  = TaxId
      { -- | country: Two-letter ISO code representing the country of the tax ID.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        taxIdCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        taxIdCreated :: GHC.Integer.Type.Integer,
        -- | customer: ID of the customer.
        taxIdCustomer :: TaxIdCustomer'Variants,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        taxIdId :: 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.
        taxIdLivemode :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        taxIdObject :: TaxIdObject',
        -- | type: Type of the tax ID, one of \`au_abn\`, \`ca_bn\`, \`ca_qst\`, \`ch_vat\`, \`es_cif\`, \`eu_vat\`, \`hk_br\`, \`in_gst\`, \`jp_cn\`, \`kr_brn\`, \`li_uid\`, \`mx_rfc\`, \`my_itn\`, \`my_sst\`, \`no_vat\`, \`nz_gst\`, \`ru_inn\`, \`sg_uen\`, \`th_vat\`, \`tw_vat\`, \`us_ein\`, or \`za_vat\`. Note that some legacy tax IDs have type \`unknown\`
        taxIdType :: TaxIdType',
        -- | value: Value of the tax ID.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        taxIdValue :: Data.Text.Internal.Text,
        -- | verification:
        taxIdVerification :: TaxIdVerification
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON TaxId where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "country" (taxIdCountry obj) : (Data.Aeson..=) "created" (taxIdCreated obj) : (Data.Aeson..=) "customer" (taxIdCustomer obj) : (Data.Aeson..=) "id" (taxIdId obj) : (Data.Aeson..=) "livemode" (taxIdLivemode obj) : (Data.Aeson..=) "object" (taxIdObject obj) : (Data.Aeson..=) "type" (taxIdType obj) : (Data.Aeson..=) "value" (taxIdValue obj) : (Data.Aeson..=) "verification" (taxIdVerification obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "country" (taxIdCountry obj) GHC.Base.<> ((Data.Aeson..=) "created" (taxIdCreated obj) GHC.Base.<> ((Data.Aeson..=) "customer" (taxIdCustomer obj) GHC.Base.<> ((Data.Aeson..=) "id" (taxIdId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (taxIdLivemode obj) GHC.Base.<> ((Data.Aeson..=) "object" (taxIdObject obj) GHC.Base.<> ((Data.Aeson..=) "type" (taxIdType obj) GHC.Base.<> ((Data.Aeson..=) "value" (taxIdValue obj) GHC.Base.<> (Data.Aeson..=) "verification" (taxIdVerification obj)))))))))

instance Data.Aeson.Types.FromJSON.FromJSON TaxId where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "TaxId" (\obj -> ((((((((GHC.Base.pure TaxId GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "customer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "value")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "verification"))

-- | Define the one-of schema tax_idCustomer\'
--
-- ID of the customer.
data TaxIdCustomer'Variants
  = TaxIdCustomer'Customer Customer
  | TaxIdCustomer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON TaxIdCustomer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON TaxIdCustomer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the enum schema tax_idObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data TaxIdObject'
  = TaxIdObject'EnumOther Data.Aeson.Types.Internal.Value
  | TaxIdObject'EnumTyped Data.Text.Internal.Text
  | TaxIdObject'EnumStringTaxId
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON TaxIdObject' where
  toJSON (TaxIdObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TaxIdObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TaxIdObject'EnumStringTaxId) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_id"

instance Data.Aeson.FromJSON TaxIdObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tax_id")
          then TaxIdObject'EnumStringTaxId
          else TaxIdObject'EnumOther val
      )

-- | Defines the enum schema tax_idType\'
--
-- Type of the tax ID, one of \`au_abn\`, \`ca_bn\`, \`ca_qst\`, \`ch_vat\`, \`es_cif\`, \`eu_vat\`, \`hk_br\`, \`in_gst\`, \`jp_cn\`, \`kr_brn\`, \`li_uid\`, \`mx_rfc\`, \`my_itn\`, \`my_sst\`, \`no_vat\`, \`nz_gst\`, \`ru_inn\`, \`sg_uen\`, \`th_vat\`, \`tw_vat\`, \`us_ein\`, or \`za_vat\`. Note that some legacy tax IDs have type \`unknown\`
data TaxIdType'
  = TaxIdType'EnumOther Data.Aeson.Types.Internal.Value
  | TaxIdType'EnumTyped Data.Text.Internal.Text
  | TaxIdType'EnumStringAuAbn
  | TaxIdType'EnumStringCaBn
  | TaxIdType'EnumStringCaQst
  | TaxIdType'EnumStringChVat
  | TaxIdType'EnumStringEsCif
  | TaxIdType'EnumStringEuVat
  | TaxIdType'EnumStringHkBr
  | TaxIdType'EnumStringInGst
  | TaxIdType'EnumStringJpCn
  | TaxIdType'EnumStringKrBrn
  | TaxIdType'EnumStringLiUid
  | TaxIdType'EnumStringMxRfc
  | TaxIdType'EnumStringMyItn
  | TaxIdType'EnumStringMySst
  | TaxIdType'EnumStringNoVat
  | TaxIdType'EnumStringNzGst
  | TaxIdType'EnumStringRuInn
  | TaxIdType'EnumStringSgUen
  | TaxIdType'EnumStringThVat
  | TaxIdType'EnumStringTwVat
  | TaxIdType'EnumStringUnknown
  | TaxIdType'EnumStringUsEin
  | TaxIdType'EnumStringZaVat
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON TaxIdType' where
  toJSON (TaxIdType'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TaxIdType'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TaxIdType'EnumStringAuAbn) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "au_abn"
  toJSON (TaxIdType'EnumStringCaBn) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ca_bn"
  toJSON (TaxIdType'EnumStringCaQst) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ca_qst"
  toJSON (TaxIdType'EnumStringChVat) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ch_vat"
  toJSON (TaxIdType'EnumStringEsCif) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "es_cif"
  toJSON (TaxIdType'EnumStringEuVat) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eu_vat"
  toJSON (TaxIdType'EnumStringHkBr) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hk_br"
  toJSON (TaxIdType'EnumStringInGst) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "in_gst"
  toJSON (TaxIdType'EnumStringJpCn) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "jp_cn"
  toJSON (TaxIdType'EnumStringKrBrn) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "kr_brn"
  toJSON (TaxIdType'EnumStringLiUid) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "li_uid"
  toJSON (TaxIdType'EnumStringMxRfc) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mx_rfc"
  toJSON (TaxIdType'EnumStringMyItn) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "my_itn"
  toJSON (TaxIdType'EnumStringMySst) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "my_sst"
  toJSON (TaxIdType'EnumStringNoVat) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "no_vat"
  toJSON (TaxIdType'EnumStringNzGst) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nz_gst"
  toJSON (TaxIdType'EnumStringRuInn) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ru_inn"
  toJSON (TaxIdType'EnumStringSgUen) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sg_uen"
  toJSON (TaxIdType'EnumStringThVat) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "th_vat"
  toJSON (TaxIdType'EnumStringTwVat) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tw_vat"
  toJSON (TaxIdType'EnumStringUnknown) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unknown"
  toJSON (TaxIdType'EnumStringUsEin) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "us_ein"
  toJSON (TaxIdType'EnumStringZaVat) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "za_vat"

instance Data.Aeson.FromJSON TaxIdType' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "au_abn")
          then TaxIdType'EnumStringAuAbn
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ca_bn")
              then TaxIdType'EnumStringCaBn
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ca_qst")
                  then TaxIdType'EnumStringCaQst
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ch_vat")
                      then TaxIdType'EnumStringChVat
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "es_cif")
                          then TaxIdType'EnumStringEsCif
                          else
                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "eu_vat")
                              then TaxIdType'EnumStringEuVat
                              else
                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "hk_br")
                                  then TaxIdType'EnumStringHkBr
                                  else
                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "in_gst")
                                      then TaxIdType'EnumStringInGst
                                      else
                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "jp_cn")
                                          then TaxIdType'EnumStringJpCn
                                          else
                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "kr_brn")
                                              then TaxIdType'EnumStringKrBrn
                                              else
                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "li_uid")
                                                  then TaxIdType'EnumStringLiUid
                                                  else
                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "mx_rfc")
                                                      then TaxIdType'EnumStringMxRfc
                                                      else
                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "my_itn")
                                                          then TaxIdType'EnumStringMyItn
                                                          else
                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "my_sst")
                                                              then TaxIdType'EnumStringMySst
                                                              else
                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "no_vat")
                                                                  then TaxIdType'EnumStringNoVat
                                                                  else
                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "nz_gst")
                                                                      then TaxIdType'EnumStringNzGst
                                                                      else
                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "ru_inn")
                                                                          then TaxIdType'EnumStringRuInn
                                                                          else
                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "sg_uen")
                                                                              then TaxIdType'EnumStringSgUen
                                                                              else
                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "th_vat")
                                                                                  then TaxIdType'EnumStringThVat
                                                                                  else
                                                                                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "tw_vat")
                                                                                      then TaxIdType'EnumStringTwVat
                                                                                      else
                                                                                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "unknown")
                                                                                          then TaxIdType'EnumStringUnknown
                                                                                          else
                                                                                            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "us_ein")
                                                                                              then TaxIdType'EnumStringUsEin
                                                                                              else
                                                                                                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "za_vat")
                                                                                                  then TaxIdType'EnumStringZaVat
                                                                                                  else TaxIdType'EnumOther val
      )

-- | Defines the data type for the schema three_d_secure
--
-- Cardholder authentication via 3D Secure is initiated by creating a \`3D Secure\`
-- object. Once the object has been created, you can use it to authenticate the
-- cardholder and create a charge.
data ThreeDSecure
  = ThreeDSecure
      { -- | amount: Amount of the charge that you will create when authentication completes.
        threeDSecureAmount :: GHC.Integer.Type.Integer,
        -- | authenticated: True if the cardholder went through the authentication flow and their bank indicated that authentication succeeded.
        threeDSecureAuthenticated :: GHC.Types.Bool,
        -- | card: You can store multiple cards on a customer in order to charge the customer
        -- later. You can also store multiple debit cards on a recipient in order to
        -- transfer to those cards later.
        --
        -- Related guide: [Card Payments with Sources](https:\/\/stripe.com\/docs\/sources\/cards).
        threeDSecureCard :: Card,
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        threeDSecureCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        threeDSecureCurrency :: Data.Text.Internal.Text,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        threeDSecureId :: 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.
        threeDSecureLivemode :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        threeDSecureObject :: ThreeDSecureObject',
        -- | redirect_url: If present, this is the URL that you should send the cardholder to for authentication. If you are going to use Stripe.js to display the authentication page in an iframe, you should use the value \"_callback\".
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        threeDSecureRedirectUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: Possible values are \`redirect_pending\`, \`succeeded\`, or \`failed\`. When the cardholder can be authenticated, the object starts with status \`redirect_pending\`. When liability will be shifted to the cardholder\'s bank (either because the cardholder was successfully authenticated, or because the bank has not implemented 3D Secure, the object wlil be in status \`succeeded\`. \`failed\` indicates that authentication was attempted unsuccessfully.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        threeDSecureStatus :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON ThreeDSecure where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (threeDSecureAmount obj) : (Data.Aeson..=) "authenticated" (threeDSecureAuthenticated obj) : (Data.Aeson..=) "card" (threeDSecureCard obj) : (Data.Aeson..=) "created" (threeDSecureCreated obj) : (Data.Aeson..=) "currency" (threeDSecureCurrency obj) : (Data.Aeson..=) "id" (threeDSecureId obj) : (Data.Aeson..=) "livemode" (threeDSecureLivemode obj) : (Data.Aeson..=) "object" (threeDSecureObject obj) : (Data.Aeson..=) "redirect_url" (threeDSecureRedirectUrl obj) : (Data.Aeson..=) "status" (threeDSecureStatus obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (threeDSecureAmount obj) GHC.Base.<> ((Data.Aeson..=) "authenticated" (threeDSecureAuthenticated obj) GHC.Base.<> ((Data.Aeson..=) "card" (threeDSecureCard obj) GHC.Base.<> ((Data.Aeson..=) "created" (threeDSecureCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (threeDSecureCurrency obj) GHC.Base.<> ((Data.Aeson..=) "id" (threeDSecureId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (threeDSecureLivemode obj) GHC.Base.<> ((Data.Aeson..=) "object" (threeDSecureObject obj) GHC.Base.<> ((Data.Aeson..=) "redirect_url" (threeDSecureRedirectUrl obj) GHC.Base.<> (Data.Aeson..=) "status" (threeDSecureStatus obj))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON ThreeDSecure where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "ThreeDSecure" (\obj -> (((((((((GHC.Base.pure ThreeDSecure GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "authenticated")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "redirect_url")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status"))

-- | Defines the enum schema three_d_secureObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data ThreeDSecureObject'
  = ThreeDSecureObject'EnumOther Data.Aeson.Types.Internal.Value
  | ThreeDSecureObject'EnumTyped Data.Text.Internal.Text
  | ThreeDSecureObject'EnumStringThreeDSecure
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON ThreeDSecureObject' where
  toJSON (ThreeDSecureObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ThreeDSecureObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (ThreeDSecureObject'EnumStringThreeDSecure) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "three_d_secure"

instance Data.Aeson.FromJSON ThreeDSecureObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "three_d_secure")
          then ThreeDSecureObject'EnumStringThreeDSecure
          else ThreeDSecureObject'EnumOther val
      )

-- | Defines the data type for the schema token
--
-- Tokenization is the process Stripe uses to collect sensitive card or bank
-- account details, or personally identifiable information (PII), directly from
-- your customers in a secure manner. A token representing this information is
-- returned to your server to use. You should use our
-- [recommended payments integrations](https:\/\/stripe.com\/docs\/payments) to perform this process
-- client-side. This ensures that no sensitive card data touches your server,
-- and allows your integration to operate in a PCI-compliant way.
--
-- If you cannot use client-side tokenization, you can also create tokens using
-- the API with either your publishable or secret API key. Keep in mind that if
-- your integration uses this method, you are responsible for any PCI compliance
-- that may be required, and you must keep your secret API key safe. Unlike with
-- client-side tokenization, your customer\'s information is not sent directly to
-- Stripe, so we cannot determine how it is handled or stored.
--
-- Tokens cannot be stored or used more than once. To store card or bank account
-- information for later use, you can create [Customer](https:\/\/stripe.com\/docs\/api\#customers)
-- objects or [Custom accounts](https:\/\/stripe.com\/docs\/api\#external_accounts). Note that
-- [Radar](https:\/\/stripe.com\/docs\/radar), our integrated solution for automatic fraud protection,
-- supports only integrations that use client-side tokenization.
--
-- Related guide: [Accept a payment](https:\/\/stripe.com\/docs\/payments\/accept-a-payment-charges\#web-create-token)
data Token
  = Token
      { -- | bank_account: These bank accounts are payment methods on \`Customer\` objects.
        --
        -- On the other hand [External Accounts](https:\/\/stripe.com\/docs\/api\#external_accounts) are transfer
        -- destinations on \`Account\` objects for [Custom accounts](https:\/\/stripe.com\/docs\/connect\/custom-accounts).
        -- They can be bank accounts or debit cards as well, and are documented in the links above.
        --
        -- Related guide: [Processing ACH & Bank Transfers](https:\/\/stripe.com\/docs\/payments\/ach-bank-transfers).
        tokenBankAccount :: (GHC.Maybe.Maybe BankAccount),
        -- | card: You can store multiple cards on a customer in order to charge the customer
        -- later. You can also store multiple debit cards on a recipient in order to
        -- transfer to those cards later.
        --
        -- Related guide: [Card Payments with Sources](https:\/\/stripe.com\/docs\/sources\/cards).
        tokenCard :: (GHC.Maybe.Maybe Card),
        -- | client_ip: IP address of the client that generated the token.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        tokenClientIp :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        tokenCreated :: GHC.Integer.Type.Integer,
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        tokenId :: 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.
        tokenLivemode :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        tokenObject :: TokenObject',
        -- | type: Type of the token: \`account\`, \`bank_account\`, \`card\`, or \`pii\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        tokenType :: Data.Text.Internal.Text,
        -- | used: Whether this token has already been used (tokens can be used only once).
        tokenUsed :: GHC.Types.Bool
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Token where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "bank_account" (tokenBankAccount obj) : (Data.Aeson..=) "card" (tokenCard obj) : (Data.Aeson..=) "client_ip" (tokenClientIp obj) : (Data.Aeson..=) "created" (tokenCreated obj) : (Data.Aeson..=) "id" (tokenId obj) : (Data.Aeson..=) "livemode" (tokenLivemode obj) : (Data.Aeson..=) "object" (tokenObject obj) : (Data.Aeson..=) "type" (tokenType obj) : (Data.Aeson..=) "used" (tokenUsed obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "bank_account" (tokenBankAccount obj) GHC.Base.<> ((Data.Aeson..=) "card" (tokenCard obj) GHC.Base.<> ((Data.Aeson..=) "client_ip" (tokenClientIp obj) GHC.Base.<> ((Data.Aeson..=) "created" (tokenCreated obj) GHC.Base.<> ((Data.Aeson..=) "id" (tokenId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (tokenLivemode obj) GHC.Base.<> ((Data.Aeson..=) "object" (tokenObject obj) GHC.Base.<> ((Data.Aeson..=) "type" (tokenType obj) GHC.Base.<> (Data.Aeson..=) "used" (tokenUsed obj)))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Token where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Token" (\obj -> ((((((((GHC.Base.pure Token GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "bank_account")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "client_ip")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "used"))

-- | Defines the enum schema tokenObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data TokenObject'
  = TokenObject'EnumOther Data.Aeson.Types.Internal.Value
  | TokenObject'EnumTyped Data.Text.Internal.Text
  | TokenObject'EnumStringToken
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON TokenObject' where
  toJSON (TokenObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TokenObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TokenObject'EnumStringToken) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "token"

instance Data.Aeson.FromJSON TokenObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "token")
          then TokenObject'EnumStringToken
          else TokenObject'EnumOther val
      )

-- | Defines the data type for the schema topup
--
-- To top up your Stripe balance, you create a top-up object. You can retrieve
-- individual top-ups, as well as list all top-ups. Top-ups are identified by a
-- unique, random ID.
--
-- Related guide: [Topping Up your Platform Account](https:\/\/stripe.com\/docs\/connect\/top-ups).
data Topup
  = Topup
      { -- | amount: Amount transferred.
        topupAmount :: GHC.Integer.Type.Integer,
        -- | balance_transaction: ID of the balance transaction that describes the impact of this top-up on your account balance. May not be specified depending on status of top-up.
        topupBalanceTransaction :: (GHC.Maybe.Maybe TopupBalanceTransaction'Variants),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        topupCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        topupCurrency :: Data.Text.Internal.Text,
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        topupDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | expected_availability_date: Date the funds are expected to arrive in your Stripe account for payouts. This factors in delays like weekends or bank holidays. May not be specified depending on status of top-up.
        topupExpectedAvailabilityDate :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | failure_code: Error code explaining reason for top-up failure if available (see [the errors section](https:\/\/stripe.com\/docs\/api\#errors) for a list of codes).
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        topupFailureCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | failure_message: Message to user further explaining reason for top-up failure if available.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        topupFailureMessage :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        topupId :: 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.
        topupLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        topupMetadata :: TopupMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        topupObject :: TopupObject',
        -- | source: \`Source\` objects allow you to accept a variety of payment methods. They
        -- represent a customer\'s payment instrument, and can be used with the Stripe API
        -- just like a \`Card\` object: once chargeable, they can be charged, or can be
        -- attached to customers.
        --
        -- Related guides: [Sources API](https:\/\/stripe.com\/docs\/sources) and [Sources & Customers](https:\/\/stripe.com\/docs\/sources\/customers).
        topupSource :: Source,
        -- | statement_descriptor: Extra information about a top-up. This will appear on your source\'s bank statement. It must contain at least one letter.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        topupStatementDescriptor :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | status: The status of the top-up is either \`canceled\`, \`failed\`, \`pending\`, \`reversed\`, or \`succeeded\`.
        topupStatus :: TopupStatus',
        -- | transfer_group: A string that identifies this top-up as part of a group.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        topupTransferGroup :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Topup where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (topupAmount obj) : (Data.Aeson..=) "balance_transaction" (topupBalanceTransaction obj) : (Data.Aeson..=) "created" (topupCreated obj) : (Data.Aeson..=) "currency" (topupCurrency obj) : (Data.Aeson..=) "description" (topupDescription obj) : (Data.Aeson..=) "expected_availability_date" (topupExpectedAvailabilityDate obj) : (Data.Aeson..=) "failure_code" (topupFailureCode obj) : (Data.Aeson..=) "failure_message" (topupFailureMessage obj) : (Data.Aeson..=) "id" (topupId obj) : (Data.Aeson..=) "livemode" (topupLivemode obj) : (Data.Aeson..=) "metadata" (topupMetadata obj) : (Data.Aeson..=) "object" (topupObject obj) : (Data.Aeson..=) "source" (topupSource obj) : (Data.Aeson..=) "statement_descriptor" (topupStatementDescriptor obj) : (Data.Aeson..=) "status" (topupStatus obj) : (Data.Aeson..=) "transfer_group" (topupTransferGroup obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (topupAmount obj) GHC.Base.<> ((Data.Aeson..=) "balance_transaction" (topupBalanceTransaction obj) GHC.Base.<> ((Data.Aeson..=) "created" (topupCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (topupCurrency obj) GHC.Base.<> ((Data.Aeson..=) "description" (topupDescription obj) GHC.Base.<> ((Data.Aeson..=) "expected_availability_date" (topupExpectedAvailabilityDate obj) GHC.Base.<> ((Data.Aeson..=) "failure_code" (topupFailureCode obj) GHC.Base.<> ((Data.Aeson..=) "failure_message" (topupFailureMessage obj) GHC.Base.<> ((Data.Aeson..=) "id" (topupId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (topupLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (topupMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (topupObject obj) GHC.Base.<> ((Data.Aeson..=) "source" (topupSource obj) GHC.Base.<> ((Data.Aeson..=) "statement_descriptor" (topupStatementDescriptor obj) GHC.Base.<> ((Data.Aeson..=) "status" (topupStatus obj) GHC.Base.<> (Data.Aeson..=) "transfer_group" (topupTransferGroup obj))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Topup where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Topup" (\obj -> (((((((((((((((GHC.Base.pure Topup GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "balance_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "expected_availability_date")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "failure_code")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "failure_message")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "source")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "statement_descriptor")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transfer_group"))

-- | Define the one-of schema topupBalance_transaction\'
--
-- ID of the balance transaction that describes the impact of this top-up on your account balance. May not be specified depending on status of top-up.
data TopupBalanceTransaction'Variants
  = TopupBalanceTransaction'BalanceTransaction BalanceTransaction
  | TopupBalanceTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON TopupBalanceTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON TopupBalanceTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema topupMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data TopupMetadata'
  = TopupMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON TopupMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON TopupMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "TopupMetadata'" (\obj -> GHC.Base.pure TopupMetadata')

-- | Defines the enum schema topupObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data TopupObject'
  = TopupObject'EnumOther Data.Aeson.Types.Internal.Value
  | TopupObject'EnumTyped Data.Text.Internal.Text
  | TopupObject'EnumStringTopup
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON TopupObject' where
  toJSON (TopupObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TopupObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TopupObject'EnumStringTopup) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "topup"

instance Data.Aeson.FromJSON TopupObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "topup")
          then TopupObject'EnumStringTopup
          else TopupObject'EnumOther val
      )

-- | Defines the enum schema topupStatus\'
--
-- The status of the top-up is either \`canceled\`, \`failed\`, \`pending\`, \`reversed\`, or \`succeeded\`.
data TopupStatus'
  = TopupStatus'EnumOther Data.Aeson.Types.Internal.Value
  | TopupStatus'EnumTyped Data.Text.Internal.Text
  | TopupStatus'EnumStringCanceled
  | TopupStatus'EnumStringFailed
  | TopupStatus'EnumStringPending
  | TopupStatus'EnumStringReversed
  | TopupStatus'EnumStringSucceeded
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON TopupStatus' where
  toJSON (TopupStatus'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TopupStatus'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TopupStatus'EnumStringCanceled) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "canceled"
  toJSON (TopupStatus'EnumStringFailed) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "failed"
  toJSON (TopupStatus'EnumStringPending) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pending"
  toJSON (TopupStatus'EnumStringReversed) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "reversed"
  toJSON (TopupStatus'EnumStringSucceeded) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "succeeded"

instance Data.Aeson.FromJSON TopupStatus' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "canceled")
          then TopupStatus'EnumStringCanceled
          else
            if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "failed")
              then TopupStatus'EnumStringFailed
              else
                if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "pending")
                  then TopupStatus'EnumStringPending
                  else
                    if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "reversed")
                      then TopupStatus'EnumStringReversed
                      else
                        if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "succeeded")
                          then TopupStatus'EnumStringSucceeded
                          else TopupStatus'EnumOther val
      )

-- | Defines the data type for the schema transfer
--
-- A \`Transfer\` object is created when you move funds between Stripe accounts as
-- part of Connect.
--
-- Before April 6, 2017, transfers also represented movement of funds from a
-- Stripe account to a card or bank account. This behavior has since been split
-- out into a [Payout](https:\/\/stripe.com\/docs\/api\#payout_object) object, with corresponding payout endpoints. For more
-- information, read about the
-- [transfer\/payout split](https:\/\/stripe.com\/docs\/transfer-payout-split).
--
-- Related guide: [Creating Separate Charges and Transfers](https:\/\/stripe.com\/docs\/connect\/charges-transfers).
data Transfer
  = Transfer
      { -- | amount: Amount in %s to be transferred.
        transferAmount :: GHC.Integer.Type.Integer,
        -- | amount_reversed: Amount in %s reversed (can be less than the amount attribute on the transfer if a partial reversal was issued).
        transferAmountReversed :: GHC.Integer.Type.Integer,
        -- | balance_transaction: Balance transaction that describes the impact of this transfer on your account balance.
        transferBalanceTransaction :: (GHC.Maybe.Maybe TransferBalanceTransaction'Variants),
        -- | created: Time that this record of the transfer was first created.
        transferCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        transferCurrency :: Data.Text.Internal.Text,
        -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        transferDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | destination: ID of the Stripe account the transfer was sent to.
        transferDestination :: (GHC.Maybe.Maybe TransferDestination'Variants),
        -- | destination_payment: If the destination is a Stripe account, this will be the ID of the payment that the destination account received for the transfer.
        transferDestinationPayment :: (GHC.Maybe.Maybe TransferDestinationPayment'Variants),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        transferId :: 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.
        transferLivemode :: GHC.Types.Bool,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        transferMetadata :: TransferMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        transferObject :: TransferObject',
        -- | reversals: A list of reversals that have been applied to the transfer.
        transferReversals :: TransferReversals',
        -- | reversed: Whether the transfer has been fully reversed. If the transfer is only partially reversed, this attribute will still be false.
        transferReversed :: GHC.Types.Bool,
        -- | source_transaction: ID of the charge or payment that was used to fund the transfer. If null, the transfer was funded from the available balance.
        transferSourceTransaction :: (GHC.Maybe.Maybe TransferSourceTransaction'Variants),
        -- | source_type: The source balance this transfer came from. One of \`card\`, \`fpx\`, or \`bank_account\`.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        transferSourceType :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
        -- | transfer_group: A string that identifies this transaction as part of a group. See the [Connect documentation](https:\/\/stripe.com\/docs\/connect\/charges-transfers\#transfer-options) for details.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        transferTransferGroup :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON Transfer where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (transferAmount obj) : (Data.Aeson..=) "amount_reversed" (transferAmountReversed obj) : (Data.Aeson..=) "balance_transaction" (transferBalanceTransaction obj) : (Data.Aeson..=) "created" (transferCreated obj) : (Data.Aeson..=) "currency" (transferCurrency obj) : (Data.Aeson..=) "description" (transferDescription obj) : (Data.Aeson..=) "destination" (transferDestination obj) : (Data.Aeson..=) "destination_payment" (transferDestinationPayment obj) : (Data.Aeson..=) "id" (transferId obj) : (Data.Aeson..=) "livemode" (transferLivemode obj) : (Data.Aeson..=) "metadata" (transferMetadata obj) : (Data.Aeson..=) "object" (transferObject obj) : (Data.Aeson..=) "reversals" (transferReversals obj) : (Data.Aeson..=) "reversed" (transferReversed obj) : (Data.Aeson..=) "source_transaction" (transferSourceTransaction obj) : (Data.Aeson..=) "source_type" (transferSourceType obj) : (Data.Aeson..=) "transfer_group" (transferTransferGroup obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (transferAmount obj) GHC.Base.<> ((Data.Aeson..=) "amount_reversed" (transferAmountReversed obj) GHC.Base.<> ((Data.Aeson..=) "balance_transaction" (transferBalanceTransaction obj) GHC.Base.<> ((Data.Aeson..=) "created" (transferCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (transferCurrency obj) GHC.Base.<> ((Data.Aeson..=) "description" (transferDescription obj) GHC.Base.<> ((Data.Aeson..=) "destination" (transferDestination obj) GHC.Base.<> ((Data.Aeson..=) "destination_payment" (transferDestinationPayment obj) GHC.Base.<> ((Data.Aeson..=) "id" (transferId obj) GHC.Base.<> ((Data.Aeson..=) "livemode" (transferLivemode obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (transferMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (transferObject obj) GHC.Base.<> ((Data.Aeson..=) "reversals" (transferReversals obj) GHC.Base.<> ((Data.Aeson..=) "reversed" (transferReversed obj) GHC.Base.<> ((Data.Aeson..=) "source_transaction" (transferSourceTransaction obj) GHC.Base.<> ((Data.Aeson..=) "source_type" (transferSourceType obj) GHC.Base.<> (Data.Aeson..=) "transfer_group" (transferTransferGroup obj)))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Transfer where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "Transfer" (\obj -> ((((((((((((((((GHC.Base.pure Transfer GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount_reversed")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "balance_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "destination")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "destination_payment")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "reversals")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "reversed")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transfer_group"))

-- | Define the one-of schema transferBalance_transaction\'
--
-- Balance transaction that describes the impact of this transfer on your account balance.
data TransferBalanceTransaction'Variants
  = TransferBalanceTransaction'BalanceTransaction BalanceTransaction
  | TransferBalanceTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON TransferBalanceTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON TransferBalanceTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema transferDestination\'
--
-- ID of the Stripe account the transfer was sent to.
data TransferDestination'Variants
  = TransferDestination'Account Account
  | TransferDestination'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON TransferDestination'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON TransferDestination'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema transferDestination_payment\'
--
-- If the destination is a Stripe account, this will be the ID of the payment that the destination account received for the transfer.
data TransferDestinationPayment'Variants
  = TransferDestinationPayment'Charge Charge
  | TransferDestinationPayment'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON TransferDestinationPayment'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON TransferDestinationPayment'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema transferMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data TransferMetadata'
  = TransferMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON TransferMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON TransferMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "TransferMetadata'" (\obj -> GHC.Base.pure TransferMetadata')

-- | Defines the enum schema transferObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data TransferObject'
  = TransferObject'EnumOther Data.Aeson.Types.Internal.Value
  | TransferObject'EnumTyped Data.Text.Internal.Text
  | TransferObject'EnumStringTransfer
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON TransferObject' where
  toJSON (TransferObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TransferObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TransferObject'EnumStringTransfer) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transfer"

instance Data.Aeson.FromJSON TransferObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transfer")
          then TransferObject'EnumStringTransfer
          else TransferObject'EnumOther val
      )

-- | Defines the data type for the schema transferReversals\'
--
-- A list of reversals that have been applied to the transfer.
data TransferReversals'
  = TransferReversals'
      { -- | data: Details about each object.
        transferReversals'Data :: ([] TransferReversal),
        -- | has_more: True if this list has another page of items after this one that can be fetched.
        transferReversals'HasMore :: GHC.Types.Bool,
        -- | object: String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
        transferReversals'Object :: TransferReversals'Object',
        -- | url: The URL where this list can be accessed.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        transferReversals'Url :: Data.Text.Internal.Text
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON TransferReversals' where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "data" (transferReversals'Data obj) : (Data.Aeson..=) "has_more" (transferReversals'HasMore obj) : (Data.Aeson..=) "object" (transferReversals'Object obj) : (Data.Aeson..=) "url" (transferReversals'Url obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "data" (transferReversals'Data obj) GHC.Base.<> ((Data.Aeson..=) "has_more" (transferReversals'HasMore obj) GHC.Base.<> ((Data.Aeson..=) "object" (transferReversals'Object obj) GHC.Base.<> (Data.Aeson..=) "url" (transferReversals'Url obj))))

instance Data.Aeson.Types.FromJSON.FromJSON TransferReversals' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "TransferReversals'" (\obj -> (((GHC.Base.pure TransferReversals' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url"))

-- | Defines the enum schema transferReversals\'Object\'
--
-- String representing the object\'s type. Objects of the same type share the same value. Always has the value \`list\`.
data TransferReversals'Object'
  = TransferReversals'Object'EnumOther Data.Aeson.Types.Internal.Value
  | TransferReversals'Object'EnumTyped Data.Text.Internal.Text
  | TransferReversals'Object'EnumStringList
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON TransferReversals'Object' where
  toJSON (TransferReversals'Object'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TransferReversals'Object'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TransferReversals'Object'EnumStringList) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list"

instance Data.Aeson.FromJSON TransferReversals'Object' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "list")
          then TransferReversals'Object'EnumStringList
          else TransferReversals'Object'EnumOther val
      )

-- | Define the one-of schema transferSource_transaction\'
--
-- ID of the charge or payment that was used to fund the transfer. If null, the transfer was funded from the available balance.
data TransferSourceTransaction'Variants
  = TransferSourceTransaction'Charge Charge
  | TransferSourceTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON TransferSourceTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON TransferSourceTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema transfer_data
data TransferData
  = TransferData
      { -- | amount: Amount intended to be collected by this PaymentIntent. A positive integer representing how much to charge in the [smallest currency unit](https:\/\/stripe.com\/docs\/currencies\#zero-decimal) (e.g., 100 cents to charge \$1.00 or 100 to charge ¥100, a zero-decimal currency). The minimum amount is \$0.50 US or [equivalent in charge currency](https:\/\/stripe.com\/docs\/currencies\#minimum-and-maximum-charge-amounts). The amount value supports up to eight digits (e.g., a value of 99999999 for a USD charge of \$999,999.99).
        transferDataAmount :: (GHC.Maybe.Maybe GHC.Integer.Type.Integer),
        -- | destination: The account (if any) the payment will be attributed to for tax
        -- reporting, and where funds from the payment will be transferred to upon
        -- payment success.
        transferDataDestination :: TransferDataDestination'Variants
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON TransferData where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (transferDataAmount obj) : (Data.Aeson..=) "destination" (transferDataDestination obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (transferDataAmount obj) GHC.Base.<> (Data.Aeson..=) "destination" (transferDataDestination obj))

instance Data.Aeson.Types.FromJSON.FromJSON TransferData where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "TransferData" (\obj -> (GHC.Base.pure TransferData GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "destination"))

-- | Define the one-of schema transfer_dataDestination\'
--
-- The account (if any) the payment will be attributed to for tax
-- reporting, and where funds from the payment will be transferred to upon
-- payment success.
data TransferDataDestination'Variants
  = TransferDataDestination'Account Account
  | TransferDataDestination'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON TransferDataDestination'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON TransferDataDestination'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema transfer_reversal
--
-- [Stripe Connect](https:\/\/stripe.com\/docs\/connect) platforms can reverse transfers made to a
-- connected account, either entirely or partially, and can also specify whether
-- to refund any related application fees. Transfer reversals add to the
-- platform\'s balance and subtract from the destination account\'s balance.
--
-- Reversing a transfer that was made for a [destination
-- charge](\/docs\/connect\/destination-charges) is allowed only up to the amount of
-- the charge. It is possible to reverse a
-- [transfer_group](https:\/\/stripe.com\/docs\/connect\/charges-transfers\#transfer-options)
-- transfer only if the destination account has enough balance to cover the
-- reversal.
--
-- Related guide: [Reversing Transfers](https:\/\/stripe.com\/docs\/connect\/charges-transfers\#reversing-transfers).
data TransferReversal
  = TransferReversal
      { -- | amount: Amount, in %s.
        transferReversalAmount :: GHC.Integer.Type.Integer,
        -- | balance_transaction: Balance transaction that describes the impact on your account balance.
        transferReversalBalanceTransaction :: (GHC.Maybe.Maybe TransferReversalBalanceTransaction'Variants),
        -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
        transferReversalCreated :: GHC.Integer.Type.Integer,
        -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
        transferReversalCurrency :: Data.Text.Internal.Text,
        -- | destination_payment_refund: Linked payment refund for the transfer reversal.
        transferReversalDestinationPaymentRefund :: (GHC.Maybe.Maybe TransferReversalDestinationPaymentRefund'Variants),
        -- | id: Unique identifier for the object.
        --
        -- Constraints:
        --
        -- * Maximum length of 5000
        transferReversalId :: Data.Text.Internal.Text,
        -- | metadata: Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
        transferReversalMetadata :: TransferReversalMetadata',
        -- | object: String representing the object\'s type. Objects of the same type share the same value.
        transferReversalObject :: TransferReversalObject',
        -- | source_refund: ID of the refund responsible for the transfer reversal.
        transferReversalSourceRefund :: (GHC.Maybe.Maybe TransferReversalSourceRefund'Variants),
        -- | transfer: ID of the transfer that was reversed.
        transferReversalTransfer :: TransferReversalTransfer'Variants
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON TransferReversal where
  toJSON obj = Data.Aeson.object ((Data.Aeson..=) "amount" (transferReversalAmount obj) : (Data.Aeson..=) "balance_transaction" (transferReversalBalanceTransaction obj) : (Data.Aeson..=) "created" (transferReversalCreated obj) : (Data.Aeson..=) "currency" (transferReversalCurrency obj) : (Data.Aeson..=) "destination_payment_refund" (transferReversalDestinationPaymentRefund obj) : (Data.Aeson..=) "id" (transferReversalId obj) : (Data.Aeson..=) "metadata" (transferReversalMetadata obj) : (Data.Aeson..=) "object" (transferReversalObject obj) : (Data.Aeson..=) "source_refund" (transferReversalSourceRefund obj) : (Data.Aeson..=) "transfer" (transferReversalTransfer obj) : [])
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "amount" (transferReversalAmount obj) GHC.Base.<> ((Data.Aeson..=) "balance_transaction" (transferReversalBalanceTransaction obj) GHC.Base.<> ((Data.Aeson..=) "created" (transferReversalCreated obj) GHC.Base.<> ((Data.Aeson..=) "currency" (transferReversalCurrency obj) GHC.Base.<> ((Data.Aeson..=) "destination_payment_refund" (transferReversalDestinationPaymentRefund obj) GHC.Base.<> ((Data.Aeson..=) "id" (transferReversalId obj) GHC.Base.<> ((Data.Aeson..=) "metadata" (transferReversalMetadata obj) GHC.Base.<> ((Data.Aeson..=) "object" (transferReversalObject obj) GHC.Base.<> ((Data.Aeson..=) "source_refund" (transferReversalSourceRefund obj) GHC.Base.<> (Data.Aeson..=) "transfer" (transferReversalTransfer obj))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON TransferReversal where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "TransferReversal" (\obj -> (((((((((GHC.Base.pure TransferReversal GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "balance_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "destination_payment_refund")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "object")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source_refund")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "transfer"))

-- | Define the one-of schema transfer_reversalBalance_transaction\'
--
-- Balance transaction that describes the impact on your account balance.
data TransferReversalBalanceTransaction'Variants
  = TransferReversalBalanceTransaction'BalanceTransaction BalanceTransaction
  | TransferReversalBalanceTransaction'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON TransferReversalBalanceTransaction'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON TransferReversalBalanceTransaction'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema transfer_reversalDestination_payment_refund\'
--
-- Linked payment refund for the transfer reversal.
data TransferReversalDestinationPaymentRefund'Variants
  = TransferReversalDestinationPaymentRefund'Refund Refund
  | TransferReversalDestinationPaymentRefund'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON TransferReversalDestinationPaymentRefund'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON TransferReversalDestinationPaymentRefund'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Defines the data type for the schema transfer_reversalMetadata\'
--
-- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
data TransferReversalMetadata'
  = TransferReversalMetadata'
      {
      }
  deriving
    ( GHC.Show.Show,
      GHC.Classes.Eq
    )

instance Data.Aeson.ToJSON TransferReversalMetadata' where
  toJSON obj = Data.Aeson.object []
  toEncoding obj = Data.Aeson.pairs ((Data.Aeson..=) "string" ("string" :: GHC.Base.String))

instance Data.Aeson.Types.FromJSON.FromJSON TransferReversalMetadata' where
  parseJSON = Data.Aeson.Types.FromJSON.withObject "TransferReversalMetadata'" (\obj -> GHC.Base.pure TransferReversalMetadata')

-- | Defines the enum schema transfer_reversalObject\'
--
-- String representing the object\'s type. Objects of the same type share the same value.
data TransferReversalObject'
  = TransferReversalObject'EnumOther Data.Aeson.Types.Internal.Value
  | TransferReversalObject'EnumTyped Data.Text.Internal.Text
  | TransferReversalObject'EnumStringTransferReversal
  deriving (GHC.Show.Show, GHC.Classes.Eq)

instance Data.Aeson.ToJSON TransferReversalObject' where
  toJSON (TransferReversalObject'EnumOther patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TransferReversalObject'EnumTyped patternName) = Data.Aeson.Types.ToJSON.toJSON patternName
  toJSON (TransferReversalObject'EnumStringTransferReversal) = Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transfer_reversal"

instance Data.Aeson.FromJSON TransferReversalObject' where
  parseJSON val =
    GHC.Base.pure
      ( if val GHC.Classes.== (Data.Aeson.Types.Internal.String GHC.Base.$ Data.Text.pack "transfer_reversal")
          then TransferReversalObject'EnumStringTransferReversal
          else TransferReversalObject'EnumOther val
      )

-- | Define the one-of schema transfer_reversalSource_refund\'
--
-- ID of the refund responsible for the transfer reversal.
data TransferReversalSourceRefund'Variants
  = TransferReversalSourceRefund'Refund Refund
  | TransferReversalSourceRefund'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON TransferReversalSourceRefund'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON TransferReversalSourceRefund'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

-- | Define the one-of schema transfer_reversalTransfer\'
--
-- ID of the transfer that was reversed.
data TransferReversalTransfer'Variants
  = TransferReversalTransfer'Transfer Transfer
  | TransferReversalTransfer'Text Data.Text.Internal.Text
  deriving (GHC.Show.Show, GHC.Classes.Eq, GHC.Generics.Generic)

instance Data.Aeson.ToJSON TransferReversalTransfer'Variants where
  toJSON = Data.Aeson.Types.ToJSON.genericToJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}

instance Data.Aeson.FromJSON TransferReversalTransfer'Variants where
  parseJSON = Data.Aeson.Types.FromJSON.genericParseJSON Data.Aeson.Types.Internal.defaultOptions {Data.Aeson.Types.Internal.sumEncoding = Data.Aeson.Types.Internal.UntaggedValue}