prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Webhook missing: invoice.payment_action_required
  I can't find any reference to ```invoice.payment_action_required``` anywhere, however this is a fairly critical piece of off-session SCA workflow. Is it simply a case of adding it to the signals list?
  
  https://stripe.com/docs/api/events/types#event_types-invoice.payment_action_required
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `djstripe/signals.py`
  Content:
  ```
  1 """
  2 signals are sent for each event Stripe sends to the app
  3 
  4 Stripe docs for Webhooks: https://stripe.com/docs/webhooks
  5 """
  6 from django.db.models.signals import pre_delete
  7 from django.dispatch import Signal, receiver
  8 
  9 from . import settings as djstripe_settings
  10 
  11 webhook_processing_error = Signal(providing_args=["data", "exception"])
  12 
  13 # A signal for each Event type. See https://stripe.com/docs/api/events/types
  14 
  15 WEBHOOK_SIGNALS = dict(
  16     [
  17         (hook, Signal(providing_args=["event"]))
  18         for hook in [
  19             "account.updated",
  20             "account.application.authorized",
  21             "account.application.deauthorized",
  22             "account.external_account.created",
  23             "account.external_account.deleted",
  24             "account.external_account.updated",
  25             "application_fee.created",
  26             "application_fee.refunded",
  27             "application_fee.refund.updated",
  28             "balance.available",
  29             "charge.captured",
  30             "charge.expired",
  31             "charge.failed",
  32             "charge.pending",
  33             "charge.refunded",
  34             "charge.succeeded",
  35             "charge.updated",
  36             "charge.dispute.closed",
  37             "charge.dispute.created",
  38             "charge.dispute.funds_reinstated",
  39             "charge.dispute.funds_withdrawn",
  40             "charge.dispute.updated",
  41             "charge.refund.updated",
  42             "checkout.session.completed",
  43             "coupon.created",
  44             "coupon.deleted",
  45             "coupon.updated",
  46             "customer.created",
  47             "customer.deleted",
  48             "customer.updated",
  49             "customer.discount.created",
  50             "customer.discount.deleted",
  51             "customer.discount.updated",
  52             "customer.source.created",
  53             "customer.source.deleted",
  54             "customer.source.expiring",
  55             "customer.source.updated",
  56             "customer.subscription.created",
  57             "customer.subscription.deleted",
  58             "customer.subscription.trial_will_end",
  59             "customer.subscription.updated",
  60             "file.created",
  61             "invoice.created",
  62             "invoice.deleted",
  63             "invoice.finalized",
  64             "invoice.marked_uncollectible",
  65             "invoice.payment_failed",
  66             "invoice.payment_succeeded",
  67             "invoice.sent",
  68             "invoice.upcoming",
  69             "invoice.updated",
  70             "invoice.voided",
  71             "invoiceitem.created",
  72             "invoiceitem.deleted",
  73             "invoiceitem.updated",
  74             "issuing_authorization.created",
  75             "issuing_authorization.request",
  76             "issuing_authorization.updated",
  77             "issuing_card.created",
  78             "issuing_card.updated",
  79             "issuing_cardholder.created",
  80             "issuing_cardholder.updated",
  81             "issuing_dispute.created",
  82             "issuing_dispute.updated",
  83             "issuing_settlement.created",
  84             "issuing_settlement.updated",
  85             "issuing_transaction.created",
  86             "issuing_transaction.updated",
  87             "order.created",
  88             "order.payment_failed",
  89             "order.payment_succeeded",
  90             "order.updated",
  91             "order_return.created",
  92             "payment_intent.amount_capturable_updated",
  93             "payment_intent.created",
  94             "payment_intent.payment_failed",
  95             "payment_intent.succeeded",
  96             "payment_method.attached",
  97             "payment_method.card_automatically_updated",
  98             "payment_method.detached",
  99             "payment_method.updated",
  100             "payout.canceled",
  101             "payout.created",
  102             "payout.failed",
  103             "payout.paid",
  104             "payout.updated",
  105             "plan.created",
  106             "plan.deleted",
  107             "plan.updated",
  108             "product.created",
  109             "product.deleted",
  110             "product.updated",
  111             "recipient.created",
  112             "recipient.deleted",
  113             "recipient.updated",
  114             "reporting.report_run.failed",
  115             "reporting.report_run.succeeded",
  116             "reporting.report_type.updated",
  117             "review.closed",
  118             "review.opened",
  119             "setup_intent.created",
  120             "setup_intent.setup_failed",
  121             "setup_intent.succeeded",
  122             "sigma.scheduled_query_run.created",
  123             "sku.created",
  124             "sku.deleted",
  125             "sku.updated",
  126             "source.canceled",
  127             "source.chargeable",
  128             "source.failed",
  129             "source.mandate_notification",
  130             "source.refund_attributes_required",
  131             "source.transaction.created",
  132             "source.transaction.updated",
  133             "topup.canceled",
  134             "topup.created",
  135             "topup.failed",
  136             "topup.reversed",
  137             "topup.succeeded",
  138             "transfer.created",
  139             "transfer.reversed",
  140             "transfer.updated",
  141             # deprecated (no longer in events_types list) - TODO can be deleted?
  142             "checkout_beta.session_succeeded",
  143             "issuer_fraud_record.created",
  144             "payment_intent.requires_capture",
  145             "subscription_schedule.canceled",
  146             "subscription_schedule.completed",
  147             "subscription_schedule.created",
  148             "subscription_schedule.released",
  149             "subscription_schedule.updated",
  150             # special case? - TODO can be deleted?
  151             "ping",
  152         ]
  153     ]
  154 )
  155 
  156 
  157 @receiver(pre_delete, sender=djstripe_settings.get_subscriber_model_string())
  158 def on_delete_subscriber_purge_customer(instance=None, **kwargs):
  159     """ Purge associated customers when the subscriber is deleted. """
  160     for customer in instance.djstripe_customers.all():
  161         customer.purge()
  162
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/djstripe/signals.py b/djstripe/signals.py
  --- a/djstripe/signals.py
  +++ b/djstripe/signals.py
  @@ -16,36 +16,41 @@
       [
           (hook, Signal(providing_args=["event"]))
           for hook in [
  -            "account.updated",
  +            # Update this by copy-pasting the "enabled_events" enum values from
  +            # https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json
               "account.application.authorized",
               "account.application.deauthorized",
               "account.external_account.created",
               "account.external_account.deleted",
               "account.external_account.updated",
  +            "account.updated",
               "application_fee.created",
  -            "application_fee.refunded",
               "application_fee.refund.updated",
  +            "application_fee.refunded",
               "balance.available",
  +            "capability.updated",
               "charge.captured",
  -            "charge.expired",
  -            "charge.failed",
  -            "charge.pending",
  -            "charge.refunded",
  -            "charge.succeeded",
  -            "charge.updated",
               "charge.dispute.closed",
               "charge.dispute.created",
               "charge.dispute.funds_reinstated",
               "charge.dispute.funds_withdrawn",
               "charge.dispute.updated",
  +            "charge.expired",
  +            "charge.failed",
  +            "charge.pending",
               "charge.refund.updated",
  +            "charge.refunded",
  +            "charge.succeeded",
  +            "charge.updated",
               "checkout.session.completed",
               "coupon.created",
               "coupon.deleted",
               "coupon.updated",
  +            "credit_note.created",
  +            "credit_note.updated",
  +            "credit_note.voided",
               "customer.created",
               "customer.deleted",
  -            "customer.updated",
               "customer.discount.created",
               "customer.discount.deleted",
               "customer.discount.updated",
  @@ -57,11 +62,16 @@
               "customer.subscription.deleted",
               "customer.subscription.trial_will_end",
               "customer.subscription.updated",
  +            "customer.tax_id.created",
  +            "customer.tax_id.deleted",
  +            "customer.tax_id.updated",
  +            "customer.updated",
               "file.created",
               "invoice.created",
               "invoice.deleted",
               "invoice.finalized",
               "invoice.marked_uncollectible",
  +            "invoice.payment_action_required",
               "invoice.payment_failed",
               "invoice.payment_succeeded",
               "invoice.sent",
  @@ -102,12 +112,17 @@
               "payout.failed",
               "payout.paid",
               "payout.updated",
  +            "person.created",
  +            "person.deleted",
  +            "person.updated",
               "plan.created",
               "plan.deleted",
               "plan.updated",
               "product.created",
               "product.deleted",
               "product.updated",
  +            "radar.early_fraud_warning.created",
  +            "radar.early_fraud_warning.updated",
               "recipient.created",
               "recipient.deleted",
               "recipient.updated",
  @@ -130,12 +145,23 @@
               "source.refund_attributes_required",
               "source.transaction.created",
               "source.transaction.updated",
  +            "subscription_schedule.aborted",
  +            "subscription_schedule.canceled",
  +            "subscription_schedule.completed",
  +            "subscription_schedule.created",
  +            "subscription_schedule.expiring",
  +            "subscription_schedule.released",
  +            "subscription_schedule.updated",
  +            "tax_rate.created",
  +            "tax_rate.updated",
               "topup.canceled",
               "topup.created",
               "topup.failed",
               "topup.reversed",
               "topup.succeeded",
               "transfer.created",
  +            "transfer.failed",
  +            "transfer.paid",
               "transfer.reversed",
               "transfer.updated",
               # deprecated (no longer in events_types list) - TODO can be deleted?
  
verification_info: {"golden_diff": "diff --git a/djstripe/signals.py b/djstripe/signals.py\n--- a/djstripe/signals.py\n+++ b/djstripe/signals.py\n@@ -16,36 +16,41 @@\n     [\n         (hook, Signal(providing_args=[\"event\"]))\n         for hook in [\n-            \"account.updated\",\n+            # Update this by copy-pasting the \"enabled_events\" enum values from\n+            # https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json\n             \"account.application.authorized\",\n             \"account.application.deauthorized\",\n             \"account.external_account.created\",\n             \"account.external_account.deleted\",\n             \"account.external_account.updated\",\n+            \"account.updated\",\n             \"application_fee.created\",\n-            \"application_fee.refunded\",\n             \"application_fee.refund.updated\",\n+            \"application_fee.refunded\",\n             \"balance.available\",\n+            \"capability.updated\",\n             \"charge.captured\",\n-            \"charge.expired\",\n-            \"charge.failed\",\n-            \"charge.pending\",\n-            \"charge.refunded\",\n-            \"charge.succeeded\",\n-            \"charge.updated\",\n             \"charge.dispute.closed\",\n             \"charge.dispute.created\",\n             \"charge.dispute.funds_reinstated\",\n             \"charge.dispute.funds_withdrawn\",\n             \"charge.dispute.updated\",\n+            \"charge.expired\",\n+            \"charge.failed\",\n+            \"charge.pending\",\n             \"charge.refund.updated\",\n+            \"charge.refunded\",\n+            \"charge.succeeded\",\n+            \"charge.updated\",\n             \"checkout.session.completed\",\n             \"coupon.created\",\n             \"coupon.deleted\",\n             \"coupon.updated\",\n+            \"credit_note.created\",\n+            \"credit_note.updated\",\n+            \"credit_note.voided\",\n             \"customer.created\",\n             \"customer.deleted\",\n-            \"customer.updated\",\n             \"customer.discount.created\",\n             \"customer.discount.deleted\",\n             \"customer.discount.updated\",\n@@ -57,11 +62,16 @@\n             \"customer.subscription.deleted\",\n             \"customer.subscription.trial_will_end\",\n             \"customer.subscription.updated\",\n+            \"customer.tax_id.created\",\n+            \"customer.tax_id.deleted\",\n+            \"customer.tax_id.updated\",\n+            \"customer.updated\",\n             \"file.created\",\n             \"invoice.created\",\n             \"invoice.deleted\",\n             \"invoice.finalized\",\n             \"invoice.marked_uncollectible\",\n+            \"invoice.payment_action_required\",\n             \"invoice.payment_failed\",\n             \"invoice.payment_succeeded\",\n             \"invoice.sent\",\n@@ -102,12 +112,17 @@\n             \"payout.failed\",\n             \"payout.paid\",\n             \"payout.updated\",\n+            \"person.created\",\n+            \"person.deleted\",\n+            \"person.updated\",\n             \"plan.created\",\n             \"plan.deleted\",\n             \"plan.updated\",\n             \"product.created\",\n             \"product.deleted\",\n             \"product.updated\",\n+            \"radar.early_fraud_warning.created\",\n+            \"radar.early_fraud_warning.updated\",\n             \"recipient.created\",\n             \"recipient.deleted\",\n             \"recipient.updated\",\n@@ -130,12 +145,23 @@\n             \"source.refund_attributes_required\",\n             \"source.transaction.created\",\n             \"source.transaction.updated\",\n+            \"subscription_schedule.aborted\",\n+            \"subscription_schedule.canceled\",\n+            \"subscription_schedule.completed\",\n+            \"subscription_schedule.created\",\n+            \"subscription_schedule.expiring\",\n+            \"subscription_schedule.released\",\n+            \"subscription_schedule.updated\",\n+            \"tax_rate.created\",\n+            \"tax_rate.updated\",\n             \"topup.canceled\",\n             \"topup.created\",\n             \"topup.failed\",\n             \"topup.reversed\",\n             \"topup.succeeded\",\n             \"transfer.created\",\n+            \"transfer.failed\",\n+            \"transfer.paid\",\n             \"transfer.reversed\",\n             \"transfer.updated\",\n             # deprecated (no longer in events_types list) - TODO can be deleted?\n", "issue": "Webhook missing: invoice.payment_action_required\nI can't find any reference to ```invoice.payment_action_required``` anywhere, however this is a fairly critical piece of off-session SCA workflow. Is it simply a case of adding it to the signals list?\r\n\r\nhttps://stripe.com/docs/api/events/types#event_types-invoice.payment_action_required\n", "before_files": [{"content": "\"\"\"\nsignals are sent for each event Stripe sends to the app\n\nStripe docs for Webhooks: https://stripe.com/docs/webhooks\n\"\"\"\nfrom django.db.models.signals import pre_delete\nfrom django.dispatch import Signal, receiver\n\nfrom . import settings as djstripe_settings\n\nwebhook_processing_error = Signal(providing_args=[\"data\", \"exception\"])\n\n# A signal for each Event type. See https://stripe.com/docs/api/events/types\n\nWEBHOOK_SIGNALS = dict(\n    [\n        (hook, Signal(providing_args=[\"event\"]))\n        for hook in [\n            \"account.updated\",\n            \"account.application.authorized\",\n            \"account.application.deauthorized\",\n            \"account.external_account.created\",\n            \"account.external_account.deleted\",\n            \"account.external_account.updated\",\n            \"application_fee.created\",\n            \"application_fee.refunded\",\n            \"application_fee.refund.updated\",\n            \"balance.available\",\n            \"charge.captured\",\n            \"charge.expired\",\n            \"charge.failed\",\n            \"charge.pending\",\n            \"charge.refunded\",\n            \"charge.succeeded\",\n            \"charge.updated\",\n            \"charge.dispute.closed\",\n            \"charge.dispute.created\",\n            \"charge.dispute.funds_reinstated\",\n            \"charge.dispute.funds_withdrawn\",\n            \"charge.dispute.updated\",\n            \"charge.refund.updated\",\n            \"checkout.session.completed\",\n            \"coupon.created\",\n            \"coupon.deleted\",\n            \"coupon.updated\",\n            \"customer.created\",\n            \"customer.deleted\",\n            \"customer.updated\",\n            \"customer.discount.created\",\n            \"customer.discount.deleted\",\n            \"customer.discount.updated\",\n            \"customer.source.created\",\n            \"customer.source.deleted\",\n            \"customer.source.expiring\",\n            \"customer.source.updated\",\n            \"customer.subscription.created\",\n            \"customer.subscription.deleted\",\n            \"customer.subscription.trial_will_end\",\n            \"customer.subscription.updated\",\n            \"file.created\",\n            \"invoice.created\",\n            \"invoice.deleted\",\n            \"invoice.finalized\",\n            \"invoice.marked_uncollectible\",\n            \"invoice.payment_failed\",\n            \"invoice.payment_succeeded\",\n            \"invoice.sent\",\n            \"invoice.upcoming\",\n            \"invoice.updated\",\n            \"invoice.voided\",\n            \"invoiceitem.created\",\n            \"invoiceitem.deleted\",\n            \"invoiceitem.updated\",\n            \"issuing_authorization.created\",\n            \"issuing_authorization.request\",\n            \"issuing_authorization.updated\",\n            \"issuing_card.created\",\n            \"issuing_card.updated\",\n            \"issuing_cardholder.created\",\n            \"issuing_cardholder.updated\",\n            \"issuing_dispute.created\",\n            \"issuing_dispute.updated\",\n            \"issuing_settlement.created\",\n            \"issuing_settlement.updated\",\n            \"issuing_transaction.created\",\n            \"issuing_transaction.updated\",\n            \"order.created\",\n            \"order.payment_failed\",\n            \"order.payment_succeeded\",\n            \"order.updated\",\n            \"order_return.created\",\n            \"payment_intent.amount_capturable_updated\",\n            \"payment_intent.created\",\n            \"payment_intent.payment_failed\",\n            \"payment_intent.succeeded\",\n            \"payment_method.attached\",\n            \"payment_method.card_automatically_updated\",\n            \"payment_method.detached\",\n            \"payment_method.updated\",\n            \"payout.canceled\",\n            \"payout.created\",\n            \"payout.failed\",\n            \"payout.paid\",\n            \"payout.updated\",\n            \"plan.created\",\n            \"plan.deleted\",\n            \"plan.updated\",\n            \"product.created\",\n            \"product.deleted\",\n            \"product.updated\",\n            \"recipient.created\",\n            \"recipient.deleted\",\n            \"recipient.updated\",\n            \"reporting.report_run.failed\",\n            \"reporting.report_run.succeeded\",\n            \"reporting.report_type.updated\",\n            \"review.closed\",\n            \"review.opened\",\n            \"setup_intent.created\",\n            \"setup_intent.setup_failed\",\n            \"setup_intent.succeeded\",\n            \"sigma.scheduled_query_run.created\",\n            \"sku.created\",\n            \"sku.deleted\",\n            \"sku.updated\",\n            \"source.canceled\",\n            \"source.chargeable\",\n            \"source.failed\",\n            \"source.mandate_notification\",\n            \"source.refund_attributes_required\",\n            \"source.transaction.created\",\n            \"source.transaction.updated\",\n            \"topup.canceled\",\n            \"topup.created\",\n            \"topup.failed\",\n            \"topup.reversed\",\n            \"topup.succeeded\",\n            \"transfer.created\",\n            \"transfer.reversed\",\n            \"transfer.updated\",\n            # deprecated (no longer in events_types list) - TODO can be deleted?\n            \"checkout_beta.session_succeeded\",\n            \"issuer_fraud_record.created\",\n            \"payment_intent.requires_capture\",\n            \"subscription_schedule.canceled\",\n            \"subscription_schedule.completed\",\n            \"subscription_schedule.created\",\n            \"subscription_schedule.released\",\n            \"subscription_schedule.updated\",\n            # special case? - TODO can be deleted?\n            \"ping\",\n        ]\n    ]\n)\n\n\n@receiver(pre_delete, sender=djstripe_settings.get_subscriber_model_string())\ndef on_delete_subscriber_purge_customer(instance=None, **kwargs):\n    \"\"\" Purge associated customers when the subscriber is deleted. \"\"\"\n    for customer in instance.djstripe_customers.all():\n        customer.purge()\n", "path": "djstripe/signals.py"}], "after_files": [{"content": "\"\"\"\nsignals are sent for each event Stripe sends to the app\n\nStripe docs for Webhooks: https://stripe.com/docs/webhooks\n\"\"\"\nfrom django.db.models.signals import pre_delete\nfrom django.dispatch import Signal, receiver\n\nfrom . import settings as djstripe_settings\n\nwebhook_processing_error = Signal(providing_args=[\"data\", \"exception\"])\n\n# A signal for each Event type. See https://stripe.com/docs/api/events/types\n\nWEBHOOK_SIGNALS = dict(\n    [\n        (hook, Signal(providing_args=[\"event\"]))\n        for hook in [\n            # Update this by copy-pasting the \"enabled_events\" enum values from\n            # https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json\n            \"account.application.authorized\",\n            \"account.application.deauthorized\",\n            \"account.external_account.created\",\n            \"account.external_account.deleted\",\n            \"account.external_account.updated\",\n            \"account.updated\",\n            \"application_fee.created\",\n            \"application_fee.refund.updated\",\n            \"application_fee.refunded\",\n            \"balance.available\",\n            \"capability.updated\",\n            \"charge.captured\",\n            \"charge.dispute.closed\",\n            \"charge.dispute.created\",\n            \"charge.dispute.funds_reinstated\",\n            \"charge.dispute.funds_withdrawn\",\n            \"charge.dispute.updated\",\n            \"charge.expired\",\n            \"charge.failed\",\n            \"charge.pending\",\n            \"charge.refund.updated\",\n            \"charge.refunded\",\n            \"charge.succeeded\",\n            \"charge.updated\",\n            \"checkout.session.completed\",\n            \"coupon.created\",\n            \"coupon.deleted\",\n            \"coupon.updated\",\n            \"credit_note.created\",\n            \"credit_note.updated\",\n            \"credit_note.voided\",\n            \"customer.created\",\n            \"customer.deleted\",\n            \"customer.discount.created\",\n            \"customer.discount.deleted\",\n            \"customer.discount.updated\",\n            \"customer.source.created\",\n            \"customer.source.deleted\",\n            \"customer.source.expiring\",\n            \"customer.source.updated\",\n            \"customer.subscription.created\",\n            \"customer.subscription.deleted\",\n            \"customer.subscription.trial_will_end\",\n            \"customer.subscription.updated\",\n            \"customer.tax_id.created\",\n            \"customer.tax_id.deleted\",\n            \"customer.tax_id.updated\",\n            \"customer.updated\",\n            \"file.created\",\n            \"invoice.created\",\n            \"invoice.deleted\",\n            \"invoice.finalized\",\n            \"invoice.marked_uncollectible\",\n            \"invoice.payment_action_required\",\n            \"invoice.payment_failed\",\n            \"invoice.payment_succeeded\",\n            \"invoice.sent\",\n            \"invoice.upcoming\",\n            \"invoice.updated\",\n            \"invoice.voided\",\n            \"invoiceitem.created\",\n            \"invoiceitem.deleted\",\n            \"invoiceitem.updated\",\n            \"issuing_authorization.created\",\n            \"issuing_authorization.request\",\n            \"issuing_authorization.updated\",\n            \"issuing_card.created\",\n            \"issuing_card.updated\",\n            \"issuing_cardholder.created\",\n            \"issuing_cardholder.updated\",\n            \"issuing_dispute.created\",\n            \"issuing_dispute.updated\",\n            \"issuing_settlement.created\",\n            \"issuing_settlement.updated\",\n            \"issuing_transaction.created\",\n            \"issuing_transaction.updated\",\n            \"order.created\",\n            \"order.payment_failed\",\n            \"order.payment_succeeded\",\n            \"order.updated\",\n            \"order_return.created\",\n            \"payment_intent.amount_capturable_updated\",\n            \"payment_intent.created\",\n            \"payment_intent.payment_failed\",\n            \"payment_intent.succeeded\",\n            \"payment_method.attached\",\n            \"payment_method.card_automatically_updated\",\n            \"payment_method.detached\",\n            \"payment_method.updated\",\n            \"payout.canceled\",\n            \"payout.created\",\n            \"payout.failed\",\n            \"payout.paid\",\n            \"payout.updated\",\n            \"person.created\",\n            \"person.deleted\",\n            \"person.updated\",\n            \"plan.created\",\n            \"plan.deleted\",\n            \"plan.updated\",\n            \"product.created\",\n            \"product.deleted\",\n            \"product.updated\",\n            \"radar.early_fraud_warning.created\",\n            \"radar.early_fraud_warning.updated\",\n            \"recipient.created\",\n            \"recipient.deleted\",\n            \"recipient.updated\",\n            \"reporting.report_run.failed\",\n            \"reporting.report_run.succeeded\",\n            \"reporting.report_type.updated\",\n            \"review.closed\",\n            \"review.opened\",\n            \"setup_intent.created\",\n            \"setup_intent.setup_failed\",\n            \"setup_intent.succeeded\",\n            \"sigma.scheduled_query_run.created\",\n            \"sku.created\",\n            \"sku.deleted\",\n            \"sku.updated\",\n            \"source.canceled\",\n            \"source.chargeable\",\n            \"source.failed\",\n            \"source.mandate_notification\",\n            \"source.refund_attributes_required\",\n            \"source.transaction.created\",\n            \"source.transaction.updated\",\n            \"subscription_schedule.aborted\",\n            \"subscription_schedule.canceled\",\n            \"subscription_schedule.completed\",\n            \"subscription_schedule.created\",\n            \"subscription_schedule.expiring\",\n            \"subscription_schedule.released\",\n            \"subscription_schedule.updated\",\n            \"tax_rate.created\",\n            \"tax_rate.updated\",\n            \"topup.canceled\",\n            \"topup.created\",\n            \"topup.failed\",\n            \"topup.reversed\",\n            \"topup.succeeded\",\n            \"transfer.created\",\n            \"transfer.failed\",\n            \"transfer.paid\",\n            \"transfer.reversed\",\n            \"transfer.updated\",\n            # deprecated (no longer in events_types list) - TODO can be deleted?\n            \"checkout_beta.session_succeeded\",\n            \"issuer_fraud_record.created\",\n            \"payment_intent.requires_capture\",\n            \"subscription_schedule.canceled\",\n            \"subscription_schedule.completed\",\n            \"subscription_schedule.created\",\n            \"subscription_schedule.released\",\n            \"subscription_schedule.updated\",\n            # special case? - TODO can be deleted?\n            \"ping\",\n        ]\n    ]\n)\n\n\n@receiver(pre_delete, sender=djstripe_settings.get_subscriber_model_string())\ndef on_delete_subscriber_purge_customer(instance=None, **kwargs):\n    \"\"\" Purge associated customers when the subscriber is deleted. \"\"\"\n    for customer in instance.djstripe_customers.all():\n        customer.purge()\n", "path": "djstripe/signals.py"}]}