lago-ruby-client 1.31.0 → 1.33.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 (36) hide show
  1. checksums.yaml +4 -4
  2. data/lib/lago/api/client.rb +109 -36
  3. data/lib/lago/api/connection.rb +12 -0
  4. data/lib/lago/api/resources/activity_log.rb +2 -0
  5. data/lib/lago/api/resources/add_on.rb +2 -0
  6. data/lib/lago/api/resources/api_log.rb +29 -0
  7. data/lib/lago/api/resources/applied_coupon.rb +2 -0
  8. data/lib/lago/api/resources/billable_metric.rb +2 -0
  9. data/lib/lago/api/resources/billing_entity.rb +2 -0
  10. data/lib/lago/api/resources/coupon.rb +2 -0
  11. data/lib/lago/api/resources/credit_note.rb +2 -0
  12. data/lib/lago/api/resources/customer.rb +2 -0
  13. data/lib/lago/api/resources/event.rb +2 -0
  14. data/lib/lago/api/resources/feature.rb +41 -0
  15. data/lib/lago/api/resources/fee.rb +2 -0
  16. data/lib/lago/api/resources/gross_revenue.rb +2 -0
  17. data/lib/lago/api/resources/invoice.rb +2 -0
  18. data/lib/lago/api/resources/invoice_collection.rb +2 -0
  19. data/lib/lago/api/resources/invoiced_usage.rb +2 -0
  20. data/lib/lago/api/resources/mrr.rb +2 -0
  21. data/lib/lago/api/resources/organization.rb +2 -0
  22. data/lib/lago/api/resources/overdue_balance.rb +2 -0
  23. data/lib/lago/api/resources/payment.rb +2 -0
  24. data/lib/lago/api/resources/payment_receipt.rb +2 -0
  25. data/lib/lago/api/resources/payment_request.rb +3 -0
  26. data/lib/lago/api/resources/plan.rb +58 -0
  27. data/lib/lago/api/resources/subscription.rb +109 -0
  28. data/lib/lago/api/resources/tax.rb +2 -0
  29. data/lib/lago/api/resources/usage.rb +17 -0
  30. data/lib/lago/api/resources/wallet.rb +3 -1
  31. data/lib/lago/api/resources/wallet_transaction.rb +2 -0
  32. data/lib/lago/api/resources/webhook.rb +2 -0
  33. data/lib/lago/api/resources/webhook_endpoint.rb +2 -0
  34. data/lib/lago/version.rb +1 -1
  35. data/lib/lago-ruby-client.rb +0 -29
  36. metadata +5 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f941a6113843796ddf07fda53643d7840f644067ab0b13525c867568ad9d8e93
4
- data.tar.gz: a6c2744fb1ca3e3d0b42851bf3326f6e4d7cae026812745e6a413b51342ce48c
3
+ metadata.gz: ae486c8aa536d42665ea1994923d83baa1a35b782a8d679d3b39fc2aeb36f983
4
+ data.tar.gz: e5d0735075100f36509294a93413e58fab3108626522aef0fcbc47b78a3d5057
5
5
  SHA512:
6
- metadata.gz: bd6619f8a0b306db83e1e38054bca04c4cad84d75f952a24c54d797333d168117bbf05cb90051ded287720ba6f1e502e638b8712ae6a3fe586112997cce9d144
7
- data.tar.gz: 5c19eb94fa5d50f82957105d483a0f9f064b7bb1387d5faa9684bf15992e6feff2aa9f62494d45a0f196b195d6dbbb103aa938842e7215298b187b9ebe341f1b
6
+ metadata.gz: 0c3c2e3a7829ed0e421f503f01228853e5e45e5e957f0c39efca95bdbb243e7a065f1678b66fa850dfe0d3febdb0f4b4c6d5c14429905ed7843a2db8c2473df7
7
+ data.tar.gz: 604bc299b1ac0b145879db8f476126378de33e1189ddd778fd3900eabad78e1178e28fce1c18e251a67e2a20ce7e68fb05e9032524057ef29278e6252118faf6
@@ -1,5 +1,37 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+ require 'lago/api/resources/activity_log'
5
+ require 'lago/api/resources/add_on'
6
+ require 'lago/api/resources/api_log'
7
+ require 'lago/api/resources/applied_coupon'
8
+ require 'lago/api/resources/billable_metric'
9
+ require 'lago/api/resources/billing_entity'
10
+ require 'lago/api/resources/coupon'
11
+ require 'lago/api/resources/credit_note'
12
+ require 'lago/api/resources/customer'
13
+ require 'lago/api/resources/event'
14
+ require 'lago/api/resources/feature'
15
+ require 'lago/api/resources/fee'
16
+ require 'lago/api/resources/gross_revenue'
17
+ require 'lago/api/resources/invoice'
18
+ require 'lago/api/resources/invoice_collection'
19
+ require 'lago/api/resources/invoiced_usage'
20
+ require 'lago/api/resources/mrr'
21
+ require 'lago/api/resources/organization'
22
+ require 'lago/api/resources/overdue_balance'
23
+ require 'lago/api/resources/payment'
24
+ require 'lago/api/resources/payment_receipt'
25
+ require 'lago/api/resources/payment_request'
26
+ require 'lago/api/resources/plan'
27
+ require 'lago/api/resources/subscription'
28
+ require 'lago/api/resources/tax'
29
+ require 'lago/api/resources/usage'
30
+ require 'lago/api/resources/wallet'
31
+ require 'lago/api/resources/wallet_transaction'
32
+ require 'lago/api/resources/webhook'
33
+ require 'lago/api/resources/webhook_endpoint'
34
+
3
35
  module Lago
4
36
  module Api
5
37
  BASE_URL = 'https://api.getlago.com/'
@@ -29,80 +61,121 @@ module Lago
29
61
  URI.join(ingest_url, Lago::Api::API_PATH)
30
62
  end
31
63
 
32
- def customers
33
- Lago::Api::Resources::Customer.new(self)
64
+ # Resources
65
+ def activity_logs
66
+ Resources::ActivityLog.new(self)
34
67
  end
35
68
 
36
- def invoices
37
- Lago::Api::Resources::Invoice.new(self)
69
+ def add_ons
70
+ Resources::AddOn.new(self)
38
71
  end
39
72
 
40
- def subscriptions
41
- Lago::Api::Resources::Subscription.new(self)
73
+ def api_logs
74
+ Resources::ApiLog.new(self)
42
75
  end
43
76
 
44
- def events
45
- Lago::Api::Resources::Event.new(self)
77
+ def applied_coupons
78
+ Resources::AppliedCoupon.new(self)
46
79
  end
47
80
 
48
- def fees
49
- Lago::Api::Resources::Fee.new(self)
81
+ def billable_metrics
82
+ Resources::BillableMetric.new(self)
50
83
  end
51
84
 
52
- def applied_coupons
53
- Lago::Api::Resources::AppliedCoupon.new(self)
85
+ def billing_entities
86
+ Resources::BillingEntity.new(self)
54
87
  end
55
88
 
56
- def billable_metrics
57
- Lago::Api::Resources::BillableMetric.new(self)
89
+ def coupons
90
+ Resources::Coupon.new(self)
58
91
  end
59
92
 
60
93
  def credit_notes
61
- Lago::Api::Resources::CreditNote.new(self)
94
+ Resources::CreditNote.new(self)
62
95
  end
63
96
 
64
- def plans
65
- Lago::Api::Resources::Plan.new(self)
97
+ def customers
98
+ Resources::Customer.new(self)
66
99
  end
67
100
 
68
- def coupons
69
- Lago::Api::Resources::Coupon.new(self)
101
+ def events
102
+ Resources::Event.new(self)
70
103
  end
71
104
 
72
- def add_ons
73
- Lago::Api::Resources::AddOn.new(self)
105
+ def features
106
+ Resources::Feature.new(self)
107
+ end
108
+
109
+ def fees
110
+ Resources::Fee.new(self)
111
+ end
112
+
113
+ def gross_revenues
114
+ Resources::GrossRevenue.new(self)
115
+ end
116
+
117
+ def invoice_collections
118
+ Resources::InvoiceCollection.new(self)
119
+ end
120
+
121
+ def invoiced_usages
122
+ Resources::InvoicedUsage.new(self)
123
+ end
124
+
125
+ def invoices
126
+ Resources::Invoice.new(self)
127
+ end
128
+
129
+ def mrrs
130
+ Resources::Mrr.new(self)
74
131
  end
75
132
 
76
133
  def organizations
77
- Lago::Api::Resources::Organization.new(self)
134
+ Resources::Organization.new(self)
78
135
  end
79
136
 
80
- def taxes
81
- Lago::Api::Resources::Tax.new(self)
137
+ def overdue_balances
138
+ Resources::OverdueBalance.new(self)
82
139
  end
83
140
 
84
- def wallets
85
- Lago::Api::Resources::Wallet.new(self)
141
+ def payment_receipts
142
+ Resources::PaymentReceipt.new(self)
86
143
  end
87
144
 
88
- def wallet_transactions
89
- Lago::Api::Resources::WalletTransaction.new(self)
145
+ def payment_requests
146
+ Resources::PaymentRequest.new(self)
90
147
  end
91
148
 
92
- def webhooks
93
- Lago::Api::Resources::Webhook.new(self)
149
+ def payments
150
+ Resources::Payment.new(self)
94
151
  end
95
152
 
96
- def webhook_endpoints
97
- Lago::Api::Resources::WebhookEndpoint.new(self)
153
+ def plans
154
+ Resources::Plan.new(self)
98
155
  end
99
156
 
100
- def billing_entities
101
- Lago::Api::Resources::BillingEntity.new(self)
157
+ def subscriptions
158
+ Resources::Subscription.new(self)
102
159
  end
103
160
 
104
- def activity_logs
105
- Lago::Api::Resources::ActivityLog.new(self)
161
+ def taxes
162
+ Resources::Tax.new(self)
163
+ end
164
+
165
+ def wallet_transactions
166
+ Resources::WalletTransaction.new(self)
167
+ end
168
+
169
+ def wallets
170
+ Resources::Wallet.new(self)
171
+ end
172
+
173
+ def webhook_endpoints
174
+ Resources::WebhookEndpoint.new(self)
175
+ end
176
+
177
+ def webhooks
178
+ Resources::Webhook.new(self)
106
179
  end
107
180
  end
108
181
  end
@@ -33,6 +33,18 @@ module Lago
33
33
  handle_response(response)
34
34
  end
35
35
 
36
+ def patch(path = uri.path, identifier:, body:)
37
+ uri_path = identifier.nil? ? path : "#{path}/#{URI.encode_www_form_component(identifier)}"
38
+ response = http_client.send_request(
39
+ 'PATCH',
40
+ uri_path,
41
+ prepare_payload(body),
42
+ headers
43
+ )
44
+
45
+ handle_response(response)
46
+ end
47
+
36
48
  def get(path = uri.path, identifier:)
37
49
  uri_path = identifier.nil? ? path : "#{path}/#{URI.encode_www_form_component(identifier)}"
38
50
  response = http_client.send_request(
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'lago/api/resources/base'
4
+
5
+ module Lago
6
+ module Api
7
+ module Resources
8
+ class ApiLog < Base
9
+ undef_method :create, :update, :destroy
10
+
11
+ def api_resource
12
+ 'api_logs'
13
+ end
14
+
15
+ def root_name
16
+ 'api_log'
17
+ end
18
+
19
+ def whitelist_params(params)
20
+ {
21
+ root_name => {
22
+ api_log: params[:request_id],
23
+ },
24
+ }
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lago
4
+ module Api
5
+ module Resources
6
+ class Feature < Base
7
+ def api_resource
8
+ 'features'
9
+ end
10
+
11
+ def root_name
12
+ 'feature'
13
+ end
14
+
15
+ def whitelist_params(params)
16
+ result_hash = {
17
+ code: params[:code],
18
+ name: params[:name],
19
+ description: params[:description],
20
+ privileges: whitelist_privileges_params(params[:privileges]),
21
+ }.compact
22
+
23
+ { root_name => result_hash }
24
+ end
25
+
26
+ def whitelist_privileges_params(privileges)
27
+ privileges&.map do |privilege|
28
+ {
29
+ code: privilege[:code],
30
+ name: privilege[:name],
31
+ value_type: privilege[:value_type],
32
+ config: {
33
+ select_options: privilege[:config][:select_options],
34
+ },
35
+ }
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -16,6 +18,7 @@ module Lago
16
18
  result_hash = {
17
19
  email: params[:email],
18
20
  external_customer_id: params[:external_customer_id],
21
+ payment_status: params[:payment_status],
19
22
  lago_invoice_ids: params[:lago_invoice_ids]
20
23
  }.compact
21
24
 
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -12,6 +14,46 @@ module Lago
12
14
  'plan'
13
15
  end
14
16
 
17
+ def get_entitlements(plan_code)
18
+ response = connection.get(entitlements_uri(plan_code), identifier: nil)
19
+ JSON.parse(response.to_json, object_class: OpenStruct).entitlements
20
+ end
21
+
22
+ def create_entitlements(plan_code, params)
23
+ response = connection.post(
24
+ whitelist_entitlements_params(params),
25
+ entitlements_uri(plan_code),
26
+ )
27
+ JSON.parse(response.to_json, object_class: OpenStruct).entitlements
28
+ end
29
+
30
+ def update_entitlements(plan_code, params)
31
+ response = connection.patch(
32
+ entitlements_uri(plan_code),
33
+ identifier: nil,
34
+ body: whitelist_entitlements_params(params),
35
+ )
36
+ JSON.parse(response.to_json, object_class: OpenStruct).entitlements
37
+ end
38
+
39
+ def get_entitlement(plan_code, feature_code)
40
+ response = connection.get(entitlements_uri(plan_code, feature_code), identifier: nil)
41
+ JSON.parse(response.to_json, object_class: OpenStruct).entitlement
42
+ end
43
+
44
+ def delete_entitlement(plan_code, feature_code)
45
+ response = connection.destroy(entitlements_uri(plan_code, feature_code), identifier: nil)
46
+ JSON.parse(response.to_json, object_class: OpenStruct).entitlement
47
+ end
48
+
49
+ def delete_entitlement_privilege(plan_code, feature_code, privilege_code)
50
+ response = connection.destroy(
51
+ entitlements_uri(plan_code, feature_code, "privileges/#{privilege_code}"),
52
+ identifier: nil,
53
+ )
54
+ JSON.parse(response.to_json, object_class: OpenStruct).entitlement
55
+ end
56
+
15
57
  def whitelist_params(params)
16
58
  result_hash = {
17
59
  name: params[:name],
@@ -67,6 +109,7 @@ module Lago
67
109
  :properties,
68
110
  :filters,
69
111
  :tax_codes,
112
+ :applied_pricing_unit,
70
113
  )
71
114
 
72
115
  processed_charges << result unless result.empty?
@@ -91,6 +134,21 @@ module Lago
91
134
 
92
135
  processed_usage_thresholds
93
136
  end
137
+
138
+ def whitelist_entitlements_params(params)
139
+ {
140
+ entitlements: params,
141
+ }
142
+ end
143
+
144
+ private
145
+
146
+ def entitlements_uri(plan_code, feature_code = nil, action = nil)
147
+ url = "#{client.base_api_url}#{api_resource}/#{plan_code}/entitlements"
148
+ url += "/#{feature_code}" if feature_code
149
+ url += "/#{action}" if action
150
+ URI(url)
151
+ end
94
152
  end
95
153
  end
96
154
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -33,6 +35,65 @@ module Lago
33
35
  JSON.parse(response.to_json, object_class: OpenStruct).lifetime_usage
34
36
  end
35
37
 
38
+ def get_entitlements(external_subscription_id)
39
+ response = connection.get(entitlements_uri(external_subscription_id), identifier: nil)
40
+ JSON.parse(response.to_json, object_class: OpenStruct).entitlements
41
+ end
42
+
43
+ def update_entitlements(external_subscription_id, params)
44
+ response = connection.patch(
45
+ entitlements_uri(external_subscription_id),
46
+ identifier: nil,
47
+ body: whitelist_entitlements_update_params(params),
48
+ )
49
+ JSON.parse(response.to_json, object_class: OpenStruct)
50
+ end
51
+
52
+ def delete_entitlement(external_subscription_id, feature_code)
53
+ response = connection.destroy(entitlements_uri(external_subscription_id, feature_code), identifier: nil)
54
+ JSON.parse(response.to_json, object_class: OpenStruct)
55
+ end
56
+
57
+ def delete_entitlement_privilege(external_subscription_id, entitlement_code, privilege_code)
58
+ response = connection.destroy(
59
+ entitlements_uri(external_subscription_id, entitlement_code, "privileges/#{privilege_code}"),
60
+ identifier: nil,
61
+ )
62
+ JSON.parse(response.to_json, object_class: OpenStruct)
63
+ end
64
+
65
+ def get_alert(external_subscription_id, code)
66
+ response = connection.get(alert_uri(external_subscription_id, code), identifier: nil)
67
+ JSON.parse(response.to_json, object_class: OpenStruct).alert
68
+ end
69
+
70
+ def update_alert(external_subscription_id, code, params)
71
+ response = connection.put(
72
+ alert_uri(external_subscription_id, code),
73
+ identifier: nil,
74
+ body: whitelist_alert_update_params(params),
75
+ )
76
+ JSON.parse(response.to_json, object_class: OpenStruct).alert
77
+ end
78
+
79
+ def delete_alert(external_subscription_id, code)
80
+ response = connection.destroy(alert_uri(external_subscription_id, code), identifier: nil)
81
+ JSON.parse(response.to_json, object_class: OpenStruct).alert
82
+ end
83
+
84
+ def get_alerts(external_subscription_id)
85
+ response = connection.get(alert_uri(external_subscription_id), identifier: nil)
86
+ JSON.parse(response.to_json, object_class: OpenStruct).alerts
87
+ end
88
+
89
+ def create_alert(external_subscription_id, params)
90
+ response = connection.post(
91
+ whitelist_alert_create_params(params),
92
+ alert_uri(external_subscription_id),
93
+ )
94
+ JSON.parse(response.to_json, object_class: OpenStruct).alert
95
+ end
96
+
36
97
  def whitelist_params(params)
37
98
  {
38
99
  root_name => {
@@ -55,6 +116,54 @@ module Lago
55
116
  },
56
117
  }
57
118
  end
119
+
120
+ def whitelist_alert_create_params(params)
121
+ {
122
+ alert: {
123
+ alert_type: params[:alert_type],
124
+ name: params[:name],
125
+ code: params[:code],
126
+ billable_metric_code: params[:billable_metric_code],
127
+ thresholds: params[:thresholds],
128
+ }.compact,
129
+ }
130
+ end
131
+
132
+ def whitelist_alert_update_params(params)
133
+ {
134
+ alert: {
135
+ name: params[:name],
136
+ code: params[:code],
137
+ billable_metric_code: params[:billable_metric_code],
138
+ thresholds: params[:thresholds],
139
+ }.compact,
140
+ }
141
+ end
142
+
143
+ def whitelist_thresholds(params)
144
+ (params || []).map do |p|
145
+ (p || {}).slice(:code, :value, :recurring)
146
+ end
147
+ end
148
+
149
+ def whitelist_entitlements_update_params(params)
150
+ {
151
+ entitlements: params,
152
+ }
153
+ end
154
+
155
+ private
156
+
157
+ def entitlements_uri(external_subscription_id, feature_code = nil, action = nil)
158
+ url = "#{client.base_api_url}#{api_resource}/#{external_subscription_id}/entitlements"
159
+ url += "/#{feature_code}" if feature_code
160
+ url += "/#{action}" if action
161
+ URI(url)
162
+ end
163
+
164
+ def alert_uri(external_subscription_id, code = nil)
165
+ URI("#{client.base_api_url}#{api_resource}/#{external_subscription_id}/alerts#{code ? "/#{code}" : ''}")
166
+ end
58
167
  end
59
168
  end
60
169
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lago
4
+ module Api
5
+ module Resources
6
+ class Usage < Base
7
+ def api_resource
8
+ 'analytics/usage'
9
+ end
10
+
11
+ def root_name
12
+ 'usage'
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -60,7 +62,7 @@ module Lago
60
62
  end
61
63
 
62
64
  def whitelist_applies_to(applies_to_params)
63
- (applies_to_params || {}).slice(:fee_types)
65
+ (applies_to_params || {}).slice(:fee_types, :billable_metric_codes)
64
66
  end
65
67
  end
66
68
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lago/api/resources/base'
4
+
3
5
  module Lago
4
6
  module Api
5
7
  module Resources
data/lib/lago/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lago
4
- VERSION = '1.31.0'
4
+ VERSION = '1.33.0'
5
5
  end
@@ -11,32 +11,3 @@ require 'lago/version'
11
11
  require 'lago/api/client'
12
12
  require 'lago/api/connection'
13
13
  require 'lago/api/http_error'
14
-
15
- require 'lago/api/resources/base'
16
- require 'lago/api/resources/activity_log'
17
- require 'lago/api/resources/add_on'
18
- require 'lago/api/resources/applied_coupon'
19
- require 'lago/api/resources/billable_metric'
20
- require 'lago/api/resources/billing_entity'
21
- require 'lago/api/resources/coupon'
22
- require 'lago/api/resources/credit_note'
23
- require 'lago/api/resources/customer'
24
- require 'lago/api/resources/event'
25
- require 'lago/api/resources/fee'
26
- require 'lago/api/resources/gross_revenue'
27
- require 'lago/api/resources/invoice'
28
- require 'lago/api/resources/invoice_collection'
29
- require 'lago/api/resources/invoiced_usage'
30
- require 'lago/api/resources/mrr'
31
- require 'lago/api/resources/organization'
32
- require 'lago/api/resources/overdue_balance'
33
- require 'lago/api/resources/payment'
34
- require 'lago/api/resources/payment_receipt'
35
- require 'lago/api/resources/payment_request'
36
- require 'lago/api/resources/plan'
37
- require 'lago/api/resources/subscription'
38
- require 'lago/api/resources/tax'
39
- require 'lago/api/resources/wallet'
40
- require 'lago/api/resources/wallet_transaction'
41
- require 'lago/api/resources/webhook'
42
- require 'lago/api/resources/webhook_endpoint'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lago-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.31.0
4
+ version: 1.33.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lovro Colic
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-06-27 00:00:00.000000000 Z
11
+ date: 2025-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jwt
@@ -233,6 +233,7 @@ files:
233
233
  - lib/lago/api/http_error.rb
234
234
  - lib/lago/api/resources/activity_log.rb
235
235
  - lib/lago/api/resources/add_on.rb
236
+ - lib/lago/api/resources/api_log.rb
236
237
  - lib/lago/api/resources/applied_coupon.rb
237
238
  - lib/lago/api/resources/base.rb
238
239
  - lib/lago/api/resources/billable_metric.rb
@@ -241,6 +242,7 @@ files:
241
242
  - lib/lago/api/resources/credit_note.rb
242
243
  - lib/lago/api/resources/customer.rb
243
244
  - lib/lago/api/resources/event.rb
245
+ - lib/lago/api/resources/feature.rb
244
246
  - lib/lago/api/resources/fee.rb
245
247
  - lib/lago/api/resources/gross_revenue.rb
246
248
  - lib/lago/api/resources/invoice.rb
@@ -255,6 +257,7 @@ files:
255
257
  - lib/lago/api/resources/plan.rb
256
258
  - lib/lago/api/resources/subscription.rb
257
259
  - lib/lago/api/resources/tax.rb
260
+ - lib/lago/api/resources/usage.rb
258
261
  - lib/lago/api/resources/wallet.rb
259
262
  - lib/lago/api/resources/wallet_transaction.rb
260
263
  - lib/lago/api/resources/webhook.rb