frame_payments 0.1.0 → 0.1.2

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 (40) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +13 -28
  3. data/lib/frame/resources/account.rb +63 -0
  4. data/lib/frame/resources/billing.rb +63 -0
  5. data/lib/frame/resources/capability.rb +27 -0
  6. data/lib/frame/resources/charge.rb +19 -0
  7. data/lib/frame/resources/charge_intent.rb +22 -4
  8. data/lib/frame/resources/charge_session.rb +29 -0
  9. data/lib/frame/resources/coupon.rb +33 -0
  10. data/lib/frame/resources/customer.rb +9 -0
  11. data/lib/frame/resources/customer_identity_verification.rb +4 -4
  12. data/lib/frame/resources/discount.rb +23 -0
  13. data/lib/frame/resources/dispute.rb +41 -0
  14. data/lib/frame/resources/geofence.rb +15 -0
  15. data/lib/frame/resources/invoice.rb +4 -40
  16. data/lib/frame/resources/invoice_line_item.rb +10 -11
  17. data/lib/frame/resources/onboarding.rb +31 -0
  18. data/lib/frame/resources/onboarding_session.rb +19 -0
  19. data/lib/frame/resources/payment_link_session.rb +15 -0
  20. data/lib/frame/resources/payment_method.rb +39 -13
  21. data/lib/frame/resources/payout.rb +15 -0
  22. data/lib/frame/resources/phone_verification.rb +19 -0
  23. data/lib/frame/resources/product.rb +9 -0
  24. data/lib/frame/resources/product_phase.rb +19 -11
  25. data/lib/frame/resources/promotion_code.rb +33 -0
  26. data/lib/frame/resources/refund.rb +0 -18
  27. data/lib/frame/resources/sonar_session.rb +29 -0
  28. data/lib/frame/resources/subscription.rb +0 -36
  29. data/lib/frame/resources/subscription_change_log.rb +15 -0
  30. data/lib/frame/resources/subscription_phase.rb +19 -11
  31. data/lib/frame/resources/terms_of_service.rb +19 -0
  32. data/lib/frame/resources/three_ds_intent.rb +27 -0
  33. data/lib/frame/resources/transfer.rb +23 -0
  34. data/lib/frame/resources/transfer_billing_agreement.rb +37 -0
  35. data/lib/frame/resources/transfer_fee_plan.rb +23 -0
  36. data/lib/frame/resources/webhook_endpoint.rb +0 -94
  37. data/lib/frame/resources.rb +34 -0
  38. data/lib/frame/util.rb +9 -0
  39. data/lib/frame/version.rb +1 -1
  40. metadata +28 -6
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Frame
4
+ class OnboardingSession < APIResource
5
+ OBJECT_NAME = "onboarding_session"
6
+
7
+ def self.object_name
8
+ OBJECT_NAME
9
+ end
10
+
11
+ def self.create(params = {}, opts = {})
12
+ request_object(:post, "/v1/onboarding_sessions", params, opts)
13
+ end
14
+
15
+ def self.list(params = {}, opts = {})
16
+ request_object(:get, "/v1/onboarding_sessions", params, opts)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Frame
4
+ class PaymentLinkSession < APIResource
5
+ OBJECT_NAME = "payment_link_session"
6
+
7
+ def self.object_name
8
+ OBJECT_NAME
9
+ end
10
+
11
+ def self.create(params = {}, opts = {})
12
+ request_object(:post, "/v1/payment_link_sessions", params, opts)
13
+ end
14
+ end
15
+ end
@@ -4,7 +4,6 @@ module Frame
4
4
  class PaymentMethod < APIResource
5
5
  extend Frame::APIOperations::Create
6
6
  extend Frame::APIOperations::List
7
- include Frame::APIOperations::Delete
8
7
  include Frame::APIOperations::Save
9
8
 
10
9
  OBJECT_NAME = "payment_method"
@@ -41,10 +40,10 @@ module Frame
41
40
  )
42
41
  end
43
42
 
44
- def self.delete(id, params = {}, opts = {})
43
+ def self.connect_plaid(params = {}, opts = {})
45
44
  request_object(
46
- :delete,
47
- "/v1/payment_methods/#{CGI.escape(id)}",
45
+ :post,
46
+ "/v1/payment_methods/connect_plaid",
48
47
  params,
49
48
  opts
50
49
  )
@@ -68,15 +67,6 @@ module Frame
68
67
  self
69
68
  end
70
69
 
71
- def delete(params = {}, opts = {})
72
- request_object(
73
- :delete,
74
- "/v1/payment_methods/#{CGI.escape(self["id"])}",
75
- params,
76
- opts
77
- )
78
- end
79
-
80
70
  def attach(customer_id, params = {}, opts = {})
81
71
  request_object(
82
72
  :post,
@@ -112,5 +102,41 @@ module Frame
112
102
  opts
113
103
  )
114
104
  end
105
+
106
+ def block(params = {}, opts = {})
107
+ request_object(
108
+ :post,
109
+ "/v1/payment_methods/#{CGI.escape(self["id"])}/block",
110
+ params,
111
+ opts
112
+ )
113
+ end
114
+
115
+ def self.block(id, params = {}, opts = {})
116
+ request_object(
117
+ :post,
118
+ "/v1/payment_methods/#{CGI.escape(id)}/block",
119
+ params,
120
+ opts
121
+ )
122
+ end
123
+
124
+ def unblock(params = {}, opts = {})
125
+ request_object(
126
+ :post,
127
+ "/v1/payment_methods/#{CGI.escape(self["id"])}/unblock",
128
+ params,
129
+ opts
130
+ )
131
+ end
132
+
133
+ def self.unblock(id, params = {}, opts = {})
134
+ request_object(
135
+ :post,
136
+ "/v1/payment_methods/#{CGI.escape(id)}/unblock",
137
+ params,
138
+ opts
139
+ )
140
+ end
115
141
  end
116
142
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Frame
4
+ class Payout < APIResource
5
+ OBJECT_NAME = "payout"
6
+
7
+ def self.object_name
8
+ OBJECT_NAME
9
+ end
10
+
11
+ def self.create(params = {}, opts = {})
12
+ request_object(:post, "/v1/payouts", params, opts)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Frame
4
+ class PhoneVerification < APIResource
5
+ OBJECT_NAME = "phone_verification"
6
+
7
+ def self.object_name
8
+ OBJECT_NAME
9
+ end
10
+
11
+ def self.create(account_id, params = {}, opts = {})
12
+ request_object(:post, "/v1/accounts/#{CGI.escape(account_id)}/phone_verifications", params, opts)
13
+ end
14
+
15
+ def self.confirm(account_id, id, params = {}, opts = {})
16
+ request_object(:post, "/v1/accounts/#{CGI.escape(account_id)}/phone_verifications/#{CGI.escape(id)}/confirm", params, opts)
17
+ end
18
+ end
19
+ end
@@ -41,6 +41,15 @@ module Frame
41
41
  )
42
42
  end
43
43
 
44
+ def self.search(params = {}, opts = {})
45
+ request_object(
46
+ :get,
47
+ "/v1/products/search",
48
+ params,
49
+ opts
50
+ )
51
+ end
52
+
44
53
  def self.delete(id, params = {}, opts = {})
45
54
  request_object(
46
55
  :delete,
@@ -13,38 +13,46 @@ module Frame
13
13
  OBJECT_NAME
14
14
  end
15
15
 
16
- def self.create(params = {}, opts = {})
16
+ def self.create(product_id, params = {}, opts = {})
17
17
  request_object(
18
18
  :post,
19
- "/v1/product_phases",
19
+ "/v1/products/#{CGI.escape(product_id)}/phases",
20
20
  params,
21
21
  opts
22
22
  )
23
23
  end
24
24
 
25
- def self.list(params = {}, opts = {})
25
+ def self.list(product_id, params = {}, opts = {})
26
26
  request_object(
27
27
  :get,
28
- "/v1/product_phases",
28
+ "/v1/products/#{CGI.escape(product_id)}/phases",
29
29
  params,
30
30
  opts
31
31
  )
32
32
  end
33
33
 
34
- def self.retrieve(id, opts = {})
35
- id = Util.normalize_id(id)
34
+ def self.retrieve(product_id, id, opts = {})
36
35
  request_object(
37
36
  :get,
38
- "/v1/product_phases/#{CGI.escape(id)}",
37
+ "/v1/products/#{CGI.escape(product_id)}/phases/#{CGI.escape(id)}",
39
38
  {},
40
39
  opts
41
40
  )
42
41
  end
43
42
 
44
- def self.delete(id, params = {}, opts = {})
43
+ def self.bulk_update(product_id, phases, opts = {})
44
+ request_object(
45
+ :patch,
46
+ "/v1/products/#{CGI.escape(product_id)}/phases/bulk_update",
47
+ {phases: phases},
48
+ opts
49
+ )
50
+ end
51
+
52
+ def self.delete(product_id, id, params = {}, opts = {})
45
53
  request_object(
46
54
  :delete,
47
- "/v1/product_phases/#{CGI.escape(id)}",
55
+ "/v1/products/#{CGI.escape(product_id)}/phases/#{CGI.escape(id)}",
48
56
  params,
49
57
  opts
50
58
  )
@@ -59,7 +67,7 @@ module Frame
59
67
 
60
68
  updated = request_object(
61
69
  :patch,
62
- "/v1/product_phases/#{CGI.escape(self["id"])}",
70
+ "/v1/products/#{CGI.escape(self["product"])}/phases/#{CGI.escape(self["id"])}",
63
71
  values,
64
72
  opts
65
73
  )
@@ -71,7 +79,7 @@ module Frame
71
79
  def delete(params = {}, opts = {})
72
80
  request_object(
73
81
  :delete,
74
- "/v1/product_phases/#{CGI.escape(self["id"])}",
82
+ "/v1/products/#{CGI.escape(self["product"])}/phases/#{CGI.escape(self["id"])}",
75
83
  params,
76
84
  opts
77
85
  )
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Frame
4
+ class PromotionCode < APIResource
5
+ include Frame::APIOperations::Save
6
+
7
+ OBJECT_NAME = "promotion_code"
8
+
9
+ def self.object_name
10
+ OBJECT_NAME
11
+ end
12
+
13
+ def self.create(params = {}, opts = {})
14
+ request_object(:post, "/v1/promotion_codes", params, opts)
15
+ end
16
+
17
+ def self.list(params = {}, opts = {})
18
+ request_object(:get, "/v1/promotion_codes", params, opts)
19
+ end
20
+
21
+ def self.retrieve(id, opts = {})
22
+ request_object(:get, "/v1/promotion_codes/#{CGI.escape(id)}", {}, opts)
23
+ end
24
+
25
+ def save(params = {}, opts = {})
26
+ values = serialize_params(self).merge(params)
27
+ return self if values.empty?
28
+ updated = request_object(:patch, "/v1/promotion_codes/#{CGI.escape(self["id"])}", values, opts)
29
+ initialize_from(updated)
30
+ self
31
+ end
32
+ end
33
+ end
@@ -38,23 +38,5 @@ module Frame
38
38
  opts
39
39
  )
40
40
  end
41
-
42
- def cancel(params = {}, opts = {})
43
- request_object(
44
- :post,
45
- "/v1/refunds/#{CGI.escape(self["id"])}/cancel",
46
- params,
47
- opts
48
- )
49
- end
50
-
51
- def self.cancel(id, params = {}, opts = {})
52
- request_object(
53
- :post,
54
- "/v1/refunds/#{CGI.escape(id)}/cancel",
55
- params,
56
- opts
57
- )
58
- end
59
41
  end
60
42
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Frame
4
+ class SonarSession < APIResource
5
+ include Frame::APIOperations::Save
6
+
7
+ OBJECT_NAME = "sonar_session"
8
+
9
+ def self.object_name
10
+ OBJECT_NAME
11
+ end
12
+
13
+ def self.create(params = {}, opts = {})
14
+ request_object(:post, "/v1/sonar_sessions", params, opts)
15
+ end
16
+
17
+ def self.update(id, params = {}, opts = {})
18
+ request_object(:patch, "/v1/sonar_sessions/#{CGI.escape(id)}", params, opts)
19
+ end
20
+
21
+ def save(params = {}, opts = {})
22
+ values = serialize_params(self).merge(params)
23
+ return self if values.empty?
24
+ updated = request_object(:patch, "/v1/sonar_sessions/#{CGI.escape(self["id"])}", values, opts)
25
+ initialize_from(updated)
26
+ self
27
+ end
28
+ end
29
+ end
@@ -94,41 +94,5 @@ module Frame
94
94
  opts
95
95
  )
96
96
  end
97
-
98
- def resume(params = {}, opts = {})
99
- request_object(
100
- :post,
101
- "/v1/subscriptions/#{CGI.escape(self["id"])}/resume",
102
- params,
103
- opts
104
- )
105
- end
106
-
107
- def self.resume(id, params = {}, opts = {})
108
- request_object(
109
- :post,
110
- "/v1/subscriptions/#{CGI.escape(id)}/resume",
111
- params,
112
- opts
113
- )
114
- end
115
-
116
- def pause(params = {}, opts = {})
117
- request_object(
118
- :post,
119
- "/v1/subscriptions/#{CGI.escape(self["id"])}/pause",
120
- params,
121
- opts
122
- )
123
- end
124
-
125
- def self.pause(id, params = {}, opts = {})
126
- request_object(
127
- :post,
128
- "/v1/subscriptions/#{CGI.escape(id)}/pause",
129
- params,
130
- opts
131
- )
132
- end
133
97
  end
134
98
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Frame
4
+ class SubscriptionChangeLog < APIResource
5
+ OBJECT_NAME = "subscription_change_log"
6
+
7
+ def self.object_name
8
+ OBJECT_NAME
9
+ end
10
+
11
+ def self.list(subscription_id, params = {}, opts = {})
12
+ request_object(:get, "/v1/subscriptions/#{CGI.escape(subscription_id)}/change_logs", params, opts)
13
+ end
14
+ end
15
+ end
@@ -13,38 +13,46 @@ module Frame
13
13
  OBJECT_NAME
14
14
  end
15
15
 
16
- def self.create(params = {}, opts = {})
16
+ def self.create(subscription_id, params = {}, opts = {})
17
17
  request_object(
18
18
  :post,
19
- "/v1/subscription_phases",
19
+ "/v1/subscriptions/#{CGI.escape(subscription_id)}/phases",
20
20
  params,
21
21
  opts
22
22
  )
23
23
  end
24
24
 
25
- def self.list(params = {}, opts = {})
25
+ def self.list(subscription_id, params = {}, opts = {})
26
26
  request_object(
27
27
  :get,
28
- "/v1/subscription_phases",
28
+ "/v1/subscriptions/#{CGI.escape(subscription_id)}/phases",
29
29
  params,
30
30
  opts
31
31
  )
32
32
  end
33
33
 
34
- def self.retrieve(id, opts = {})
35
- id = Util.normalize_id(id)
34
+ def self.retrieve(subscription_id, id, opts = {})
36
35
  request_object(
37
36
  :get,
38
- "/v1/subscription_phases/#{CGI.escape(id)}",
37
+ "/v1/subscriptions/#{CGI.escape(subscription_id)}/phases/#{CGI.escape(id)}",
39
38
  {},
40
39
  opts
41
40
  )
42
41
  end
43
42
 
44
- def self.delete(id, params = {}, opts = {})
43
+ def self.bulk_update(subscription_id, phases, opts = {})
44
+ request_object(
45
+ :patch,
46
+ "/v1/subscriptions/#{CGI.escape(subscription_id)}/phases/bulk_update",
47
+ {phases: phases},
48
+ opts
49
+ )
50
+ end
51
+
52
+ def self.delete(subscription_id, id, params = {}, opts = {})
45
53
  request_object(
46
54
  :delete,
47
- "/v1/subscription_phases/#{CGI.escape(id)}",
55
+ "/v1/subscriptions/#{CGI.escape(subscription_id)}/phases/#{CGI.escape(id)}",
48
56
  params,
49
57
  opts
50
58
  )
@@ -59,7 +67,7 @@ module Frame
59
67
 
60
68
  updated = request_object(
61
69
  :patch,
62
- "/v1/subscription_phases/#{CGI.escape(self["id"])}",
70
+ "/v1/subscriptions/#{CGI.escape(self["subscription"])}/phases/#{CGI.escape(self["id"])}",
63
71
  values,
64
72
  opts
65
73
  )
@@ -71,7 +79,7 @@ module Frame
71
79
  def delete(params = {}, opts = {})
72
80
  request_object(
73
81
  :delete,
74
- "/v1/subscription_phases/#{CGI.escape(self["id"])}",
82
+ "/v1/subscriptions/#{CGI.escape(self["subscription"])}/phases/#{CGI.escape(self["id"])}",
75
83
  params,
76
84
  opts
77
85
  )
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Frame
4
+ class TermsOfService < APIResource
5
+ OBJECT_NAME = "terms_of_service"
6
+
7
+ def self.object_name
8
+ OBJECT_NAME
9
+ end
10
+
11
+ def self.create_token(opts = {})
12
+ request_object(:post, "/v1/terms_of_service", {}, opts)
13
+ end
14
+
15
+ def self.update(params = {}, opts = {})
16
+ request_object(:patch, "/v1/terms_of_service", params, opts)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Frame
4
+ class ThreeDsIntent < APIResource
5
+ OBJECT_NAME = "three_ds_intent"
6
+
7
+ def self.object_name
8
+ OBJECT_NAME
9
+ end
10
+
11
+ def self.create(params = {}, opts = {})
12
+ request_object(:post, "/v1/3ds/intents", params, opts)
13
+ end
14
+
15
+ def self.retrieve(id, opts = {})
16
+ request_object(:get, "/v1/3ds/intents/#{CGI.escape(id)}", {}, opts)
17
+ end
18
+
19
+ def self.resend(id, params = {}, opts = {})
20
+ request_object(:post, "/v1/3ds/intents/#{CGI.escape(id)}/resend", params, opts)
21
+ end
22
+
23
+ def resend(params = {}, opts = {})
24
+ request_object(:post, "/v1/3ds/intents/#{CGI.escape(self["id"])}/resend", params, opts)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Frame
4
+ class Transfer < APIResource
5
+ OBJECT_NAME = "transfer"
6
+
7
+ def self.object_name
8
+ OBJECT_NAME
9
+ end
10
+
11
+ def self.create(params = {}, opts = {})
12
+ request_object(:post, "/v1/transfers", params, opts)
13
+ end
14
+
15
+ def self.list(params = {}, opts = {})
16
+ request_object(:get, "/v1/transfers", params, opts)
17
+ end
18
+
19
+ def self.retrieve(id, opts = {})
20
+ request_object(:get, "/v1/transfers/#{CGI.escape(id)}", {}, opts)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Frame
4
+ class TransferBillingAgreement < APIResource
5
+ include Frame::APIOperations::Save
6
+
7
+ OBJECT_NAME = "transfer_billing_agreement"
8
+
9
+ def self.object_name
10
+ OBJECT_NAME
11
+ end
12
+
13
+ def self.create(params = {}, opts = {})
14
+ request_object(:post, "/v1/transfer_billing_agreements", params, opts)
15
+ end
16
+
17
+ def self.list(params = {}, opts = {})
18
+ request_object(:get, "/v1/transfer_billing_agreements", params, opts)
19
+ end
20
+
21
+ def self.retrieve(id, opts = {})
22
+ request_object(:get, "/v1/transfer_billing_agreements/#{CGI.escape(id)}", {}, opts)
23
+ end
24
+
25
+ def self.update(id, params = {}, opts = {})
26
+ request_object(:patch, "/v1/transfer_billing_agreements/#{CGI.escape(id)}", params, opts)
27
+ end
28
+
29
+ def save(params = {}, opts = {})
30
+ values = serialize_params(self).merge(params)
31
+ return self if values.empty?
32
+ updated = request_object(:patch, "/v1/transfer_billing_agreements/#{CGI.escape(self["id"])}", values, opts)
33
+ initialize_from(updated)
34
+ self
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Frame
4
+ class TransferFeePlan < APIResource
5
+ OBJECT_NAME = "transfer_fee_plan"
6
+
7
+ def self.object_name
8
+ OBJECT_NAME
9
+ end
10
+
11
+ def self.create(params = {}, opts = {})
12
+ request_object(:post, "/v1/transfer_fee_plans", params, opts)
13
+ end
14
+
15
+ def self.list(params = {}, opts = {})
16
+ request_object(:get, "/v1/transfer_fee_plans", params, opts)
17
+ end
18
+
19
+ def self.retrieve(id, opts = {})
20
+ request_object(:get, "/v1/transfer_fee_plans/#{CGI.escape(id)}", {}, opts)
21
+ end
22
+ end
23
+ end