dodopayments 2.4.1 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -0
  3. data/README.md +1 -1
  4. data/lib/dodopayments/internal/util.rb +18 -4
  5. data/lib/dodopayments/models/abandoned_checkout_detected_webhook_event.rb +126 -0
  6. data/lib/dodopayments/models/abandoned_checkout_recovered_webhook_event.rb +126 -0
  7. data/lib/dodopayments/models/balance_ledger_entry.rb +2 -0
  8. data/lib/dodopayments/models/balance_retrieve_ledger_params.rb +2 -0
  9. data/lib/dodopayments/models/discount.rb +8 -1
  10. data/lib/dodopayments/models/discount_create_params.rb +9 -1
  11. data/lib/dodopayments/models/discount_update_params.rb +9 -1
  12. data/lib/dodopayments/models/dunning_recovered_webhook_event.rb +118 -0
  13. data/lib/dodopayments/models/dunning_started_webhook_event.rb +118 -0
  14. data/lib/dodopayments/models/payouts/breakup/detail_download_csv_params.rb +24 -0
  15. data/lib/dodopayments/models/payouts/breakup/detail_list_params.rb +41 -0
  16. data/lib/dodopayments/models/payouts/breakup/detail_list_response.rb +94 -0
  17. data/lib/dodopayments/models/payouts/breakup_retrieve_params.rb +22 -0
  18. data/lib/dodopayments/models/payouts/breakup_retrieve_response.rb +37 -0
  19. data/lib/dodopayments/models/subscription_update_params.rb +19 -1
  20. data/lib/dodopayments/models/unsafe_unwrap_webhook_event.rb +9 -1
  21. data/lib/dodopayments/models/unwrap_webhook_event.rb +9 -1
  22. data/lib/dodopayments/models/webhook_event_type.rb +6 -0
  23. data/lib/dodopayments/models/webhook_payload.rb +168 -3
  24. data/lib/dodopayments/models.rb +10 -0
  25. data/lib/dodopayments/resources/discounts.rb +6 -2
  26. data/lib/dodopayments/resources/payouts/breakup/details.rb +72 -0
  27. data/lib/dodopayments/resources/payouts/breakup.rb +43 -0
  28. data/lib/dodopayments/resources/payouts.rb +4 -0
  29. data/lib/dodopayments/resources/subscriptions.rb +3 -1
  30. data/lib/dodopayments/resources/webhooks.rb +2 -2
  31. data/lib/dodopayments/version.rb +1 -1
  32. data/lib/dodopayments.rb +11 -0
  33. data/rbi/dodopayments/internal/util.rbi +8 -0
  34. data/rbi/dodopayments/models/abandoned_checkout_detected_webhook_event.rbi +271 -0
  35. data/rbi/dodopayments/models/abandoned_checkout_recovered_webhook_event.rbi +273 -0
  36. data/rbi/dodopayments/models/balance_ledger_entry.rbi +10 -0
  37. data/rbi/dodopayments/models/balance_retrieve_ledger_params.rbi +10 -0
  38. data/rbi/dodopayments/models/discount.rbi +6 -0
  39. data/rbi/dodopayments/models/discount_create_params.rbi +11 -0
  40. data/rbi/dodopayments/models/discount_update_params.rbi +8 -0
  41. data/rbi/dodopayments/models/dunning_recovered_webhook_event.rbi +249 -0
  42. data/rbi/dodopayments/models/dunning_started_webhook_event.rbi +249 -0
  43. data/rbi/dodopayments/models/payouts/breakup/detail_download_csv_params.rbi +45 -0
  44. data/rbi/dodopayments/models/payouts/breakup/detail_list_params.rbi +70 -0
  45. data/rbi/dodopayments/models/payouts/breakup/detail_list_response.rbi +116 -0
  46. data/rbi/dodopayments/models/payouts/breakup_retrieve_params.rbi +40 -0
  47. data/rbi/dodopayments/models/payouts/breakup_retrieve_response.rbi +53 -0
  48. data/rbi/dodopayments/models/subscription_update_params.rbi +54 -0
  49. data/rbi/dodopayments/models/unsafe_unwrap_webhook_event.rbi +4 -0
  50. data/rbi/dodopayments/models/unwrap_webhook_event.rbi +4 -0
  51. data/rbi/dodopayments/models/webhook_event_type.rbi +21 -0
  52. data/rbi/dodopayments/models/webhook_payload.rbi +400 -4
  53. data/rbi/dodopayments/models.rbi +13 -0
  54. data/rbi/dodopayments/resources/discounts.rbi +6 -0
  55. data/rbi/dodopayments/resources/payouts/breakup/details.rbi +60 -0
  56. data/rbi/dodopayments/resources/payouts/breakup.rbi +36 -0
  57. data/rbi/dodopayments/resources/payouts.rbi +3 -0
  58. data/rbi/dodopayments/resources/subscriptions.rbi +5 -0
  59. data/rbi/dodopayments/resources/webhooks.rbi +8 -0
  60. data/sig/dodopayments/internal/util.rbs +4 -0
  61. data/sig/dodopayments/models/abandoned_checkout_detected_webhook_event.rbs +113 -0
  62. data/sig/dodopayments/models/abandoned_checkout_recovered_webhook_event.rbs +113 -0
  63. data/sig/dodopayments/models/balance_ledger_entry.rbs +4 -0
  64. data/sig/dodopayments/models/balance_retrieve_ledger_params.rbs +4 -0
  65. data/sig/dodopayments/models/discount.rbs +5 -0
  66. data/sig/dodopayments/models/discount_create_params.rbs +7 -0
  67. data/sig/dodopayments/models/discount_update_params.rbs +5 -0
  68. data/sig/dodopayments/models/dunning_recovered_webhook_event.rbs +110 -0
  69. data/sig/dodopayments/models/dunning_started_webhook_event.rbs +110 -0
  70. data/sig/dodopayments/models/payouts/breakup/detail_download_csv_params.rbs +28 -0
  71. data/sig/dodopayments/models/payouts/breakup/detail_list_params.rbs +40 -0
  72. data/sig/dodopayments/models/payouts/breakup/detail_list_response.rbs +64 -0
  73. data/sig/dodopayments/models/payouts/breakup_retrieve_params.rbs +25 -0
  74. data/sig/dodopayments/models/payouts/breakup_retrieve_response.rbs +23 -0
  75. data/sig/dodopayments/models/subscription_update_params.rbs +20 -0
  76. data/sig/dodopayments/models/unsafe_unwrap_webhook_event.rbs +5 -1
  77. data/sig/dodopayments/models/unwrap_webhook_event.rbs +5 -1
  78. data/sig/dodopayments/models/webhook_event_type.rbs +12 -0
  79. data/sig/dodopayments/models/webhook_payload.rbs +165 -0
  80. data/sig/dodopayments/models.rbs +10 -0
  81. data/sig/dodopayments/resources/discounts.rbs +2 -0
  82. data/sig/dodopayments/resources/payouts/breakup/details.rbs +23 -0
  83. data/sig/dodopayments/resources/payouts/breakup.rbs +16 -0
  84. data/sig/dodopayments/resources/payouts.rbs +2 -0
  85. data/sig/dodopayments/resources/subscriptions.rbs +1 -0
  86. data/sig/dodopayments/resources/webhooks.rbs +10 -2
  87. metadata +35 -2
@@ -143,6 +143,27 @@ module Dodopayments
143
143
  :"credit.balance_low",
144
144
  Dodopayments::WebhookEventType::TaggedSymbol
145
145
  )
146
+ ABANDONED_CHECKOUT_DETECTED =
147
+ T.let(
148
+ :"abandoned_checkout.detected",
149
+ Dodopayments::WebhookEventType::TaggedSymbol
150
+ )
151
+ ABANDONED_CHECKOUT_RECOVERED =
152
+ T.let(
153
+ :"abandoned_checkout.recovered",
154
+ Dodopayments::WebhookEventType::TaggedSymbol
155
+ )
156
+ DUNNING_STARTED =
157
+ T.let(:"dunning.started", Dodopayments::WebhookEventType::TaggedSymbol)
158
+ DUNNING_RECOVERED =
159
+ T.let(
160
+ :"dunning.recovered",
161
+ Dodopayments::WebhookEventType::TaggedSymbol
162
+ )
163
+ ACR_EMAIL =
164
+ T.let(:"acr.email", Dodopayments::WebhookEventType::TaggedSymbol)
165
+ DUNNING_EMAIL =
166
+ T.let(:"dunning.email", Dodopayments::WebhookEventType::TaggedSymbol)
146
167
 
147
168
  sig do
148
169
  override.returns(T::Array[Dodopayments::WebhookEventType::TaggedSymbol])
@@ -21,7 +21,9 @@ module Dodopayments
21
21
  Dodopayments::WebhookPayload::Data::Dispute,
22
22
  Dodopayments::WebhookPayload::Data::LicenseKey,
23
23
  Dodopayments::WebhookPayload::Data::CreditLedgerEntry,
24
- Dodopayments::WebhookPayload::Data::CreditBalanceLow
24
+ Dodopayments::WebhookPayload::Data::CreditBalanceLow,
25
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout,
26
+ Dodopayments::WebhookPayload::Data::DunningAttempt
25
27
  )
26
28
  )
27
29
  end
@@ -47,7 +49,9 @@ module Dodopayments
47
49
  Dodopayments::WebhookPayload::Data::Dispute::OrHash,
48
50
  Dodopayments::WebhookPayload::Data::LicenseKey::OrHash,
49
51
  Dodopayments::WebhookPayload::Data::CreditLedgerEntry::OrHash,
50
- Dodopayments::WebhookPayload::Data::CreditBalanceLow::OrHash
52
+ Dodopayments::WebhookPayload::Data::CreditBalanceLow::OrHash,
53
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::OrHash,
54
+ Dodopayments::WebhookPayload::Data::DunningAttempt::OrHash
51
55
  ),
52
56
  timestamp: Time,
53
57
  type: Dodopayments::WebhookEventType::OrSymbol
@@ -77,7 +81,9 @@ module Dodopayments
77
81
  Dodopayments::WebhookPayload::Data::Dispute,
78
82
  Dodopayments::WebhookPayload::Data::LicenseKey,
79
83
  Dodopayments::WebhookPayload::Data::CreditLedgerEntry,
80
- Dodopayments::WebhookPayload::Data::CreditBalanceLow
84
+ Dodopayments::WebhookPayload::Data::CreditBalanceLow,
85
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout,
86
+ Dodopayments::WebhookPayload::Data::DunningAttempt
81
87
  ),
82
88
  timestamp: Time,
83
89
  type: Dodopayments::WebhookEventType::OrSymbol
@@ -100,7 +106,9 @@ module Dodopayments
100
106
  Dodopayments::WebhookPayload::Data::Dispute,
101
107
  Dodopayments::WebhookPayload::Data::LicenseKey,
102
108
  Dodopayments::WebhookPayload::Data::CreditLedgerEntry,
103
- Dodopayments::WebhookPayload::Data::CreditBalanceLow
109
+ Dodopayments::WebhookPayload::Data::CreditBalanceLow,
110
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout,
111
+ Dodopayments::WebhookPayload::Data::DunningAttempt
104
112
  )
105
113
  end
106
114
 
@@ -618,6 +626,394 @@ module Dodopayments
618
626
  end
619
627
  end
620
628
 
629
+ class AbandonedCheckout < Dodopayments::Internal::Type::BaseModel
630
+ OrHash =
631
+ T.type_alias do
632
+ T.any(
633
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout,
634
+ Dodopayments::Internal::AnyHash
635
+ )
636
+ end
637
+
638
+ sig { returns(Time) }
639
+ attr_accessor :abandoned_at
640
+
641
+ sig do
642
+ returns(
643
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::AbandonmentReason::OrSymbol
644
+ )
645
+ end
646
+ attr_accessor :abandonment_reason
647
+
648
+ sig { returns(String) }
649
+ attr_accessor :customer_id
650
+
651
+ sig do
652
+ returns(
653
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::PayloadType::OrSymbol
654
+ )
655
+ end
656
+ attr_accessor :payload_type
657
+
658
+ sig { returns(String) }
659
+ attr_accessor :payment_id
660
+
661
+ sig do
662
+ returns(
663
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::Status::OrSymbol
664
+ )
665
+ end
666
+ attr_accessor :status
667
+
668
+ sig { returns(T.nilable(String)) }
669
+ attr_accessor :recovered_payment_id
670
+
671
+ sig do
672
+ params(
673
+ abandoned_at: Time,
674
+ abandonment_reason:
675
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::AbandonmentReason::OrSymbol,
676
+ customer_id: String,
677
+ payload_type:
678
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::PayloadType::OrSymbol,
679
+ payment_id: String,
680
+ status:
681
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::Status::OrSymbol,
682
+ recovered_payment_id: T.nilable(String)
683
+ ).returns(T.attached_class)
684
+ end
685
+ def self.new(
686
+ abandoned_at:,
687
+ abandonment_reason:,
688
+ customer_id:,
689
+ payload_type:,
690
+ payment_id:,
691
+ status:,
692
+ recovered_payment_id: nil
693
+ )
694
+ end
695
+
696
+ sig do
697
+ override.returns(
698
+ {
699
+ abandoned_at: Time,
700
+ abandonment_reason:
701
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::AbandonmentReason::OrSymbol,
702
+ customer_id: String,
703
+ payload_type:
704
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::PayloadType::OrSymbol,
705
+ payment_id: String,
706
+ status:
707
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::Status::OrSymbol,
708
+ recovered_payment_id: T.nilable(String)
709
+ }
710
+ )
711
+ end
712
+ def to_hash
713
+ end
714
+
715
+ module AbandonmentReason
716
+ extend Dodopayments::Internal::Type::Enum
717
+
718
+ TaggedSymbol =
719
+ T.type_alias do
720
+ T.all(
721
+ Symbol,
722
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::AbandonmentReason
723
+ )
724
+ end
725
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
726
+
727
+ PAYMENT_FAILED =
728
+ T.let(
729
+ :payment_failed,
730
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::AbandonmentReason::TaggedSymbol
731
+ )
732
+ CHECKOUT_INCOMPLETE =
733
+ T.let(
734
+ :checkout_incomplete,
735
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::AbandonmentReason::TaggedSymbol
736
+ )
737
+
738
+ sig do
739
+ override.returns(
740
+ T::Array[
741
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::AbandonmentReason::TaggedSymbol
742
+ ]
743
+ )
744
+ end
745
+ def self.values
746
+ end
747
+ end
748
+
749
+ module PayloadType
750
+ extend Dodopayments::Internal::Type::Enum
751
+
752
+ TaggedSymbol =
753
+ T.type_alias do
754
+ T.all(
755
+ Symbol,
756
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::PayloadType
757
+ )
758
+ end
759
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
760
+
761
+ ABANDONED_CHECKOUT =
762
+ T.let(
763
+ :AbandonedCheckout,
764
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::PayloadType::TaggedSymbol
765
+ )
766
+
767
+ sig do
768
+ override.returns(
769
+ T::Array[
770
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::PayloadType::TaggedSymbol
771
+ ]
772
+ )
773
+ end
774
+ def self.values
775
+ end
776
+ end
777
+
778
+ module Status
779
+ extend Dodopayments::Internal::Type::Enum
780
+
781
+ TaggedSymbol =
782
+ T.type_alias do
783
+ T.all(
784
+ Symbol,
785
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::Status
786
+ )
787
+ end
788
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
789
+
790
+ ABANDONED =
791
+ T.let(
792
+ :abandoned,
793
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::Status::TaggedSymbol
794
+ )
795
+ RECOVERING =
796
+ T.let(
797
+ :recovering,
798
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::Status::TaggedSymbol
799
+ )
800
+ RECOVERED =
801
+ T.let(
802
+ :recovered,
803
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::Status::TaggedSymbol
804
+ )
805
+ EXHAUSTED =
806
+ T.let(
807
+ :exhausted,
808
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::Status::TaggedSymbol
809
+ )
810
+ OPTED_OUT =
811
+ T.let(
812
+ :opted_out,
813
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::Status::TaggedSymbol
814
+ )
815
+
816
+ sig do
817
+ override.returns(
818
+ T::Array[
819
+ Dodopayments::WebhookPayload::Data::AbandonedCheckout::Status::TaggedSymbol
820
+ ]
821
+ )
822
+ end
823
+ def self.values
824
+ end
825
+ end
826
+ end
827
+
828
+ class DunningAttempt < Dodopayments::Internal::Type::BaseModel
829
+ OrHash =
830
+ T.type_alias do
831
+ T.any(
832
+ Dodopayments::WebhookPayload::Data::DunningAttempt,
833
+ Dodopayments::Internal::AnyHash
834
+ )
835
+ end
836
+
837
+ sig { returns(Time) }
838
+ attr_accessor :created_at
839
+
840
+ sig { returns(String) }
841
+ attr_accessor :customer_id
842
+
843
+ sig do
844
+ returns(
845
+ Dodopayments::WebhookPayload::Data::DunningAttempt::PayloadType::OrSymbol
846
+ )
847
+ end
848
+ attr_accessor :payload_type
849
+
850
+ sig do
851
+ returns(
852
+ Dodopayments::WebhookPayload::Data::DunningAttempt::Status::OrSymbol
853
+ )
854
+ end
855
+ attr_accessor :status
856
+
857
+ sig { returns(String) }
858
+ attr_accessor :subscription_id
859
+
860
+ sig do
861
+ returns(
862
+ Dodopayments::WebhookPayload::Data::DunningAttempt::TriggerState::OrSymbol
863
+ )
864
+ end
865
+ attr_accessor :trigger_state
866
+
867
+ sig { returns(T.nilable(String)) }
868
+ attr_accessor :payment_id
869
+
870
+ sig do
871
+ params(
872
+ created_at: Time,
873
+ customer_id: String,
874
+ payload_type:
875
+ Dodopayments::WebhookPayload::Data::DunningAttempt::PayloadType::OrSymbol,
876
+ status:
877
+ Dodopayments::WebhookPayload::Data::DunningAttempt::Status::OrSymbol,
878
+ subscription_id: String,
879
+ trigger_state:
880
+ Dodopayments::WebhookPayload::Data::DunningAttempt::TriggerState::OrSymbol,
881
+ payment_id: T.nilable(String)
882
+ ).returns(T.attached_class)
883
+ end
884
+ def self.new(
885
+ created_at:,
886
+ customer_id:,
887
+ payload_type:,
888
+ status:,
889
+ subscription_id:,
890
+ trigger_state:,
891
+ payment_id: nil
892
+ )
893
+ end
894
+
895
+ sig do
896
+ override.returns(
897
+ {
898
+ created_at: Time,
899
+ customer_id: String,
900
+ payload_type:
901
+ Dodopayments::WebhookPayload::Data::DunningAttempt::PayloadType::OrSymbol,
902
+ status:
903
+ Dodopayments::WebhookPayload::Data::DunningAttempt::Status::OrSymbol,
904
+ subscription_id: String,
905
+ trigger_state:
906
+ Dodopayments::WebhookPayload::Data::DunningAttempt::TriggerState::OrSymbol,
907
+ payment_id: T.nilable(String)
908
+ }
909
+ )
910
+ end
911
+ def to_hash
912
+ end
913
+
914
+ module PayloadType
915
+ extend Dodopayments::Internal::Type::Enum
916
+
917
+ TaggedSymbol =
918
+ T.type_alias do
919
+ T.all(
920
+ Symbol,
921
+ Dodopayments::WebhookPayload::Data::DunningAttempt::PayloadType
922
+ )
923
+ end
924
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
925
+
926
+ DUNNING_ATTEMPT =
927
+ T.let(
928
+ :DunningAttempt,
929
+ Dodopayments::WebhookPayload::Data::DunningAttempt::PayloadType::TaggedSymbol
930
+ )
931
+
932
+ sig do
933
+ override.returns(
934
+ T::Array[
935
+ Dodopayments::WebhookPayload::Data::DunningAttempt::PayloadType::TaggedSymbol
936
+ ]
937
+ )
938
+ end
939
+ def self.values
940
+ end
941
+ end
942
+
943
+ module Status
944
+ extend Dodopayments::Internal::Type::Enum
945
+
946
+ TaggedSymbol =
947
+ T.type_alias do
948
+ T.all(
949
+ Symbol,
950
+ Dodopayments::WebhookPayload::Data::DunningAttempt::Status
951
+ )
952
+ end
953
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
954
+
955
+ RECOVERING =
956
+ T.let(
957
+ :recovering,
958
+ Dodopayments::WebhookPayload::Data::DunningAttempt::Status::TaggedSymbol
959
+ )
960
+ RECOVERED =
961
+ T.let(
962
+ :recovered,
963
+ Dodopayments::WebhookPayload::Data::DunningAttempt::Status::TaggedSymbol
964
+ )
965
+ EXHAUSTED =
966
+ T.let(
967
+ :exhausted,
968
+ Dodopayments::WebhookPayload::Data::DunningAttempt::Status::TaggedSymbol
969
+ )
970
+
971
+ sig do
972
+ override.returns(
973
+ T::Array[
974
+ Dodopayments::WebhookPayload::Data::DunningAttempt::Status::TaggedSymbol
975
+ ]
976
+ )
977
+ end
978
+ def self.values
979
+ end
980
+ end
981
+
982
+ module TriggerState
983
+ extend Dodopayments::Internal::Type::Enum
984
+
985
+ TaggedSymbol =
986
+ T.type_alias do
987
+ T.all(
988
+ Symbol,
989
+ Dodopayments::WebhookPayload::Data::DunningAttempt::TriggerState
990
+ )
991
+ end
992
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
993
+
994
+ ON_HOLD =
995
+ T.let(
996
+ :on_hold,
997
+ Dodopayments::WebhookPayload::Data::DunningAttempt::TriggerState::TaggedSymbol
998
+ )
999
+ CANCELLED =
1000
+ T.let(
1001
+ :cancelled,
1002
+ Dodopayments::WebhookPayload::Data::DunningAttempt::TriggerState::TaggedSymbol
1003
+ )
1004
+
1005
+ sig do
1006
+ override.returns(
1007
+ T::Array[
1008
+ Dodopayments::WebhookPayload::Data::DunningAttempt::TriggerState::TaggedSymbol
1009
+ ]
1010
+ )
1011
+ end
1012
+ def self.values
1013
+ end
1014
+ end
1015
+ end
1016
+
621
1017
  sig do
622
1018
  override.returns(
623
1019
  T::Array[Dodopayments::WebhookPayload::Data::Variants]
@@ -1,6 +1,12 @@
1
1
  # typed: strong
2
2
 
3
3
  module Dodopayments
4
+ AbandonedCheckoutDetectedWebhookEvent =
5
+ Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent
6
+
7
+ AbandonedCheckoutRecoveredWebhookEvent =
8
+ Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent
9
+
4
10
  AddMeterToPrice = Dodopayments::Models::AddMeterToPrice
5
11
 
6
12
  AddonCartResponseItem = Dodopayments::Models::AddonCartResponseItem
@@ -205,6 +211,11 @@ module Dodopayments
205
211
 
206
212
  DisputeWonWebhookEvent = Dodopayments::Models::DisputeWonWebhookEvent
207
213
 
214
+ DunningRecoveredWebhookEvent =
215
+ Dodopayments::Models::DunningRecoveredWebhookEvent
216
+
217
+ DunningStartedWebhookEvent = Dodopayments::Models::DunningStartedWebhookEvent
218
+
208
219
  Event = Dodopayments::Models::Event
209
220
 
210
221
  EventInput = Dodopayments::Models::EventInput
@@ -307,6 +318,8 @@ module Dodopayments
307
318
 
308
319
  PayoutListParams = Dodopayments::Models::PayoutListParams
309
320
 
321
+ Payouts = Dodopayments::Models::Payouts
322
+
310
323
  Price = Dodopayments::Models::Price
311
324
 
312
325
  Product = Dodopayments::Models::Product
@@ -11,6 +11,7 @@ module Dodopayments
11
11
  type: Dodopayments::DiscountType::OrSymbol,
12
12
  code: T.nilable(String),
13
13
  expires_at: T.nilable(Time),
14
+ metadata: T::Hash[Symbol, String],
14
15
  name: T.nilable(String),
15
16
  preserve_on_plan_change: T::Boolean,
16
17
  restricted_to: T.nilable(T::Array[String]),
@@ -38,6 +39,8 @@ module Dodopayments
38
39
  code: nil,
39
40
  # When the discount expires, if ever.
40
41
  expires_at: nil,
42
+ # Additional metadata for the discount
43
+ metadata: nil,
41
44
  name: nil,
42
45
  # Whether this discount should be preserved when a subscription changes plans.
43
46
  # Default: false (discount is removed on plan change)
@@ -75,6 +78,7 @@ module Dodopayments
75
78
  amount: T.nilable(Integer),
76
79
  code: T.nilable(String),
77
80
  expires_at: T.nilable(Time),
81
+ metadata: T.nilable(T::Hash[Symbol, String]),
78
82
  name: T.nilable(String),
79
83
  preserve_on_plan_change: T.nilable(T::Boolean),
80
84
  restricted_to: T.nilable(T::Array[String]),
@@ -98,6 +102,8 @@ module Dodopayments
98
102
  # If present, update the discount code (uppercase).
99
103
  code: nil,
100
104
  expires_at: nil,
105
+ # Additional metadata for the discount
106
+ metadata: nil,
101
107
  name: nil,
102
108
  # Whether this discount should be preserved when a subscription changes plans. If
103
109
  # not provided, the existing value is kept.
@@ -0,0 +1,60 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Resources
5
+ class Payouts
6
+ class Breakup
7
+ class Details
8
+ # Returns paginated individual balance ledger entries for a payout, with each
9
+ # entry's amount pro-rated into the payout's currency. Supports pagination via
10
+ # `page_size` (default 10, max 100) and `page_number` (default 0) query
11
+ # parameters.
12
+ sig do
13
+ params(
14
+ payout_id: String,
15
+ page_number: Integer,
16
+ page_size: Integer,
17
+ request_options: Dodopayments::RequestOptions::OrHash
18
+ ).returns(
19
+ Dodopayments::Internal::DefaultPageNumberPagination[
20
+ Dodopayments::Models::Payouts::Breakup::DetailListResponse
21
+ ]
22
+ )
23
+ end
24
+ def list(
25
+ # Id of the Payout to get breakup for
26
+ payout_id,
27
+ # Page number (0-indexed). Default: 0.
28
+ page_number: nil,
29
+ # Number of items per page. Default: 10, Max: 100.
30
+ page_size: nil,
31
+ request_options: {}
32
+ )
33
+ end
34
+
35
+ # Downloads the complete payout breakup as a CSV file. Each row represents a
36
+ # balance ledger entry with columns: Ledger ID, Event Type, Original Amount,
37
+ # Original Currency, Reference Object ID, Description, Created At, USD Equivalent
38
+ # Amount, and Payout Currency Amount.
39
+ sig do
40
+ params(
41
+ payout_id: String,
42
+ request_options: Dodopayments::RequestOptions::OrHash
43
+ ).void
44
+ end
45
+ def download_csv(
46
+ # Id of the Payout to get breakup for
47
+ payout_id,
48
+ request_options: {}
49
+ )
50
+ end
51
+
52
+ # @api private
53
+ sig { params(client: Dodopayments::Client).returns(T.attached_class) }
54
+ def self.new(client:)
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,36 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Resources
5
+ class Payouts
6
+ class Breakup
7
+ sig { returns(Dodopayments::Resources::Payouts::Breakup::Details) }
8
+ attr_reader :details
9
+
10
+ # Returns the breakdown of a payout by event type (payments, refunds, disputes,
11
+ # fees, etc.) in the payout's currency. Each amount is proportionally allocated
12
+ # based on USD equivalent values, ensuring the total sums exactly to the payout
13
+ # amount.
14
+ sig do
15
+ params(
16
+ payout_id: String,
17
+ request_options: Dodopayments::RequestOptions::OrHash
18
+ ).returns(
19
+ T::Array[Dodopayments::Models::Payouts::BreakupRetrieveResponseItem]
20
+ )
21
+ end
22
+ def retrieve(
23
+ # Id of the Payout to get breakup for
24
+ payout_id,
25
+ request_options: {}
26
+ )
27
+ end
28
+
29
+ # @api private
30
+ sig { params(client: Dodopayments::Client).returns(T.attached_class) }
31
+ def self.new(client:)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -3,6 +3,9 @@
3
3
  module Dodopayments
4
4
  module Resources
5
5
  class Payouts
6
+ sig { returns(Dodopayments::Resources::Payouts::Breakup) }
7
+ attr_reader :breakup
8
+
6
9
  sig do
7
10
  params(
8
11
  created_at_gte: Time,
@@ -112,6 +112,10 @@ module Dodopayments
112
112
  subscription_id: String,
113
113
  billing: T.nilable(Dodopayments::BillingAddress::OrHash),
114
114
  cancel_at_next_billing_date: T.nilable(T::Boolean),
115
+ cancel_reason:
116
+ T.nilable(
117
+ Dodopayments::SubscriptionUpdateParams::CancelReason::OrSymbol
118
+ ),
115
119
  credit_entitlement_cart:
116
120
  T.nilable(
117
121
  T::Array[
@@ -136,6 +140,7 @@ module Dodopayments
136
140
  billing: nil,
137
141
  # When set, the subscription will remain active until the end of billing period
138
142
  cancel_at_next_billing_date: nil,
143
+ cancel_reason: nil,
139
144
  # Update credit entitlement cart settings
140
145
  credit_entitlement_cart: nil,
141
146
  customer_name: nil,
@@ -131,6 +131,8 @@ module Dodopayments
131
131
  sig do
132
132
  params(payload: String).returns(
133
133
  T.any(
134
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent,
135
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent,
134
136
  Dodopayments::CreditAddedWebhookEvent,
135
137
  Dodopayments::CreditBalanceLowWebhookEvent,
136
138
  Dodopayments::CreditDeductedWebhookEvent,
@@ -146,6 +148,8 @@ module Dodopayments
146
148
  Dodopayments::DisputeLostWebhookEvent,
147
149
  Dodopayments::DisputeOpenedWebhookEvent,
148
150
  Dodopayments::DisputeWonWebhookEvent,
151
+ Dodopayments::DunningRecoveredWebhookEvent,
152
+ Dodopayments::DunningStartedWebhookEvent,
149
153
  Dodopayments::LicenseKeyCreatedWebhookEvent,
150
154
  Dodopayments::PaymentCancelledWebhookEvent,
151
155
  Dodopayments::PaymentFailedWebhookEvent,
@@ -177,6 +181,8 @@ module Dodopayments
177
181
  key: T.nilable(String)
178
182
  ).returns(
179
183
  T.any(
184
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent,
185
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent,
180
186
  Dodopayments::CreditAddedWebhookEvent,
181
187
  Dodopayments::CreditBalanceLowWebhookEvent,
182
188
  Dodopayments::CreditDeductedWebhookEvent,
@@ -192,6 +198,8 @@ module Dodopayments
192
198
  Dodopayments::DisputeLostWebhookEvent,
193
199
  Dodopayments::DisputeOpenedWebhookEvent,
194
200
  Dodopayments::DisputeWonWebhookEvent,
201
+ Dodopayments::DunningRecoveredWebhookEvent,
202
+ Dodopayments::DunningStartedWebhookEvent,
195
203
  Dodopayments::LicenseKeyCreatedWebhookEvent,
196
204
  Dodopayments::PaymentCancelledWebhookEvent,
197
205
  Dodopayments::PaymentFailedWebhookEvent,