{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}

-- | Contains manually written helper code to ease the use of 'NotificationEventData'
module StripeAPI.Types.NotificationEventData.Extra
  ( getEventData,
    EventData (..),
  )
where

import qualified Data.Aeson as Aeson
import Data.Text (Text)
import StripeAPI.Types.Account
import StripeAPI.Types.Application
import StripeAPI.Types.ApplicationFee
import StripeAPI.Types.Balance
import StripeAPI.Types.Capability
import StripeAPI.Types.Charge
import StripeAPI.Types.Checkout_Session
import StripeAPI.Types.Coupon
import StripeAPI.Types.CreditNote
import StripeAPI.Types.Customer
import StripeAPI.Types.Discount
import StripeAPI.Types.Dispute
import StripeAPI.Types.Event
import StripeAPI.Types.ExternalAccount
import StripeAPI.Types.FeeRefund
import StripeAPI.Types.File
import StripeAPI.Types.Invoice
import StripeAPI.Types.Invoiceitem
import StripeAPI.Types.Issuing_Authorization
import StripeAPI.Types.Issuing_Card
import StripeAPI.Types.Issuing_Cardholder
import StripeAPI.Types.Issuing_Dispute
import StripeAPI.Types.Issuing_Transaction
import StripeAPI.Types.Mandate
import StripeAPI.Types.NotificationEventData
import StripeAPI.Types.Order
import StripeAPI.Types.OrderReturn
import StripeAPI.Types.PaymentIntent
import StripeAPI.Types.PaymentMethod
import StripeAPI.Types.Payout
import StripeAPI.Types.Person
import StripeAPI.Types.Plan
import StripeAPI.Types.Product
import StripeAPI.Types.Radar_EarlyFraudWarning
import StripeAPI.Types.Recipient
import StripeAPI.Types.Refund
import StripeAPI.Types.Reporting_ReportRun
import StripeAPI.Types.Reporting_ReportType
import StripeAPI.Types.Review
import StripeAPI.Types.ScheduledQueryRun
import StripeAPI.Types.SetupIntent
import StripeAPI.Types.Sku
import StripeAPI.Types.Source
import StripeAPI.Types.SourceTransaction
import StripeAPI.Types.Subscription
import StripeAPI.Types.SubscriptionSchedule
import StripeAPI.Types.TaxId
import StripeAPI.Types.TaxRate
import StripeAPI.Types.Topup
import StripeAPI.Types.Transfer

-- | Parse the 'NotificationEventData' of an 'Event' according to the 'eventType'
getEventData :: Event -> EventData
getEventData :: Event -> EventData
getEventData Event
e = case Event -> Text
eventType Event
e of
  Text
"account.updated" -> (Account -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Account -> EventData
AccountUpdatedEvent Event
e
  Text
"account.application.authorized" -> (Application -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Application -> EventData
AccountApplicationAuthorizedEvent Event
e
  Text
"account.application.deauthorized" -> (Application -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Application -> EventData
AccountApplicationDeauthorizedEvent Event
e
  Text
"account.external_account.created" -> (ExternalAccount -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData ExternalAccount -> EventData
AccountExternalAccountCreatedEvent Event
e
  Text
"account.external_account.deleted" -> (ExternalAccount -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData ExternalAccount -> EventData
AccountExternalAccountDeletedEvent Event
e
  Text
"account.external_account.updated" -> (ExternalAccount -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData ExternalAccount -> EventData
AccountExternalAccountUpdatedEvent Event
e
  Text
"application_fee.created" -> (ApplicationFee -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData ApplicationFee -> EventData
ApplicationFeeCreatedEvent Event
e
  Text
"application_fee.refunded" -> (ApplicationFee -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData ApplicationFee -> EventData
ApplicationFeeRefundedEvent Event
e
  Text
"application_fee.refund.updated" -> (FeeRefund -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData FeeRefund -> EventData
ApplicationFeeRefundUpdatedEvent Event
e
  Text
"balance.available" -> (Balance -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Balance -> EventData
BalanceAvailableEvent Event
e
  Text
"capability.updated" -> (Capability -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Capability -> EventData
CapabilityUpdatedEvent Event
e
  Text
"charge.captured" -> (Charge -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Charge -> EventData
ChargeCapturedEvent Event
e
  Text
"charge.expired" -> (Charge -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Charge -> EventData
ChargeExpiredEvent Event
e
  Text
"charge.failed" -> (Charge -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Charge -> EventData
ChargeFailedEvent Event
e
  Text
"charge.pending" -> (Charge -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Charge -> EventData
ChargePendingEvent Event
e
  Text
"charge.refunded" -> (Charge -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Charge -> EventData
ChargeRefundedEvent Event
e
  Text
"charge.succeeded" -> (Charge -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Charge -> EventData
ChargeSucceededEvent Event
e
  Text
"charge.updated" -> (Charge -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Charge -> EventData
ChargeUpdatedEvent Event
e
  Text
"charge.dispute.closed" -> (Dispute -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Dispute -> EventData
ChargeDisputeClosedEvent Event
e
  Text
"charge.dispute.created" -> (Dispute -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Dispute -> EventData
ChargeDisputeCreatedEvent Event
e
  Text
"charge.dispute.funds_reinstated" -> (Dispute -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Dispute -> EventData
ChargeDisputeFundsReinstatedEvent Event
e
  Text
"charge.dispute.funds_withdrawn" -> (Dispute -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Dispute -> EventData
ChargeDisputeFundsWithdrawnEvent Event
e
  Text
"charge.dispute.updated" -> (Dispute -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Dispute -> EventData
ChargeDisputeUpdatedEvent Event
e
  Text
"charge.refund.updated" -> (Refund -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Refund -> EventData
ChargeRefundUpdatedEvent Event
e
  Text
"checkout.session.async_payment_failed" -> (Checkout'session -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Checkout'session -> EventData
CheckoutSessionAsyncPaymentFailedEvent Event
e
  Text
"checkout.session.async_payment_succeeded" -> (Checkout'session -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Checkout'session -> EventData
CheckoutSessionAsyncPaymentSucceededEvent Event
e
  Text
"checkout.session.completed" -> (Checkout'session -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Checkout'session -> EventData
CheckoutSessionCompletedEvent Event
e
  Text
"coupon.created" -> (Coupon -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Coupon -> EventData
CouponCreatedEvent Event
e
  Text
"coupon.deleted" -> (Coupon -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Coupon -> EventData
CouponDeletedEvent Event
e
  Text
"coupon.updated" -> (Coupon -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Coupon -> EventData
CouponUpdatedEvent Event
e
  Text
"credit_note.created" -> (CreditNote -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData CreditNote -> EventData
CreditNoteCreatedEvent Event
e
  Text
"credit_note.updated" -> (CreditNote -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData CreditNote -> EventData
CreditNoteUpdatedEvent Event
e
  Text
"credit_note.voided" -> (CreditNote -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData CreditNote -> EventData
CreditNoteVoidedEvent Event
e
  Text
"customer.created" -> (Customer -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Customer -> EventData
CustomerCreatedEvent Event
e
  Text
"customer.deleted" -> (Customer -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Customer -> EventData
CustomerDeletedEvent Event
e
  Text
"customer.updated" -> (Customer -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Customer -> EventData
CustomerUpdatedEvent Event
e
  Text
"customer.discount.created" -> (Discount -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Discount -> EventData
CustomerDiscountCreatedEvent Event
e
  Text
"customer.discount.deleted" -> (Discount -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Discount -> EventData
CustomerDiscountDeletedEvent Event
e
  Text
"customer.discount.updated" -> (Discount -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Discount -> EventData
CustomerDiscountUpdatedEvent Event
e
  Text
"customer.source.created" -> (Source -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Source -> EventData
CustomerSourceCreatedEvent Event
e
  Text
"customer.source.deleted" -> (Source -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Source -> EventData
CustomerSourceDeletedEvent Event
e
  Text
"customer.source.expiring" -> (Source -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Source -> EventData
CustomerSourceExpiringEvent Event
e
  Text
"customer.source.updated" -> (Source -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Source -> EventData
CustomerSourceUpdatedEvent Event
e
  Text
"customer.subscription.created" -> (Subscription -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Subscription -> EventData
CustomerSubscriptionCreatedEvent Event
e
  Text
"customer.subscription.deleted" -> (Subscription -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Subscription -> EventData
CustomerSubscriptionDeletedEvent Event
e
  Text
"customer.subscription.pending_update_applied" -> (Subscription -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Subscription -> EventData
CustomerSubscriptionPendingUpdateAppliedEvent Event
e
  Text
"customer.subscription.pending_update_expired" -> (Subscription -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Subscription -> EventData
CustomerSubscriptionPendingUpdateExpiredEvent Event
e
  Text
"customer.subscription.trial_will_end" -> (Subscription -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Subscription -> EventData
CustomerSubscriptionTrialWillEndEvent Event
e
  Text
"customer.subscription.updated" -> (Subscription -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Subscription -> EventData
CustomerSubscriptionUpdatedEvent Event
e
  Text
"customer.tax_id.created" -> (TaxId -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData TaxId -> EventData
CustomerTaxIdCreatedEvent Event
e
  Text
"customer.tax_id.deleted" -> (TaxId -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData TaxId -> EventData
CustomerTaxIdDeletedEvent Event
e
  Text
"customer.tax_id.updated" -> (TaxId -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData TaxId -> EventData
CustomerTaxIdUpdatedEvent Event
e
  Text
"file.created" -> (File -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData File -> EventData
FileCreatedEvent Event
e
  Text
"invoice.created" -> (Invoice -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoice -> EventData
InvoiceCreatedEvent Event
e
  Text
"invoice.deleted" -> (Invoice -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoice -> EventData
InvoiceDeletedEvent Event
e
  Text
"invoice.finalized" -> (Invoice -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoice -> EventData
InvoiceFinalizedEvent Event
e
  Text
"invoice.marked_uncollectible" -> (Invoice -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoice -> EventData
InvoiceMarkedUncollectibleEvent Event
e
  Text
"invoice.paid" -> (Invoice -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoice -> EventData
InvoicePaidEvent Event
e
  Text
"invoice.payment_action_required" -> (Invoice -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoice -> EventData
InvoicePaymentActionRequiredEvent Event
e
  Text
"invoice.payment_failed" -> (Invoice -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoice -> EventData
InvoicePaymentFailedEvent Event
e
  Text
"invoice.payment_succeeded" -> (Invoice -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoice -> EventData
InvoicePaymentSucceededEvent Event
e
  Text
"invoice.sent" -> (Invoice -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoice -> EventData
InvoiceSentEvent Event
e
  Text
"invoice.upcoming" -> (Invoice -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoice -> EventData
InvoiceUpcomingEvent Event
e
  Text
"invoice.updated" -> (Invoice -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoice -> EventData
InvoiceUpdatedEvent Event
e
  Text
"invoice.voided" -> (Invoice -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoice -> EventData
InvoiceVoidedEvent Event
e
  Text
"invoiceitem.created" -> (Invoiceitem -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoiceitem -> EventData
InvoiceitemCreatedEvent Event
e
  Text
"invoiceitem.deleted" -> (Invoiceitem -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoiceitem -> EventData
InvoiceitemDeletedEvent Event
e
  Text
"invoiceitem.updated" -> (Invoiceitem -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Invoiceitem -> EventData
InvoiceitemUpdatedEvent Event
e
  Text
"issuing_authorization.created" -> (Issuing'authorization -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Issuing'authorization -> EventData
IssuingAuthorizationCreatedEvent Event
e
  Text
"issuing_authorization.request" -> (Issuing'authorization -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Issuing'authorization -> EventData
IssuingAuthorizationRequestEvent Event
e
  Text
"issuing_authorization.updated" -> (Issuing'authorization -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Issuing'authorization -> EventData
IssuingAuthorizationUpdatedEvent Event
e
  Text
"issuing_card.created" -> (Issuing'card -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Issuing'card -> EventData
IssuingCardCreatedEvent Event
e
  Text
"issuing_card.updated" -> (Issuing'card -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Issuing'card -> EventData
IssuingCardUpdatedEvent Event
e
  Text
"issuing_cardholder.created" -> (Issuing'cardholder -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Issuing'cardholder -> EventData
IssuingCardholderCreatedEvent Event
e
  Text
"issuing_cardholder.updated" -> (Issuing'cardholder -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Issuing'cardholder -> EventData
IssuingCardholderUpdatedEvent Event
e
  Text
"issuing_dispute.created" -> (Issuing'dispute -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Issuing'dispute -> EventData
IssuingDisputeCreatedEvent Event
e
  Text
"issuing_dispute.funds_reinstated" -> (Issuing'dispute -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Issuing'dispute -> EventData
IssuingDisputeFundsReinstatedEvent Event
e
  Text
"issuing_dispute.updated" -> (Issuing'dispute -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Issuing'dispute -> EventData
IssuingDisputeUpdatedEvent Event
e
  Text
"issuing_transaction.created" -> (Issuing'transaction -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Issuing'transaction -> EventData
IssuingTransactionCreatedEvent Event
e
  Text
"issuing_transaction.updated" -> (Issuing'transaction -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Issuing'transaction -> EventData
IssuingTransactionUpdatedEvent Event
e
  Text
"mandate.updated" -> (Mandate -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Mandate -> EventData
MandateUpdatedEvent Event
e
  Text
"order.created" -> (Order -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Order -> EventData
OrderCreatedEvent Event
e
  Text
"order.payment_failed" -> (Order -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Order -> EventData
OrderPaymentFailedEvent Event
e
  Text
"order.payment_succeeded" -> (Order -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Order -> EventData
OrderPaymentSucceededEvent Event
e
  Text
"order.updated" -> (Order -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Order -> EventData
OrderUpdatedEvent Event
e
  Text
"order_return.created" -> (OrderReturn -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData OrderReturn -> EventData
OrderReturnCreatedEvent Event
e
  Text
"payment_intent.amount_capturable_updated" -> (PaymentIntent -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData PaymentIntent -> EventData
PaymentIntentAmountCapturableUpdatedEvent Event
e
  Text
"payment_intent.canceled" -> (PaymentIntent -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData PaymentIntent -> EventData
PaymentIntentCanceledEvent Event
e
  Text
"payment_intent.created" -> (PaymentIntent -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData PaymentIntent -> EventData
PaymentIntentCreatedEvent Event
e
  Text
"payment_intent.payment_failed" -> (PaymentIntent -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData PaymentIntent -> EventData
PaymentIntentPaymentFailedEvent Event
e
  Text
"payment_intent.processing" -> (PaymentIntent -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData PaymentIntent -> EventData
PaymentIntentProcessingEvent Event
e
  Text
"payment_intent.succeeded" -> (PaymentIntent -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData PaymentIntent -> EventData
PaymentIntentSucceededEvent Event
e
  Text
"payment_method.attached" -> (PaymentMethod -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData PaymentMethod -> EventData
PaymentMethodAttachedEvent Event
e
  Text
"payment_method.card_automatically_updated" -> (PaymentMethod -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData PaymentMethod -> EventData
PaymentMethodCardAutomaticallyUpdatedEvent Event
e
  Text
"payment_method.detached" -> (PaymentMethod -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData PaymentMethod -> EventData
PaymentMethodDetachedEvent Event
e
  Text
"payment_method.updated" -> (PaymentMethod -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData PaymentMethod -> EventData
PaymentMethodUpdatedEvent Event
e
  Text
"payout.canceled" -> (Payout -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Payout -> EventData
PayoutCanceledEvent Event
e
  Text
"payout.created" -> (Payout -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Payout -> EventData
PayoutCreatedEvent Event
e
  Text
"payout.failed" -> (Payout -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Payout -> EventData
PayoutFailedEvent Event
e
  Text
"payout.paid" -> (Payout -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Payout -> EventData
PayoutPaidEvent Event
e
  Text
"payout.updated" -> (Payout -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Payout -> EventData
PayoutUpdatedEvent Event
e
  Text
"person.created" -> (Person -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Person -> EventData
PersonCreatedEvent Event
e
  Text
"person.deleted" -> (Person -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Person -> EventData
PersonDeletedEvent Event
e
  Text
"person.updated" -> (Person -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Person -> EventData
PersonUpdatedEvent Event
e
  Text
"plan.created" -> (Plan -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Plan -> EventData
PlanCreatedEvent Event
e
  Text
"plan.deleted" -> (Plan -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Plan -> EventData
PlanDeletedEvent Event
e
  Text
"plan.updated" -> (Plan -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Plan -> EventData
PlanUpdatedEvent Event
e
  Text
"price.created" -> (Object -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Object -> EventData
PriceCreatedEvent Event
e
  Text
"price.deleted" -> (Object -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Object -> EventData
PriceDeletedEvent Event
e
  Text
"price.updated" -> (Object -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Object -> EventData
PriceUpdatedEvent Event
e
  Text
"product.created" -> (Product -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Product -> EventData
ProductCreatedEvent Event
e
  Text
"product.deleted" -> (Product -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Product -> EventData
ProductDeletedEvent Event
e
  Text
"product.updated" -> (Product -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Product -> EventData
ProductUpdatedEvent Event
e
  Text
"radar.early_fraud_warning.created" -> (Radar'earlyFraudWarning -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Radar'earlyFraudWarning -> EventData
RadarEarlyFraudWarningCreatedEvent Event
e
  Text
"radar.early_fraud_warning.updated" -> (Radar'earlyFraudWarning -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Radar'earlyFraudWarning -> EventData
RadarEarlyFraudWarningUpdatedEvent Event
e
  Text
"recipient.created" -> (Recipient -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Recipient -> EventData
RecipientCreatedEvent Event
e
  Text
"recipient.deleted" -> (Recipient -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Recipient -> EventData
RecipientDeletedEvent Event
e
  Text
"recipient.updated" -> (Recipient -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Recipient -> EventData
RecipientUpdatedEvent Event
e
  Text
"reporting.report_run.failed" -> (Reporting'reportRun -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Reporting'reportRun -> EventData
ReportingReportRunFailedEvent Event
e
  Text
"reporting.report_run.succeeded" -> (Reporting'reportRun -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Reporting'reportRun -> EventData
ReportingReportRunSucceededEvent Event
e
  Text
"reporting.report_type.updated" -> (Reporting'reportType -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Reporting'reportType -> EventData
ReportingReportTypeUpdatedEvent Event
e
  Text
"review.closed" -> (Review -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Review -> EventData
ReviewClosedEvent Event
e
  Text
"review.opened" -> (Review -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Review -> EventData
ReviewOpenedEvent Event
e
  Text
"setup_intent.canceled" -> (SetupIntent -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData SetupIntent -> EventData
SetupIntentCanceledEvent Event
e
  Text
"setup_intent.created" -> (SetupIntent -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData SetupIntent -> EventData
SetupIntentCreatedEvent Event
e
  Text
"setup_intent.setup_failed" -> (SetupIntent -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData SetupIntent -> EventData
SetupIntentSetupFailedEvent Event
e
  Text
"setup_intent.succeeded" -> (SetupIntent -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData SetupIntent -> EventData
SetupIntentSucceededEvent Event
e
  Text
"sigma.scheduled_query_run.created" -> (ScheduledQueryRun -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData ScheduledQueryRun -> EventData
SigmaScheduledQueryRunCreatedEvent Event
e
  Text
"sku.created" -> (Sku -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Sku -> EventData
SkuCreatedEvent Event
e
  Text
"sku.deleted" -> (Sku -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Sku -> EventData
SkuDeletedEvent Event
e
  Text
"sku.updated" -> (Sku -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Sku -> EventData
SkuUpdatedEvent Event
e
  Text
"source.canceled" -> (Source -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Source -> EventData
SourceCanceledEvent Event
e
  Text
"source.chargeable" -> (Source -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Source -> EventData
SourceChargeableEvent Event
e
  Text
"source.failed" -> (Source -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Source -> EventData
SourceFailedEvent Event
e
  Text
"source.mandate_notification" -> (Source -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Source -> EventData
SourceMandateNotificationEvent Event
e
  Text
"source.refund_attributes_required" -> (Source -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Source -> EventData
SourceRefundAttributesRequiredEvent Event
e
  Text
"source.transaction.created" -> (SourceTransaction -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData SourceTransaction -> EventData
SourceTransactionCreatedEvent Event
e
  Text
"source.transaction.updated" -> (SourceTransaction -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData SourceTransaction -> EventData
SourceTransactionUpdatedEvent Event
e
  Text
"subscription_schedule.aborted" -> (SubscriptionSchedule -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData SubscriptionSchedule -> EventData
SubscriptionScheduleAbortedEvent Event
e
  Text
"subscription_schedule.canceled" -> (SubscriptionSchedule -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData SubscriptionSchedule -> EventData
SubscriptionScheduleCanceledEvent Event
e
  Text
"subscription_schedule.completed" -> (SubscriptionSchedule -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData SubscriptionSchedule -> EventData
SubscriptionScheduleCompletedEvent Event
e
  Text
"subscription_schedule.created" -> (SubscriptionSchedule -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData SubscriptionSchedule -> EventData
SubscriptionScheduleCreatedEvent Event
e
  Text
"subscription_schedule.expiring" -> (SubscriptionSchedule -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData SubscriptionSchedule -> EventData
SubscriptionScheduleExpiringEvent Event
e
  Text
"subscription_schedule.released" -> (SubscriptionSchedule -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData SubscriptionSchedule -> EventData
SubscriptionScheduleReleasedEvent Event
e
  Text
"subscription_schedule.updated" -> (SubscriptionSchedule -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData SubscriptionSchedule -> EventData
SubscriptionScheduleUpdatedEvent Event
e
  Text
"tax_rate.created" -> (TaxRate -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData TaxRate -> EventData
TaxRateCreatedEvent Event
e
  Text
"tax_rate.updated" -> (TaxRate -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData TaxRate -> EventData
TaxRateUpdatedEvent Event
e
  Text
"topup.canceled" -> (Topup -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Topup -> EventData
TopupCanceledEvent Event
e
  Text
"topup.created" -> (Topup -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Topup -> EventData
TopupCreatedEvent Event
e
  Text
"topup.failed" -> (Topup -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Topup -> EventData
TopupFailedEvent Event
e
  Text
"topup.reversed" -> (Topup -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Topup -> EventData
TopupReversedEvent Event
e
  Text
"topup.succeeded" -> (Topup -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Topup -> EventData
TopupSucceededEvent Event
e
  Text
"transfer.created" -> (Transfer -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Transfer -> EventData
TransferCreatedEvent Event
e
  Text
"transfer.failed" -> (Transfer -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Transfer -> EventData
TransferFailedEvent Event
e
  Text
"transfer.paid" -> (Transfer -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Transfer -> EventData
TransferPaidEvent Event
e
  Text
"transfer.reversed" -> (Transfer -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Transfer -> EventData
TransferReversedEvent Event
e
  Text
"transfer.updated" -> (Transfer -> EventData) -> Event -> EventData
forall a. FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData Transfer -> EventData
TransferUpdatedEvent Event
e
  Text
t -> Text -> EventData
UnknownEvent Text
t

convertEventData :: Aeson.FromJSON a => (a -> EventData) -> Event -> EventData
convertEventData :: (a -> EventData) -> Event -> EventData
convertEventData a -> EventData
constructor Event {Bool
Int
Maybe Text
Maybe EventRequest'
Text
NotificationEventData
eventRequest :: Event -> Maybe EventRequest'
eventPendingWebhooks :: Event -> Int
eventLivemode :: Event -> Bool
eventId :: Event -> Text
eventData :: Event -> NotificationEventData
eventCreated :: Event -> Int
eventApiVersion :: Event -> Maybe Text
eventAccount :: Event -> Maybe Text
eventType :: Text
eventRequest :: Maybe EventRequest'
eventPendingWebhooks :: Int
eventLivemode :: Bool
eventId :: Text
eventData :: NotificationEventData
eventCreated :: Int
eventApiVersion :: Maybe Text
eventAccount :: Maybe Text
eventType :: Event -> Text
..} = case Value -> Result a
forall a. FromJSON a => Value -> Result a
Aeson.fromJSON (Object -> Value
Aeson.Object (Object -> Value) -> Object -> Value
forall a b. (a -> b) -> a -> b
$ NotificationEventData -> Object
notificationEventDataObject NotificationEventData
eventData) of
  Aeson.Success a
x -> a -> EventData
constructor a
x
  Aeson.Error String
_ -> Text -> EventData
UnknownEvent Text
eventType

-- | All events supported by Stripe (see https://stripe.com/docs/api/events/types)
data EventData
  = -- | Occurs whenever an account status or property has changed.
    AccountUpdatedEvent Account
  | -- | Occurs whenever a user authorizes an application. Sent to the related application only.
    AccountApplicationAuthorizedEvent Application
  | -- | Occurs whenever a user deauthorizes an application. Sent to the related application only.
    AccountApplicationDeauthorizedEvent Application
  | -- | Occurs whenever an external account is created.
    AccountExternalAccountCreatedEvent ExternalAccount
  | -- | Occurs whenever an external account is deleted.
    AccountExternalAccountDeletedEvent ExternalAccount
  | -- | Occurs whenever an external account is updated.
    AccountExternalAccountUpdatedEvent ExternalAccount
  | -- | Occurs whenever an application fee is created on a charge.
    ApplicationFeeCreatedEvent ApplicationFee
  | -- | Occurs whenever an application fee is refunded, whether from refunding a charge or from refunding the application fee directly. This includes partial refunds.
    ApplicationFeeRefundedEvent ApplicationFee
  | -- | Occurs whenever an application fee refund is updated.
    ApplicationFeeRefundUpdatedEvent FeeRefund
  | -- | Occurs whenever your Stripe balance has been updated (e.g., when a charge is available to be paid out). By default, Stripe automatically transfers funds in your balance to your bank account on a daily basis.
    BalanceAvailableEvent Balance
  | -- | Occurs whenever a capability has new requirements or a new status.
    CapabilityUpdatedEvent Capability
  | -- | Occurs whenever a previously uncaptured charge is captured.
    ChargeCapturedEvent Charge
  | -- | Occurs whenever an uncaptured charge expires.
    ChargeExpiredEvent Charge
  | -- | Occurs whenever a failed charge attempt occurs.
    ChargeFailedEvent Charge
  | -- | Occurs whenever a pending charge is created.
    ChargePendingEvent Charge
  | -- | Occurs whenever a charge is refunded, including partial refunds.
    ChargeRefundedEvent Charge
  | -- | Occurs whenever a new charge is created and is successful.
    ChargeSucceededEvent Charge
  | -- | Occurs whenever a charge description or metadata is updated.
    ChargeUpdatedEvent Charge
  | -- | Occurs when a dispute is closed and the dispute status changes to lost, warningClosed, or won.
    ChargeDisputeClosedEvent Dispute
  | -- | Occurs whenever a customer disputes a charge with their bank.
    ChargeDisputeCreatedEvent Dispute
  | -- | Occurs when funds are reinstated to your account after a dispute is closed. This includes partially refunded payments.
    ChargeDisputeFundsReinstatedEvent Dispute
  | -- | Occurs when funds are removed from your account due to a dispute.
    ChargeDisputeFundsWithdrawnEvent Dispute
  | -- | Occurs when the dispute is updated (usually with evidence).
    ChargeDisputeUpdatedEvent Dispute
  | -- | Occurs whenever a refund is updated, on selected payment methods.
    ChargeRefundUpdatedEvent Refund
  | -- | Occurs when a payment intent using a delayed payment method fails.
    CheckoutSessionAsyncPaymentFailedEvent Checkout'session
  | -- | Occurs when a payment intent using a delayed payment method finally succeeds.
    CheckoutSessionAsyncPaymentSucceededEvent Checkout'session
  | -- | Occurs when a Checkout Session has been successfully completed.
    CheckoutSessionCompletedEvent Checkout'session
  | -- | Occurs whenever a coupon is created.
    CouponCreatedEvent Coupon
  | -- | Occurs whenever a coupon is deleted.
    CouponDeletedEvent Coupon
  | -- | Occurs whenever a coupon is updated.
    CouponUpdatedEvent Coupon
  | -- | Occurs whenever a credit note is created.
    CreditNoteCreatedEvent CreditNote
  | -- | Occurs whenever a credit note is updated.
    CreditNoteUpdatedEvent CreditNote
  | -- | Occurs whenever a credit note is voided.
    CreditNoteVoidedEvent CreditNote
  | -- | Occurs whenever a new customer is created.
    CustomerCreatedEvent Customer
  | -- | Occurs whenever a customer is deleted.
    CustomerDeletedEvent Customer
  | -- | Occurs whenever any property of a customer changes.
    CustomerUpdatedEvent Customer
  | -- | Occurs whenever a coupon is attached to a customer.
    CustomerDiscountCreatedEvent Discount
  | -- | Occurs whenever a coupon is removed from a customer.
    CustomerDiscountDeletedEvent Discount
  | -- | Occurs whenever a customer is switched from one coupon to another.
    CustomerDiscountUpdatedEvent Discount
  | -- | Occurs whenever a new source is created for a customer.
    CustomerSourceCreatedEvent Source
  | -- | Occurs whenever a source is removed from a customer.
    CustomerSourceDeletedEvent Source
  | -- | Occurs whenever a card or source will expire at the end of the month.
    CustomerSourceExpiringEvent Source
  | -- | Occurs whenever a source's details are changed.
    CustomerSourceUpdatedEvent Source
  | -- | Occurs whenever a customer is signed up for a new plan.
    CustomerSubscriptionCreatedEvent Subscription
  | -- | Occurs whenever a customer's subscription ends.
    CustomerSubscriptionDeletedEvent Subscription
  | -- | Occurs whenever a customer's subscription's pending update is applied, and the subscription is updated.
    CustomerSubscriptionPendingUpdateAppliedEvent Subscription
  | -- | Occurs whenever a customer's subscription's pending update expires before the related invoice is paid.
    CustomerSubscriptionPendingUpdateExpiredEvent Subscription
  | -- | Occurs three days before a subscription's trial period is scheduled to end, or when a trial is ended immediately (using trialEnd=now).
    CustomerSubscriptionTrialWillEndEvent Subscription
  | -- | Occurs whenever a subscription changes (e.g., switching from one plan to another, or changing the status from trial to active).
    CustomerSubscriptionUpdatedEvent Subscription
  | -- | Occurs whenever a tax ID is created for a customer.
    CustomerTaxIdCreatedEvent TaxId
  | -- | Occurs whenever a tax ID is deleted from a customer.
    CustomerTaxIdDeletedEvent TaxId
  | -- | Occurs whenever a customer's tax ID is updated.
    CustomerTaxIdUpdatedEvent TaxId
  | -- | Occurs whenever a new Stripe-generated file is available for your account.
    FileCreatedEvent File
  | -- | Occurs whenever a new invoice is created. To learn how webhooks can be used with this event, and how they can affect it, see Using Webhooks with Subscriptions.
    InvoiceCreatedEvent Invoice
  | -- | Occurs whenever a draft invoice is deleted.
    InvoiceDeletedEvent Invoice
  | -- | Occurs whenever a draft invoice is finalized and updated to be an open invoice.
    InvoiceFinalizedEvent Invoice
  | -- | Occurs whenever an invoice is marked uncollectible.
    InvoiceMarkedUncollectibleEvent Invoice
  | -- | Occurs whenever an invoice payment attempt succeeds or an invoice is marked as paid out-of-band.
    InvoicePaidEvent Invoice
  | -- | Occurs whenever an invoice payment attempt requires further user action to complete.
    InvoicePaymentActionRequiredEvent Invoice
  | -- | Occurs whenever an invoice payment attempt fails, due either to a declined payment or to the lack of a stored payment method.
    InvoicePaymentFailedEvent Invoice
  | -- | Occurs whenever an invoice payment attempt succeeds.
    InvoicePaymentSucceededEvent Invoice
  | -- | Occurs whenever an invoice email is sent out.
    InvoiceSentEvent Invoice
  | -- | Occurs X number of days before a subscription is scheduled to create an invoice that is automatically charged—where X is determined by your subscriptions settings. Note: The received Invoice object will not have an invoice ID.
    InvoiceUpcomingEvent Invoice
  | -- | Occurs whenever an invoice changes (e.g., the invoice amount).
    InvoiceUpdatedEvent Invoice
  | -- | Occurs whenever an invoice is voided.
    InvoiceVoidedEvent Invoice
  | -- | Occurs whenever an invoice item is created.
    InvoiceitemCreatedEvent Invoiceitem
  | -- | Occurs whenever an invoice item is deleted.
    InvoiceitemDeletedEvent Invoiceitem
  | -- | Occurs whenever an invoice item is updated.
    InvoiceitemUpdatedEvent Invoiceitem
  | -- | Occurs whenever an authorization is created.
    IssuingAuthorizationCreatedEvent Issuing'authorization
  | -- | Represents a synchronous request for authorization, see Using your integration to handle authorization requests. You must create a webhook endpoint which explicitly subscribes to this event type to access it. Webhook endpoints which subscribe to all events will not include this event type.
    IssuingAuthorizationRequestEvent Issuing'authorization
  | -- | Occurs whenever an authorization is updated.
    IssuingAuthorizationUpdatedEvent Issuing'authorization
  | -- | Occurs whenever a card is created.
    IssuingCardCreatedEvent Issuing'card
  | -- | Occurs whenever a card is updated.
    IssuingCardUpdatedEvent Issuing'card
  | -- | Occurs whenever a cardholder is created.
    IssuingCardholderCreatedEvent Issuing'cardholder
  | -- | Occurs whenever a cardholder is updated.
    IssuingCardholderUpdatedEvent Issuing'cardholder
  | -- | Occurs whenever a dispute is created.
    IssuingDisputeCreatedEvent Issuing'dispute
  | -- | Occurs whenever funds are reinstated to your account for an Issuing dispute.
    IssuingDisputeFundsReinstatedEvent Issuing'dispute
  | -- | Occurs whenever a dispute is updated.
    IssuingDisputeUpdatedEvent Issuing'dispute
  | -- | Occurs whenever an issuing transaction is created.
    IssuingTransactionCreatedEvent Issuing'transaction
  | -- | Occurs whenever an issuing transaction is updated.
    IssuingTransactionUpdatedEvent Issuing'transaction
  | -- | Occurs whenever a Mandate is updated.
    MandateUpdatedEvent Mandate
  | -- | Occurs whenever an order is created.
    OrderCreatedEvent Order
  | -- | Occurs whenever an order payment attempt fails.
    OrderPaymentFailedEvent Order
  | -- | Occurs whenever an order payment attempt succeeds.
    OrderPaymentSucceededEvent Order
  | -- | Occurs whenever an order is updated.
    OrderUpdatedEvent Order
  | -- | Occurs whenever an order return is created.
    OrderReturnCreatedEvent OrderReturn
  | -- | Occurs when a PaymentIntent has funds to be captured. Check the amountCapturable property on the PaymentIntent to determine the amount that can be captured. You may capture the PaymentIntent with an amountToCapture value up to the specified amount. Learn more about capturing PaymentIntents.
    PaymentIntentAmountCapturableUpdatedEvent PaymentIntent
  | -- | Occurs when a PaymentIntent is canceled.
    PaymentIntentCanceledEvent PaymentIntent
  | -- | Occurs when a new PaymentIntent is created.
    PaymentIntentCreatedEvent PaymentIntent
  | -- | Occurs when a PaymentIntent has failed the attempt to create a payment method or a payment.
    PaymentIntentPaymentFailedEvent PaymentIntent
  | -- | Occurs when a PaymentIntent has started processing.
    PaymentIntentProcessingEvent PaymentIntent
  | -- | Occurs when a PaymentIntent has successfully completed payment.
    PaymentIntentSucceededEvent PaymentIntent
  | -- | Occurs whenever a new payment method is attached to a customer.
    PaymentMethodAttachedEvent PaymentMethod
  | -- | Occurs whenever a card payment method's details are automatically updated by the network.
    PaymentMethodCardAutomaticallyUpdatedEvent PaymentMethod
  | -- | Occurs whenever a payment method is detached from a customer.
    PaymentMethodDetachedEvent PaymentMethod
  | -- | Occurs whenever a payment method is updated via the PaymentMethod update API.
    PaymentMethodUpdatedEvent PaymentMethod
  | -- | Occurs whenever a payout is canceled.
    PayoutCanceledEvent Payout
  | -- | Occurs whenever a payout is created.
    PayoutCreatedEvent Payout
  | -- | Occurs whenever a payout attempt fails.
    PayoutFailedEvent Payout
  | -- | Occurs whenever a payout is expected to be available in the destination account. If the payout fails, a payout.failed notification is also sent, at a later time.
    PayoutPaidEvent Payout
  | -- | Occurs whenever a payout is updated.
    PayoutUpdatedEvent Payout
  | -- | Occurs whenever a person associated with an account is created.
    PersonCreatedEvent Person
  | -- | Occurs whenever a person associated with an account is deleted.
    PersonDeletedEvent Person
  | -- | Occurs whenever a person associated with an account is updated.
    PersonUpdatedEvent Person
  | -- | Occurs whenever a plan is created.
    PlanCreatedEvent Plan
  | -- | Occurs whenever a plan is deleted.
    PlanDeletedEvent Plan
  | -- | Occurs whenever a plan is updated.
    PlanUpdatedEvent Plan
  | -- | Occurs whenever a price is created.
    PriceCreatedEvent Aeson.Object
  | -- | Occurs whenever a price is deleted.
    PriceDeletedEvent Aeson.Object
  | -- | Occurs whenever a price is updated.
    PriceUpdatedEvent Aeson.Object
  | -- | Occurs whenever a product is created.
    ProductCreatedEvent Product
  | -- | Occurs whenever a product is deleted.
    ProductDeletedEvent Product
  | -- | Occurs whenever a product is updated.
    ProductUpdatedEvent Product
  | -- | Occurs whenever an early fraud warning is created.
    RadarEarlyFraudWarningCreatedEvent Radar'earlyFraudWarning
  | -- | Occurs whenever an early fraud warning is updated.
    RadarEarlyFraudWarningUpdatedEvent Radar'earlyFraudWarning
  | -- | Occurs whenever a recipient is created.
    RecipientCreatedEvent Recipient
  | -- | Occurs whenever a recipient is deleted.
    RecipientDeletedEvent Recipient
  | -- | Occurs whenever a recipient is updated.
    RecipientUpdatedEvent Recipient
  | -- | Occurs whenever a requested ReportRun failed to complete.
    ReportingReportRunFailedEvent Reporting'reportRun
  | -- | Occurs whenever a requested ReportRun completed succesfully.
    ReportingReportRunSucceededEvent Reporting'reportRun
  | -- | Occurs whenever a ReportType is updated (typically to indicate that a new day's data has come available). You must create a webhook endpoint which explicitly subscribes to this event type to access it. Webhook endpoints which subscribe to all events will not include this event type.
    ReportingReportTypeUpdatedEvent Reporting'reportType
  | -- | Occurs whenever a review is closed. The review's reason field indicates why: approved, disputed, refunded, or refundedAsFraud.
    ReviewClosedEvent Review
  | -- | Occurs whenever a review is opened.
    ReviewOpenedEvent Review
  | -- | Occurs when a SetupIntent is canceled.
    SetupIntentCanceledEvent SetupIntent
  | -- | Occurs when a new SetupIntent is created.
    SetupIntentCreatedEvent SetupIntent
  | -- | Occurs when a SetupIntent has failed the attempt to setup a payment method.
    SetupIntentSetupFailedEvent SetupIntent
  | -- | Occurs when an SetupIntent has successfully setup a payment method.
    SetupIntentSucceededEvent SetupIntent
  | -- | Occurs whenever a Sigma scheduled query run finishes.
    SigmaScheduledQueryRunCreatedEvent ScheduledQueryRun
  | -- | Occurs whenever a SKU is created.
    SkuCreatedEvent Sku
  | -- | Occurs whenever a SKU is deleted.
    SkuDeletedEvent Sku
  | -- | Occurs whenever a SKU is updated.
    SkuUpdatedEvent Sku
  | -- | Occurs whenever a source is canceled.
    SourceCanceledEvent Source
  | -- | Occurs whenever a source transitions to chargeable.
    SourceChargeableEvent Source
  | -- | Occurs whenever a source fails.
    SourceFailedEvent Source
  | -- | Occurs whenever a source mandate notification method is set to manual.
    SourceMandateNotificationEvent Source
  | -- | Occurs whenever the refund attributes are required on a receiver source to process a refund or a mispayment.
    SourceRefundAttributesRequiredEvent Source
  | -- | Occurs whenever a source transaction is created.
    SourceTransactionCreatedEvent SourceTransaction
  | -- | Occurs whenever a source transaction is updated.
    SourceTransactionUpdatedEvent SourceTransaction
  | -- | Occurs whenever a subscription schedule is canceled due to the underlying subscription being canceled because of delinquency.
    SubscriptionScheduleAbortedEvent SubscriptionSchedule
  | -- | Occurs whenever a subscription schedule is canceled.
    SubscriptionScheduleCanceledEvent SubscriptionSchedule
  | -- | Occurs whenever a new subscription schedule is completed.
    SubscriptionScheduleCompletedEvent SubscriptionSchedule
  | -- | Occurs whenever a new subscription schedule is created.
    SubscriptionScheduleCreatedEvent SubscriptionSchedule
  | -- | Occurs 7 days before a subscription schedule will expire.
    SubscriptionScheduleExpiringEvent SubscriptionSchedule
  | -- | Occurs whenever a new subscription schedule is released.
    SubscriptionScheduleReleasedEvent SubscriptionSchedule
  | -- | Occurs whenever a subscription schedule is updated.
    SubscriptionScheduleUpdatedEvent SubscriptionSchedule
  | -- | Occurs whenever a new tax rate is created.
    TaxRateCreatedEvent TaxRate
  | -- | Occurs whenever a tax rate is updated.
    TaxRateUpdatedEvent TaxRate
  | -- | Occurs whenever a top-up is canceled.
    TopupCanceledEvent Topup
  | -- | Occurs whenever a top-up is created.
    TopupCreatedEvent Topup
  | -- | Occurs whenever a top-up fails.
    TopupFailedEvent Topup
  | -- | Occurs whenever a top-up is reversed.
    TopupReversedEvent Topup
  | -- | Occurs whenever a top-up succeeds.
    TopupSucceededEvent Topup
  | -- | Occurs whenever a transfer is created.
    TransferCreatedEvent Transfer
  | -- | Occurs whenever a transfer failed.
    TransferFailedEvent Transfer
  | -- | Occurs after a transfer is paid. For Instant Payouts, the event will typically be sent within 30 minutes.
    TransferPaidEvent Transfer
  | -- | Occurs whenever a transfer is reversed, including partial reversals.
    TransferReversedEvent Transfer
  | -- | Occurs whenever a transfer's description or metadata is updated.
    TransferUpdatedEvent Transfer
  | UnknownEvent Text