Class: Lago::Api::Resources::Subscription
- Inherits:
-
Base
- Object
- Base
- Lago::Api::Resources::Subscription
show all
- Defined in:
- lib/lago/api/resources/subscription.rb
Instance Attribute Summary
Attributes inherited from Base
#client
Instance Method Summary
collapse
-
#api_resource ⇒ Object
-
#create_alert(external_subscription_id, params, subscription_status: nil) ⇒ Object
-
#create_alerts(external_subscription_id, params, subscription_status: nil) ⇒ Object
-
#create_charge_filter(external_id, charge_code, params, subscription_status: nil) ⇒ Object
-
#delete_alert(external_subscription_id, code, subscription_status: nil) ⇒ Object
-
#delete_alerts(external_subscription_id, subscription_status: nil) ⇒ Object
-
#delete_entitlement(external_subscription_id, feature_code, subscription_status: nil) ⇒ Object
-
#delete_entitlement_privilege(external_subscription_id, entitlement_code, privilege_code, subscription_status: nil) ⇒ Object
-
#destroy_charge_filter(external_id, charge_code, filter_id, subscription_status: nil) ⇒ Object
-
#get_alert(external_subscription_id, code, subscription_status: nil) ⇒ Object
-
#get_alerts(external_subscription_id, subscription_status: nil) ⇒ Object
-
#get_all_charge_filters(external_id, charge_code, options = {}) ⇒ Object
-
#get_all_charges(external_id, options = {}) ⇒ Object
-
#get_all_fixed_charges(external_id, options = {}) ⇒ Object
-
#get_charge(external_id, charge_code, subscription_status: nil) ⇒ Object
-
#get_charge_filter(external_id, charge_code, filter_id, subscription_status: nil) ⇒ Object
-
#get_entitlements(external_subscription_id, subscription_status: nil) ⇒ Object
-
#get_fixed_charge(external_id, fixed_charge_code, subscription_status: nil) ⇒ Object
-
#lifetime_usage(external_subscription_id) ⇒ Object
-
#root_name ⇒ Object
-
#update_alert(external_subscription_id, code, params, subscription_status: nil) ⇒ Object
-
#update_charge(external_id, charge_code, params, subscription_status: nil) ⇒ Object
-
#update_charge_filter(external_id, charge_code, filter_id, params, subscription_status: nil) ⇒ Object
-
#update_entitlements(external_subscription_id, params, subscription_status: nil) ⇒ Object
-
#update_fixed_charge(external_id, fixed_charge_code, params, subscription_status: nil) ⇒ Object
-
#update_lifetime_usage(external_subscription_id, params) ⇒ Object
-
#whitelist_alert_batch_create_params(params) ⇒ Object
-
#whitelist_alert_create_params(params) ⇒ Object
-
#whitelist_alert_update_params(params) ⇒ Object
-
#whitelist_entitlements_update_params(params) ⇒ Object
-
#whitelist_lifetime_usage_params(params) ⇒ Object
-
#whitelist_params(params) ⇒ Object
-
#whitelist_thresholds(params) ⇒ Object
Methods inherited from Base
#create, #destroy, #get, #get_all, #initialize, #update
Instance Method Details
#api_resource ⇒ Object
9
10
11
|
# File 'lib/lago/api/resources/subscription.rb', line 9
def api_resource
'subscriptions'
end
|
#create_alert(external_subscription_id, params, subscription_status: nil) ⇒ Object
103
104
105
106
107
108
109
|
# File 'lib/lago/api/resources/subscription.rb', line 103
def create_alert(external_subscription_id, params, subscription_status: nil)
response = connection.post(
whitelist_alert_create_params(params),
alert_uri(external_subscription_id, subscription_status:),
)
JSON.parse(response.to_json, object_class: OpenStruct).alert
end
|
#create_alerts(external_subscription_id, params, subscription_status: nil) ⇒ Object
111
112
113
114
115
116
117
|
# File 'lib/lago/api/resources/subscription.rb', line 111
def create_alerts(external_subscription_id, params, subscription_status: nil)
response = connection.post(
whitelist_alert_batch_create_params(params),
alert_uri(external_subscription_id, subscription_status:),
)
JSON.parse(response.to_json, object_class: OpenStruct).alerts
end
|
#create_charge_filter(external_id, charge_code, params, subscription_status: nil) ⇒ Object
180
181
182
183
184
185
186
|
# File 'lib/lago/api/resources/subscription.rb', line 180
def create_charge_filter(external_id, charge_code, params, subscription_status: nil)
response = connection.post(
whitelist_subscription_charge_filter_params(params),
charge_filters_uri(external_id, charge_code, subscription_status:),
)
JSON.parse(response.to_json, object_class: OpenStruct).filter
end
|
#delete_alert(external_subscription_id, code, subscription_status: nil) ⇒ Object
90
91
92
93
94
95
96
|
# File 'lib/lago/api/resources/subscription.rb', line 90
def delete_alert(external_subscription_id, code, subscription_status: nil)
response = connection.destroy(
alert_uri(external_subscription_id, code, subscription_status:),
identifier: nil,
)
JSON.parse(response.to_json, object_class: OpenStruct).alert
end
|
#delete_alerts(external_subscription_id, subscription_status: nil) ⇒ Object
119
120
121
|
# File 'lib/lago/api/resources/subscription.rb', line 119
def delete_alerts(external_subscription_id, subscription_status: nil)
connection.destroy(alert_uri(external_subscription_id, subscription_status:), identifier: nil)
end
|
#delete_entitlement(external_subscription_id, feature_code, subscription_status: nil) ⇒ Object
52
53
54
55
56
57
58
|
# File 'lib/lago/api/resources/subscription.rb', line 52
def delete_entitlement(external_subscription_id, feature_code, subscription_status: nil)
response = connection.destroy(
entitlements_uri(external_subscription_id, feature_code, subscription_status:),
identifier: nil,
)
JSON.parse(response.to_json, object_class: OpenStruct)
end
|
#delete_entitlement_privilege(external_subscription_id, entitlement_code, privilege_code, subscription_status: nil) ⇒ Object
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/lago/api/resources/subscription.rb', line 60
def delete_entitlement_privilege(
external_subscription_id, entitlement_code, privilege_code,
subscription_status: nil
)
response = connection.destroy(
entitlements_uri(
external_subscription_id,
entitlement_code,
"privileges/#{privilege_code}",
subscription_status:,
),
identifier: nil,
)
JSON.parse(response.to_json, object_class: OpenStruct)
end
|
#destroy_charge_filter(external_id, charge_code, filter_id, subscription_status: nil) ⇒ Object
197
198
199
200
201
202
203
|
# File 'lib/lago/api/resources/subscription.rb', line 197
def destroy_charge_filter(external_id, charge_code, filter_id, subscription_status: nil)
response = connection.destroy(
charge_filters_uri(external_id, charge_code, filter_id, subscription_status:),
identifier: nil,
)
JSON.parse(response.to_json, object_class: OpenStruct).filter
end
|
#get_alert(external_subscription_id, code, subscription_status: nil) ⇒ Object
76
77
78
79
|
# File 'lib/lago/api/resources/subscription.rb', line 76
def get_alert(external_subscription_id, code, subscription_status: nil)
response = connection.get(alert_uri(external_subscription_id, code, subscription_status:), identifier: nil)
JSON.parse(response.to_json, object_class: OpenStruct).alert
end
|
#get_alerts(external_subscription_id, subscription_status: nil) ⇒ Object
98
99
100
101
|
# File 'lib/lago/api/resources/subscription.rb', line 98
def get_alerts(external_subscription_id, subscription_status: nil)
response = connection.get(alert_uri(external_subscription_id, subscription_status:), identifier: nil)
JSON.parse(response.to_json, object_class: OpenStruct).alerts
end
|
#get_all_charge_filters(external_id, charge_code, options = {}) ⇒ Object
167
168
169
170
|
# File 'lib/lago/api/resources/subscription.rb', line 167
def get_all_charge_filters(external_id, charge_code, options = {})
response = connection.get_all(options, charge_filters_uri(external_id, charge_code))
JSON.parse(response.to_json, object_class: OpenStruct)
end
|
#get_all_charges(external_id, options = {}) ⇒ Object
124
125
126
127
|
# File 'lib/lago/api/resources/subscription.rb', line 124
def get_all_charges(external_id, options = {})
response = connection.get_all(options, charges_uri(external_id))
JSON.parse(response.to_json, object_class: OpenStruct)
end
|
#get_all_fixed_charges(external_id, options = {}) ⇒ Object
144
145
146
147
|
# File 'lib/lago/api/resources/subscription.rb', line 144
def get_all_fixed_charges(external_id, options = {})
response = connection.get_all(options, fixed_charges_uri(external_id))
JSON.parse(response.to_json, object_class: OpenStruct)
end
|
#get_charge(external_id, charge_code, subscription_status: nil) ⇒ Object
129
130
131
132
|
# File 'lib/lago/api/resources/subscription.rb', line 129
def get_charge(external_id, charge_code, subscription_status: nil)
response = connection.get(charges_uri(external_id, charge_code, subscription_status:), identifier: nil)
JSON.parse(response.to_json, object_class: OpenStruct).charge
end
|
#get_charge_filter(external_id, charge_code, filter_id, subscription_status: nil) ⇒ Object
172
173
174
175
176
177
178
|
# File 'lib/lago/api/resources/subscription.rb', line 172
def get_charge_filter(external_id, charge_code, filter_id, subscription_status: nil)
response = connection.get(
charge_filters_uri(external_id, charge_code, filter_id, subscription_status:),
identifier: nil,
)
JSON.parse(response.to_json, object_class: OpenStruct).filter
end
|
#get_entitlements(external_subscription_id, subscription_status: nil) ⇒ Object
38
39
40
41
|
# File 'lib/lago/api/resources/subscription.rb', line 38
def get_entitlements(external_subscription_id, subscription_status: nil)
response = connection.get(entitlements_uri(external_subscription_id, subscription_status:), identifier: nil)
JSON.parse(response.to_json, object_class: OpenStruct).entitlements
end
|
#get_fixed_charge(external_id, fixed_charge_code, subscription_status: nil) ⇒ Object
149
150
151
152
153
154
155
|
# File 'lib/lago/api/resources/subscription.rb', line 149
def get_fixed_charge(external_id, fixed_charge_code, subscription_status: nil)
response = connection.get(
fixed_charges_uri(external_id, fixed_charge_code, subscription_status:),
identifier: nil,
)
JSON.parse(response.to_json, object_class: OpenStruct).fixed_charge
end
|
#lifetime_usage(external_subscription_id) ⇒ Object
17
18
19
20
21
22
23
|
# File 'lib/lago/api/resources/subscription.rb', line 17
def lifetime_usage(external_subscription_id)
uri = URI(
"#{client.base_api_url}#{api_resource}/#{external_subscription_id}/lifetime_usage",
)
response = connection.get(uri, identifier: nil)
JSON.parse(response.to_json, object_class: OpenStruct).lifetime_usage
end
|
#root_name ⇒ Object
13
14
15
|
# File 'lib/lago/api/resources/subscription.rb', line 13
def root_name
'subscription'
end
|
#update_alert(external_subscription_id, code, params, subscription_status: nil) ⇒ Object
81
82
83
84
85
86
87
88
|
# File 'lib/lago/api/resources/subscription.rb', line 81
def update_alert(external_subscription_id, code, params, subscription_status: nil)
response = connection.put(
alert_uri(external_subscription_id, code, subscription_status:),
identifier: nil,
body: whitelist_alert_update_params(params),
)
JSON.parse(response.to_json, object_class: OpenStruct).alert
end
|
#update_charge(external_id, charge_code, params, subscription_status: nil) ⇒ Object
134
135
136
137
138
139
140
141
|
# File 'lib/lago/api/resources/subscription.rb', line 134
def update_charge(external_id, charge_code, params, subscription_status: nil)
response = connection.put(
charges_uri(external_id, charge_code, subscription_status:),
identifier: nil,
body: whitelist_subscription_charge_params(params),
)
JSON.parse(response.to_json, object_class: OpenStruct).charge
end
|
#update_charge_filter(external_id, charge_code, filter_id, params, subscription_status: nil) ⇒ Object
188
189
190
191
192
193
194
195
|
# File 'lib/lago/api/resources/subscription.rb', line 188
def update_charge_filter(external_id, charge_code, filter_id, params, subscription_status: nil)
response = connection.put(
charge_filters_uri(external_id, charge_code, filter_id, subscription_status:),
identifier: nil,
body: whitelist_subscription_charge_filter_params(params),
)
JSON.parse(response.to_json, object_class: OpenStruct).filter
end
|
#update_entitlements(external_subscription_id, params, subscription_status: nil) ⇒ Object
43
44
45
46
47
48
49
50
|
# File 'lib/lago/api/resources/subscription.rb', line 43
def update_entitlements(external_subscription_id, params, subscription_status: nil)
response = connection.patch(
entitlements_uri(external_subscription_id, subscription_status:),
identifier: nil,
body: whitelist_entitlements_update_params(params),
)
JSON.parse(response.to_json, object_class: OpenStruct)
end
|
#update_fixed_charge(external_id, fixed_charge_code, params, subscription_status: nil) ⇒ Object
157
158
159
160
161
162
163
164
|
# File 'lib/lago/api/resources/subscription.rb', line 157
def update_fixed_charge(external_id, fixed_charge_code, params, subscription_status: nil)
response = connection.put(
fixed_charges_uri(external_id, fixed_charge_code, subscription_status:),
identifier: nil,
body: whitelist_subscription_fixed_charge_params(params),
)
JSON.parse(response.to_json, object_class: OpenStruct).fixed_charge
end
|
#update_lifetime_usage(external_subscription_id, params) ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/lago/api/resources/subscription.rb', line 25
def update_lifetime_usage(external_subscription_id, params)
uri = URI(
"#{client.base_api_url}#{api_resource}/#{external_subscription_id}/lifetime_usage",
)
response = connection.put(
uri,
identifier: nil,
body: whitelist_lifetime_usage_params(params),
)
JSON.parse(response.to_json, object_class: OpenStruct).lifetime_usage
end
|
#whitelist_alert_batch_create_params(params) ⇒ Object
246
247
248
249
250
251
252
253
254
255
256
257
258
|
# File 'lib/lago/api/resources/subscription.rb', line 246
def whitelist_alert_batch_create_params(params)
{
alerts: (params[:alerts] || []).map do |alert|
{
alert_type: alert[:alert_type],
name: alert[:name],
code: alert[:code],
billable_metric_code: alert[:billable_metric_code],
thresholds: alert[:thresholds],
}.compact
end,
}
end
|
#whitelist_alert_create_params(params) ⇒ Object
234
235
236
237
238
239
240
241
242
243
244
|
# File 'lib/lago/api/resources/subscription.rb', line 234
def whitelist_alert_create_params(params)
{
alert: {
alert_type: params[:alert_type],
name: params[:name],
code: params[:code],
billable_metric_code: params[:billable_metric_code],
thresholds: params[:thresholds],
}.compact,
}
end
|
#whitelist_alert_update_params(params) ⇒ Object
260
261
262
263
264
265
266
267
268
269
|
# File 'lib/lago/api/resources/subscription.rb', line 260
def whitelist_alert_update_params(params)
{
alert: {
name: params[:name],
code: params[:code],
billable_metric_code: params[:billable_metric_code],
thresholds: params[:thresholds],
}.compact,
}
end
|
#whitelist_entitlements_update_params(params) ⇒ Object
277
278
279
280
281
|
# File 'lib/lago/api/resources/subscription.rb', line 277
def whitelist_entitlements_update_params(params)
{
entitlements: params,
}
end
|
#whitelist_lifetime_usage_params(params) ⇒ Object
226
227
228
229
230
231
232
|
# File 'lib/lago/api/resources/subscription.rb', line 226
def whitelist_lifetime_usage_params(params)
{
lifetime_usage: {
external_historical_usage_amount_cents: params[:external_historical_usage_amount_cents],
},
}
end
|
#whitelist_params(params) ⇒ Object
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
|
# File 'lib/lago/api/resources/subscription.rb', line 205
def whitelist_params(params)
result = {
external_customer_id: params[:external_customer_id],
plan_code: params[:plan_code],
name: params[:name],
external_id: params[:external_id],
billing_time: params[:billing_time],
subscription_at: params[:subscription_at],
ending_at: params[:ending_at],
plan_overrides: params[:plan_overrides],
}.compact
payment_method_params = whitelist_payment_method_params(params[:payment_method])
result[:payment_method] = payment_method_params if payment_method_params
invoice_custom_section = whitelist_invoice_custom_section_params(params[:invoice_custom_section])
result[:invoice_custom_section] = invoice_custom_section if invoice_custom_section
{ root_name => result }
end
|
#whitelist_thresholds(params) ⇒ Object
271
272
273
274
275
|
# File 'lib/lago/api/resources/subscription.rb', line 271
def whitelist_thresholds(params)
(params || []).map do |p|
(p || {}).slice(:code, :value, :recurring)
end
end
|