chartmogul-ruby 4.9.0 → 4.11.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 206aab68993f235a7a3c98362163e04bb2d0026946631adfa4714b87d5f475bc
4
- data.tar.gz: 33357f48412b21e88a6baca2063f8b6b6fc46f1b37eebaef74b595c0c03debb4
3
+ metadata.gz: faa555815d7e07a1c7988a30a4006a2644bacca3c8d082e9b8e7e99233d199b5
4
+ data.tar.gz: 9b95f302c336e40149799d347ef43e0ba0286663b9041dabbd1883f5d0c28d43
5
5
  SHA512:
6
- metadata.gz: df56e58e7163aef6e332b98ade81835e4a93f57a93d3883524a883313cd858ce55c6238d4782bd2688acd6e41f9ade30534a404ea71aa87052c9a41a2f6bf81e
7
- data.tar.gz: 583f6aa39696e49d80b62ac7d5d082d51ffd8065c893b318e0fa50b7ace9f66c32f1eb41af00bc62e8b44a5a638ab5ef11d8268be986c6b73864da97ce740772
6
+ metadata.gz: c1bb1b4874f2fbc7fb164a263bcddedcdb52793fdb640726f07d694652e01d8c403851a2058e88838d402b27d663f9c670dc0848a253c6a55249186462723e02
7
+ data.tar.gz: bab85de33f8480fe7eac0065caf5f846875a45a153d46d568cfaa1ef3f548c7e898d747d4cb9d90b518cb5c6c10b8ea2b2330182ce8a15d4b82d9e9eeb0cb4ab
data/changelog.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # chartmogul-ruby Change Log
2
2
 
3
+ ## Version 4.11.0 - Jan 6, 2026
4
+ - Add new API usage for Customer Subscriptions connect and disconnect
5
+ - Update retrieve to accept query params
6
+
7
+ ## Version 4.10.0 - Dec 22, 2025
8
+ - Add fetching additional DataSource fields
9
+
3
10
  ## Version 4.9.0 - Nov 25, 2025
4
11
  - Add field subscription-set-external-id to /activities, drop support for eol rubies
5
12
 
@@ -10,12 +10,15 @@ module ChartMogul
10
10
 
11
11
  module ClassMethods
12
12
  def retrieve(uuid, options = {})
13
+ path = "#{resource_path.apply(options)}/#{uuid}"
14
+ path_param_keys = resource_path.named_params.values
15
+ query_params = options.reject { |key| path_param_keys.include?(key) }
13
16
  resp = handling_errors do
14
- connection.get("#{resource_path.apply(options)}/#{uuid}") do |req|
17
+ connection.get(path) do |req|
15
18
  req.headers['Content-Type'] = 'application/json'
19
+ req.params = query_params
16
20
  end
17
21
  end
18
-
19
22
  json = ChartMogul::Utils::JSONParser.parse(resp.body, immutable_keys: immutable_keys)
20
23
  new_from_json(json)
21
24
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ChartMogul
4
+ module Concerns
5
+ module AutoChurnSubscriptionSetting
6
+ def self.included(base)
7
+ base.send :prepend, InstanceMethods
8
+
9
+ base.instance_eval do
10
+ readonly_attr :auto_churn_subscription_setting
11
+ end
12
+ end
13
+
14
+ module InstanceMethods
15
+ def set_auto_churn_subscription_setting(auto_churn_subscription_setting_attributes)
16
+ @auto_churn_subscription_setting = ChartMogul::DataSourceSettings::AutoChurnSubscriptionSetting.new_from_json(auto_churn_subscription_setting_attributes) if auto_churn_subscription_setting_attributes
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ChartMogul
4
+ module Concerns
5
+ module ProcessingStatus
6
+ def self.included(base)
7
+ base.send :prepend, InstanceMethods
8
+
9
+ base.instance_eval do
10
+ readonly_attr :processing_status
11
+ end
12
+ end
13
+
14
+ module InstanceMethods
15
+ def set_processing_status(processing_status_attributes)
16
+ @processing_status = ChartMogul::DataSourceSettings::ProcessingStatus.new_from_json(processing_status_attributes) if processing_status_attributes
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -9,6 +9,7 @@ module ChartMogul
9
9
  readonly_attr :status
10
10
  readonly_attr :system
11
11
  readonly_attr :created_at, type: :time
12
+ readonly_attr :invoice_handling_setting
12
13
 
13
14
  writeable_attr :name
14
15
 
@@ -17,6 +18,8 @@ module ChartMogul
17
18
  include API::Actions::Custom
18
19
  include API::Actions::Destroy
19
20
  include API::Actions::Retrieve
21
+ include Concerns::AutoChurnSubscriptionSetting
22
+ include Concerns::ProcessingStatus
20
23
 
21
24
  def self.all(options = {})
22
25
  DataSources.all(options)
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ChartMogul
4
+ module DataSourceSettings
5
+ class AutoChurnSubscriptionSetting < ChartMogul::Object
6
+ readonly_attr :enabled
7
+ readonly_attr :interval
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ChartMogul
4
+ module DataSourceSettings
5
+ class ProcessingStatus < ChartMogul::Object
6
+ readonly_attr :processed
7
+ readonly_attr :pending
8
+ readonly_attr :failed
9
+ end
10
+ end
11
+ end
@@ -7,6 +7,11 @@ module ChartMogul
7
7
 
8
8
  readonly_attr :uuid
9
9
  readonly_attr :customer_uuid
10
+ readonly_attr :disabled
11
+ readonly_attr :disabled_at
12
+ readonly_attr :disabled_by
13
+ readonly_attr :edit_history_summary
14
+ readonly_attr :errors
10
15
 
11
16
  writeable_attr :date, type: :time
12
17
  writeable_attr :currency
@@ -22,12 +22,23 @@ module ChartMogul
22
22
  def self.all(customer_uuid, options = {})
23
23
  ChartMogul::Metrics::Customers::Subscriptions.all(customer_uuid, options)
24
24
  end
25
+
26
+ def connect(data_source_uuid, customer_uuid, subscriptions)
27
+ subscriptions.unshift(self)
28
+ ChartMogul::Metrics::Customers::Subscriptions.connect(data_source_uuid, customer_uuid, subscriptions)
29
+ end
30
+
31
+ def disconnect(data_source_uuid, customer_uuid, subscriptions)
32
+ subscriptions.unshift(self)
33
+ ChartMogul::Metrics::Customers::Subscriptions.disconnect(data_source_uuid, customer_uuid, subscriptions)
34
+ end
25
35
  end
26
36
 
27
37
  class Subscriptions < APIResource
28
38
  set_resource_name 'Subscriptions'
29
39
  set_resource_path '/v1/customers/:customer_uuid/subscriptions'
30
40
 
41
+ include API::Actions::Custom
31
42
  include Concerns::Entries
32
43
  include Concerns::Pageable
33
44
  include Concerns::PageableWithCursor
@@ -38,6 +49,29 @@ module ChartMogul
38
49
  super(options.merge(customer_uuid: customer_uuid))
39
50
  end
40
51
 
52
+ def self.connect(data_source_uuid, customer_uuid, subscriptions)
53
+ custom!(:post,
54
+ "/v1/customers/#{customer_uuid}/connect_subscriptions",
55
+ connect_disconnect_body(data_source_uuid, subscriptions))
56
+ end
57
+
58
+ def self.disconnect(data_source_uuid, customer_uuid, subscriptions)
59
+ custom!(:post,
60
+ "/v1/customers/#{customer_uuid}/disconnect_subscriptions",
61
+ connect_disconnect_body(data_source_uuid, subscriptions))
62
+ end
63
+
64
+ def self.connect_disconnect_body(data_source_uuid, subscriptions)
65
+ {
66
+ subscriptions: subscriptions.uniq.map do |subscription|
67
+ {
68
+ data_source_uuid: data_source_uuid,
69
+ uuid: subscription.uuid
70
+ }
71
+ end
72
+ }
73
+ end
74
+
41
75
  def next(customer_uuid, options = {})
42
76
  Subscriptions.all(customer_uuid, options.merge(cursor: cursor))
43
77
  end
@@ -26,13 +26,19 @@ module ChartMogul
26
26
  end
27
27
 
28
28
  def connect(customer_uuid, subscriptions)
29
+ warn 'DEPRECATION WARNING: the method ChartMogul::Subscription#connect is deprecated. Use ChartMogul::Metrics::Customers::Subscription#connect instead.'
29
30
  subscriptions.unshift(self)
30
- custom!(:post, "/v1/customers/#{customer_uuid}/connect_subscriptions", subscriptions: subscriptions.map(&:serialize_for_write))
31
+ custom!(:post,
32
+ "/v1/customers/#{customer_uuid}/connect_subscriptions",
33
+ subscriptions: subscriptions.map(&:serialize_for_write))
31
34
  end
32
35
 
33
36
  def disconnect(customer_uuid, subscriptions)
37
+ warn 'DEPRECATION WARNING: the method ChartMogul::Subscription#disconnect is deprecated. Use ChartMogul::Metrics::Customers::Subscription#disconnect instead.'
34
38
  subscriptions.unshift(self)
35
- custom!(:post, "/v1/customers/#{customer_uuid}/disconnect_subscriptions", subscriptions: subscriptions.map(&:serialize_for_write))
39
+ custom!(:post,
40
+ "/v1/customers/#{customer_uuid}/disconnect_subscriptions",
41
+ subscriptions: subscriptions.map(&:serialize_for_write))
36
42
  end
37
43
 
38
44
  def self.all(customer_uuid, options = {})
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ChartMogul
4
- VERSION = '4.9.0'
4
+ VERSION = '4.11.0'
5
5
  end
data/lib/chartmogul.rb CHANGED
@@ -50,6 +50,8 @@ require 'chartmogul/concerns/pageable'
50
50
  require 'chartmogul/concerns/pageable2'
51
51
  require 'chartmogul/concerns/pageable_with_anchor'
52
52
  require 'chartmogul/concerns/pageable_with_cursor'
53
+ require 'chartmogul/concerns/auto_churn_subscription_setting'
54
+ require 'chartmogul/concerns/processing_status'
53
55
 
54
56
  require 'chartmogul/subscription'
55
57
  require 'chartmogul/invoice'
@@ -58,6 +60,8 @@ require 'chartmogul/customer'
58
60
  require 'chartmogul/note'
59
61
  require 'chartmogul/contact'
60
62
  require 'chartmogul/data_source'
63
+ require 'chartmogul/data_source_settings/auto_churn_subscription_setting'
64
+ require 'chartmogul/data_source_settings/processing_status'
61
65
  require 'chartmogul/ping'
62
66
  require 'chartmogul/plan'
63
67
  require 'chartmogul/plan_group'
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chartmogul-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.9.0
4
+ version: 4.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Petr Kopac
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2025-11-26 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: faraday
@@ -208,11 +207,13 @@ files:
208
207
  - lib/chartmogul/api/actions/retrieve.rb
209
208
  - lib/chartmogul/api/actions/update.rb
210
209
  - lib/chartmogul/api_resource.rb
210
+ - lib/chartmogul/concerns/auto_churn_subscription_setting.rb
211
211
  - lib/chartmogul/concerns/entries.rb
212
212
  - lib/chartmogul/concerns/pageable.rb
213
213
  - lib/chartmogul/concerns/pageable2.rb
214
214
  - lib/chartmogul/concerns/pageable_with_anchor.rb
215
215
  - lib/chartmogul/concerns/pageable_with_cursor.rb
216
+ - lib/chartmogul/concerns/processing_status.rb
216
217
  - lib/chartmogul/concerns/summary.rb
217
218
  - lib/chartmogul/concerns/summary_all.rb
218
219
  - lib/chartmogul/config_attributes.rb
@@ -221,6 +222,8 @@ files:
221
222
  - lib/chartmogul/customer.rb
222
223
  - lib/chartmogul/customer_invoices.rb
223
224
  - lib/chartmogul/data_source.rb
225
+ - lib/chartmogul/data_source_settings/auto_churn_subscription_setting.rb
226
+ - lib/chartmogul/data_source_settings/processing_status.rb
224
227
  - lib/chartmogul/enrichment/customer.rb
225
228
  - lib/chartmogul/errors/chartmogul_error.rb
226
229
  - lib/chartmogul/errors/configuration_error.rb
@@ -291,8 +294,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
291
294
  - !ruby/object:Gem::Version
292
295
  version: '0'
293
296
  requirements: []
294
- rubygems_version: 3.4.10
295
- signing_key:
297
+ rubygems_version: 4.0.3
296
298
  specification_version: 4
297
299
  summary: Chartmogul API Ruby Client
298
300
  test_files: []