Repository: dj-stripe/dj-stripe

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


Discussion:
Yes it should be a simple fix.

Resolving patch:
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?


Test patch: