chargebee 2.56.0 → 2.57.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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/Gemfile +5 -0
  4. data/Gemfile.lock +1 -1
  5. data/README.md +52 -0
  6. data/chargebee.gemspec +3 -2
  7. data/lib/chargebee/environment.rb +14 -8
  8. data/lib/chargebee/models/addon.rb +24 -7
  9. data/lib/chargebee/models/address.rb +6 -2
  10. data/lib/chargebee/models/attached_item.rb +16 -5
  11. data/lib/chargebee/models/business_entity.rb +6 -2
  12. data/lib/chargebee/models/card.rb +18 -5
  13. data/lib/chargebee/models/comment.rb +12 -4
  14. data/lib/chargebee/models/configuration.rb +2 -1
  15. data/lib/chargebee/models/coupon.rb +32 -9
  16. data/lib/chargebee/models/coupon_code.rb +12 -4
  17. data/lib/chargebee/models/coupon_set.rb +24 -7
  18. data/lib/chargebee/models/credit_note.rb +63 -29
  19. data/lib/chargebee/models/currency.rb +20 -6
  20. data/lib/chargebee/models/customer.rb +92 -25
  21. data/lib/chargebee/models/customer_entitlement.rb +2 -1
  22. data/lib/chargebee/models/differential_price.rb +16 -5
  23. data/lib/chargebee/models/entitlement.rb +6 -2
  24. data/lib/chargebee/models/entitlement_override.rb +6 -2
  25. data/lib/chargebee/models/estimate.rb +42 -20
  26. data/lib/chargebee/models/event.rb +7 -5
  27. data/lib/chargebee/models/export.rb +70 -18
  28. data/lib/chargebee/models/feature.rb +28 -8
  29. data/lib/chargebee/models/gift.rb +24 -7
  30. data/lib/chargebee/models/hosted_page.rb +107 -45
  31. data/lib/chargebee/models/in_app_subscription.rb +16 -4
  32. data/lib/chargebee/models/invoice.rb +187 -81
  33. data/lib/chargebee/models/item.rb +16 -5
  34. data/lib/chargebee/models/item_entitlement.rb +12 -4
  35. data/lib/chargebee/models/item_family.rb +16 -5
  36. data/lib/chargebee/models/item_price.rb +20 -7
  37. data/lib/chargebee/models/non_subscription.rb +4 -1
  38. data/lib/chargebee/models/omnichannel_subscription.rb +6 -3
  39. data/lib/chargebee/models/omnichannel_subscription_item.rb +2 -1
  40. data/lib/chargebee/models/order.rb +42 -12
  41. data/lib/chargebee/models/payment_intent.rb +10 -3
  42. data/lib/chargebee/models/payment_schedule_scheme.rb +10 -3
  43. data/lib/chargebee/models/payment_source.rb +60 -16
  44. data/lib/chargebee/models/payment_voucher.rb +10 -4
  45. data/lib/chargebee/models/plan.rb +24 -7
  46. data/lib/chargebee/models/portal_session.rb +14 -4
  47. data/lib/chargebee/models/price_variant.rb +16 -5
  48. data/lib/chargebee/models/pricing_page_session.rb +8 -2
  49. data/lib/chargebee/models/promotional_credit.rb +16 -5
  50. data/lib/chargebee/models/purchase.rb +6 -2
  51. data/lib/chargebee/models/quote.rb +74 -20
  52. data/lib/chargebee/models/ramp.rb +16 -5
  53. data/lib/chargebee/models/recorded_purchase.rb +6 -2
  54. data/lib/chargebee/models/resource_migration.rb +2 -1
  55. data/lib/chargebee/models/rule.rb +2 -1
  56. data/lib/chargebee/models/site_migration_detail.rb +2 -1
  57. data/lib/chargebee/models/subscription.rb +134 -37
  58. data/lib/chargebee/models/subscription_entitlement.rb +6 -2
  59. data/lib/chargebee/models/time_machine.rb +10 -3
  60. data/lib/chargebee/models/transaction.rb +34 -11
  61. data/lib/chargebee/models/unbilled_charge.rb +20 -6
  62. data/lib/chargebee/models/usage.rb +16 -5
  63. data/lib/chargebee/models/usage_event.rb +4 -2
  64. data/lib/chargebee/models/usage_file.rb +4 -2
  65. data/lib/chargebee/models/virtual_bank_account.rb +20 -6
  66. data/lib/chargebee/nativeRequest.rb +118 -63
  67. data/lib/chargebee/request.rb +4 -4
  68. data/lib/chargebee.rb +1 -1
  69. data/spec/chargebee/list_result_spec.rb +1 -1
  70. data/spec/chargebee/native_request_spec.rb +199 -0
  71. data/spec/spec_helper.rb +3 -0
  72. metadata +4 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 001c016fe4fc0205f06fb61eb647d42281538059
4
- data.tar.gz: f833505b1779675814ddc724904de2cb9f12cb8d
3
+ metadata.gz: cf1336f15a71cb02ff2fa6141accef71818af3a6
4
+ data.tar.gz: 62eda545b0a3b114883c07c9bc2c68df5bbc518e
5
5
  SHA512:
6
- metadata.gz: 37f8ec23a423df351454d67c8d1a74eb4cd595b2364ac4b31033afa7fe318b815d0f07676c380e6916a1470182347d2d3c3c45cf1aa9fabecb695dcef9a2ed86
7
- data.tar.gz: 3b3c3d6dbfe8556c2d1b4679aaf7316c966180b5b596295873edb219967adc51ced19e0ac7dd5c99a97160a4a3b96d88b63cef3d9fb60821a784fe5b24b5d732
6
+ metadata.gz: 5f860d22e73d44c8d173adf78a88c5c86e02c05c6279f20fb8f2d7eb80000c4f031ac722430fa12a07bcc69e73c4ef41b7df1040a68c78c21d77cbc43293a0d2
7
+ data.tar.gz: 118bc7a4a9ba25db7bf9e67848b5caa0d867679875b234059307ff4a7c96c5e3d62fb0bd6d4d026e853310d9e59a5f0442b99ebf0aeefa759e87b43aa201b7b6
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ### v2.57.0 (2025-06-23)
2
+ * * *
3
+
4
+ ### New Features
5
+ * Added built-in retry support for handling transient errors and rate-limiting.
6
+ * Retries are now supported for HTTP status codes 500, 502, 503, 504, and 429.
7
+ * Includes exponential backoff for server errors and Retry-After respect for rate limits (429).
8
+ * Configurable via retryConfig during SDK initialization.
9
+
1
10
  ### v2.56.0 (2025-06-19)
2
11
  * * *
3
12
 
data/Gemfile CHANGED
@@ -1,3 +1,8 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
+
5
+ group :development, :test do
6
+ gem 'rspec', '~> 3.12'
7
+ gem 'webmock'
8
+ end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- chargebee (2.56.0)
4
+ chargebee (2.57.0)
5
5
  cgi (>= 0.1.0, < 1.0.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -73,6 +73,58 @@ puts(idempotencyReplayedValue)
73
73
  ```
74
74
  `is_idempotency_replayed` method can be accessed to differentiate between original and replayed requests.
75
75
 
76
+
77
+ ### Retry Handling
78
+
79
+ Chargebee's SDK includes built-in retry logic to handle temporary network issues and server-side errors. This feature is **disabled by default** but can be **enabled when needed**.
80
+
81
+ #### Key features include:
82
+
83
+ - **Automatic retries for specific HTTP status codes**: Retries are automatically triggered for status codes `500`, `502`, `503`, and `504`.
84
+ - **Exponential backoff**: Retry delays increase exponentially to prevent overwhelming the server.
85
+ - **Rate limit management**: If a `429 Too Many Requests` response is received with a `Retry-After` header, the SDK waits for the specified duration before retrying.
86
+ > *Note: Exponential backoff and max retries do not apply in this case.*
87
+ - **Customizable retry behavior**: Retry logic can be configured using the `retryConfig` parameter in the environment configuration.
88
+
89
+ #### Example: Customizing Retry Logic
90
+
91
+ You can enable and configure the retry logic by passing a `retryConfig` object when initializing the Chargebee environment:
92
+
93
+ ```ruby
94
+ require 'chargebee'
95
+ ChargeBee.configure({:api_key => "your_api_key" , :site => "your_site"})
96
+
97
+ # Set comprehensive retry configuration
98
+ ChargeBee::default_env.retry_config = {
99
+ enabled: true,
100
+ max_retries: 1,
101
+ delay_ms: 2000,
102
+ retry_on: [500]
103
+ }
104
+
105
+ # ... your Chargebee API operations ...
106
+
107
+ ```
108
+
109
+ #### Example: Rate Limit retry logic
110
+
111
+ You can enable and configure the retry logic for rate-limit by passing a `retryConfig` object when initializing the Chargebee environment:
112
+
113
+ ```ruby
114
+ require 'chargebee'
115
+ ChargeBee.configure({:api_key => "your_api_key" , :site => "your_site"})
116
+
117
+ # Set comprehensive retry configuration
118
+ ChargeBee::default_env.retry_config = {
119
+ enabled: true,
120
+ max_retries: 1,
121
+ delay_ms: 1000,
122
+ retry_on: [429]
123
+ }
124
+
125
+ # ... your Chargebee API operations ...
126
+ ```
127
+
76
128
  ## License
77
129
 
78
130
  See the LICENSE file.
data/chargebee.gemspec CHANGED
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
4
4
  s.rubygems_version = '1.3.5'
5
5
  s.required_ruby_version = '>= 1.9.3'
6
6
  s.name = 'chargebee'
7
- s.version = '2.56.0'
8
- s.date = '2025-06-19'
7
+ s.version = '2.57.0'
8
+ s.date = '2025-06-23'
9
9
  s.summary = "Ruby client for Chargebee API."
10
10
  s.description = "Subscription Billing - Simple. Secure. Affordable. More details at www.chargebee.com."
11
11
  s.metadata = {
@@ -135,6 +135,7 @@ Gem::Specification.new do |s|
135
135
  lib/chargebee/util.rb
136
136
  lib/ssl/ca-certs.crt
137
137
  spec/chargebee/list_result_spec.rb
138
+ spec/chargebee/native_request_spec.rb
138
139
  spec/chargebee_spec.rb
139
140
  spec/errors_spec.rb
140
141
  spec/sample_response.rb
@@ -10,6 +10,9 @@ module ChargeBee
10
10
  attr_accessor :api_key, :site, :time_machine_sleeptime, :export_sleeptime, :connect_timeout, :read_timeout
11
11
  attr_reader :api_endpoint
12
12
 
13
+ # Add retry_config and enable_debug_logs
14
+ attr_accessor :retry_config, :enable_debug_logs
15
+
13
16
  def initialize(options)
14
17
  options[:time_machine_sleeptime] ||= TIME_MACHINE_TIMEOUT
15
18
  options[:export_sleeptime] ||= EXPORT_TIMEOUT
@@ -18,6 +21,8 @@ module ChargeBee
18
21
  [:api_key, :site, :time_machine_sleeptime, :export_sleeptime, :connect_timeout, :read_timeout].each do |attr|
19
22
  instance_variable_set "@#{attr}", options[attr]
20
23
  end
24
+ @retry_config = options[:retry_config]
25
+ @enable_debug_logs = options[:enable_debug_logs] || false
21
26
  if($CHARGEBEE_DOMAIN == nil)
22
27
  @api_endpoint = "https://#{@site}.chargebee.com/api/#{API_VERSION}"
23
28
  else
@@ -25,15 +30,16 @@ module ChargeBee
25
30
  end
26
31
  end
27
32
 
28
- def api_url(url, sub_domain=nil)
29
- if(sub_domain != nil)
30
- if($CHARGEBEE_DOMAIN == nil)
31
- @api_endpoint = "https://#{@site}.#{sub_domain}.chargebee.com/api/#{API_VERSION}"
32
- else
33
- @api_endpoint = "#{$ENV_PROTOCOL == nil ? "http": "https"}://#{@site}.#{sub_domain}.#{$CHARGEBEE_DOMAIN}/api/#{API_VERSION}"
34
- end
33
+ def api_url(url, sub_domain = nil)
34
+ protocol = $ENV_PROTOCOL || "https"
35
+ domain = $CHARGEBEE_DOMAIN || "chargebee.com"
36
+
37
+ if sub_domain
38
+ @api_endpoint = "#{protocol}://#{@site}.#{sub_domain}.#{domain}/api/#{API_VERSION}"
39
+ else
40
+ @api_endpoint = "#{protocol}://#{@site}.#{domain}/api/#{API_VERSION}"
35
41
  end
36
- url = @api_endpoint + url
42
+ @api_endpoint + url
37
43
  end
38
44
  end
39
45
  end
@@ -25,44 +25,61 @@ module ChargeBee
25
25
  jsonKeys = {
26
26
  :meta_data => 0,
27
27
  }
28
- Request.send('post', uri_path("addons"), params, env, headers,nil, false, jsonKeys)
28
+ options = {
29
+ :isIdempotent => true
30
+ }
31
+ Request.send('post', uri_path("addons"), params, env, headers,nil, false, jsonKeys, options)
29
32
  end
30
33
 
31
34
  def self.update(id, params, env=nil, headers={})
32
35
  jsonKeys = {
33
36
  :meta_data => 0,
34
37
  }
35
- Request.send('post', uri_path("addons",id.to_s), params, env, headers,nil, false, jsonKeys)
38
+ options = {
39
+ :isIdempotent => true
40
+ }
41
+ Request.send('post', uri_path("addons",id.to_s), params, env, headers,nil, false, jsonKeys, options)
36
42
  end
37
43
 
38
44
  def self.list(params={}, env=nil, headers={})
39
45
  jsonKeys = {
40
46
  }
41
- Request.send_list_request('get', uri_path("addons"), params, env, headers,nil, false, jsonKeys)
47
+ options = {}
48
+ Request.send_list_request('get', uri_path("addons"), params, env, headers,nil, false, jsonKeys, options)
42
49
  end
43
50
 
44
51
  def self.retrieve(id, env=nil, headers={})
45
52
  jsonKeys = {
46
53
  }
47
- Request.send('get', uri_path("addons",id.to_s), {}, env, headers,nil, false, jsonKeys)
54
+ options = {}
55
+ Request.send('get', uri_path("addons",id.to_s), {}, env, headers,nil, false, jsonKeys, options)
48
56
  end
49
57
 
50
58
  def self.delete(id, env=nil, headers={})
51
59
  jsonKeys = {
52
60
  }
53
- Request.send('post', uri_path("addons",id.to_s,"delete"), {}, env, headers,nil, false, jsonKeys)
61
+ options = {
62
+ :isIdempotent => true
63
+ }
64
+ Request.send('post', uri_path("addons",id.to_s,"delete"), {}, env, headers,nil, false, jsonKeys, options)
54
65
  end
55
66
 
56
67
  def self.copy(params, env=nil, headers={})
57
68
  jsonKeys = {
58
69
  }
59
- Request.send('post', uri_path("addons","copy"), params, env, headers,nil, false, jsonKeys)
70
+ options = {
71
+ :isIdempotent => true
72
+ }
73
+ Request.send('post', uri_path("addons","copy"), params, env, headers,nil, false, jsonKeys, options)
60
74
  end
61
75
 
62
76
  def self.unarchive(id, env=nil, headers={})
63
77
  jsonKeys = {
64
78
  }
65
- Request.send('post', uri_path("addons",id.to_s,"unarchive"), {}, env, headers,nil, false, jsonKeys)
79
+ options = {
80
+ :isIdempotent => true
81
+ }
82
+ Request.send('post', uri_path("addons",id.to_s,"unarchive"), {}, env, headers,nil, false, jsonKeys, options)
66
83
  end
67
84
 
68
85
  end # ~Addon
@@ -10,13 +10,17 @@ module ChargeBee
10
10
  def self.retrieve(params, env=nil, headers={})
11
11
  jsonKeys = {
12
12
  }
13
- Request.send('get', uri_path("addresses"), params, env, headers,nil, false, jsonKeys)
13
+ options = {}
14
+ Request.send('get', uri_path("addresses"), params, env, headers,nil, false, jsonKeys, options)
14
15
  end
15
16
 
16
17
  def self.update(params, env=nil, headers={})
17
18
  jsonKeys = {
18
19
  }
19
- Request.send('post', uri_path("addresses"), params, env, headers,nil, false, jsonKeys)
20
+ options = {
21
+ :isIdempotent => true
22
+ }
23
+ Request.send('post', uri_path("addresses"), params, env, headers,nil, false, jsonKeys, options)
20
24
  end
21
25
 
22
26
  end # ~Address
@@ -11,31 +11,42 @@ module ChargeBee
11
11
  def self.create(id, params, env=nil, headers={})
12
12
  jsonKeys = {
13
13
  }
14
- Request.send('post', uri_path("items",id.to_s,"attached_items"), params, env, headers,nil, false, jsonKeys)
14
+ options = {
15
+ :isIdempotent => true
16
+ }
17
+ Request.send('post', uri_path("items",id.to_s,"attached_items"), params, env, headers,nil, false, jsonKeys, options)
15
18
  end
16
19
 
17
20
  def self.update(id, params, env=nil, headers={})
18
21
  jsonKeys = {
19
22
  }
20
- Request.send('post', uri_path("attached_items",id.to_s), params, env, headers,nil, false, jsonKeys)
23
+ options = {
24
+ :isIdempotent => true
25
+ }
26
+ Request.send('post', uri_path("attached_items",id.to_s), params, env, headers,nil, false, jsonKeys, options)
21
27
  end
22
28
 
23
29
  def self.retrieve(id, params, env=nil, headers={})
24
30
  jsonKeys = {
25
31
  }
26
- Request.send('get', uri_path("attached_items",id.to_s), params, env, headers,nil, false, jsonKeys)
32
+ options = {}
33
+ Request.send('get', uri_path("attached_items",id.to_s), params, env, headers,nil, false, jsonKeys, options)
27
34
  end
28
35
 
29
36
  def self.delete(id, params, env=nil, headers={})
30
37
  jsonKeys = {
31
38
  }
32
- Request.send('post', uri_path("attached_items",id.to_s,"delete"), params, env, headers,nil, false, jsonKeys)
39
+ options = {
40
+ :isIdempotent => true
41
+ }
42
+ Request.send('post', uri_path("attached_items",id.to_s,"delete"), params, env, headers,nil, false, jsonKeys, options)
33
43
  end
34
44
 
35
45
  def self.list(id, params={}, env=nil, headers={})
36
46
  jsonKeys = {
37
47
  }
38
- Request.send_list_request('get', uri_path("items",id.to_s,"attached_items"), params, env, headers,nil, false, jsonKeys)
48
+ options = {}
49
+ Request.send_list_request('get', uri_path("items",id.to_s,"attached_items"), params, env, headers,nil, false, jsonKeys, options)
39
50
  end
40
51
 
41
52
  end # ~AttachedItem
@@ -9,13 +9,17 @@ module ChargeBee
9
9
  def self.create_transfers(params, env=nil, headers={})
10
10
  jsonKeys = {
11
11
  }
12
- Request.send('post', uri_path("business_entities","transfers"), params, env, headers,nil, false, jsonKeys)
12
+ options = {
13
+ :isIdempotent => true
14
+ }
15
+ Request.send('post', uri_path("business_entities","transfers"), params, env, headers,nil, false, jsonKeys, options)
13
16
  end
14
17
 
15
18
  def self.get_transfers(params={}, env=nil, headers={})
16
19
  jsonKeys = {
17
20
  }
18
- Request.send('get', uri_path("business_entities","transfers"), params, env, headers,nil, false, jsonKeys)
21
+ options = {}
22
+ Request.send('get', uri_path("business_entities","transfers"), params, env, headers,nil, false, jsonKeys, options)
19
23
  end
20
24
 
21
25
  end # ~BusinessEntity
@@ -13,31 +13,44 @@ module ChargeBee
13
13
  def self.retrieve(id, env=nil, headers={})
14
14
  jsonKeys = {
15
15
  }
16
- Request.send('get', uri_path("cards",id.to_s), {}, env, headers,nil, false, jsonKeys)
16
+ options = {}
17
+ Request.send('get', uri_path("cards",id.to_s), {}, env, headers,nil, false, jsonKeys, options)
17
18
  end
18
19
 
19
20
  def self.update_card_for_customer(id, params, env=nil, headers={})
20
21
  jsonKeys = {
21
22
  }
22
- Request.send('post', uri_path("customers",id.to_s,"credit_card"), params, env, headers,nil, false, jsonKeys)
23
+ options = {
24
+ :isIdempotent => true
25
+ }
26
+ Request.send('post', uri_path("customers",id.to_s,"credit_card"), params, env, headers,nil, false, jsonKeys, options)
23
27
  end
24
28
 
25
29
  def self.switch_gateway_for_customer(id, params, env=nil, headers={})
26
30
  jsonKeys = {
27
31
  }
28
- Request.send('post', uri_path("customers",id.to_s,"switch_gateway"), params, env, headers,nil, false, jsonKeys)
32
+ options = {
33
+ :isIdempotent => true
34
+ }
35
+ Request.send('post', uri_path("customers",id.to_s,"switch_gateway"), params, env, headers,nil, false, jsonKeys, options)
29
36
  end
30
37
 
31
38
  def self.copy_card_for_customer(id, params, env=nil, headers={})
32
39
  jsonKeys = {
33
40
  }
34
- Request.send('post', uri_path("customers",id.to_s,"copy_card"), params, env, headers,nil, false, jsonKeys)
41
+ options = {
42
+ :isIdempotent => true
43
+ }
44
+ Request.send('post', uri_path("customers",id.to_s,"copy_card"), params, env, headers,nil, false, jsonKeys, options)
35
45
  end
36
46
 
37
47
  def self.delete_card_for_customer(id, env=nil, headers={})
38
48
  jsonKeys = {
39
49
  }
40
- Request.send('post', uri_path("customers",id.to_s,"delete_card"), {}, env, headers,nil, false, jsonKeys)
50
+ options = {
51
+ :isIdempotent => true
52
+ }
53
+ Request.send('post', uri_path("customers",id.to_s,"delete_card"), {}, env, headers,nil, false, jsonKeys, options)
41
54
  end
42
55
 
43
56
  end # ~Card
@@ -9,25 +9,33 @@ module ChargeBee
9
9
  def self.create(params, env=nil, headers={})
10
10
  jsonKeys = {
11
11
  }
12
- Request.send('post', uri_path("comments"), params, env, headers,nil, false, jsonKeys)
12
+ options = {
13
+ :isIdempotent => true
14
+ }
15
+ Request.send('post', uri_path("comments"), params, env, headers,nil, false, jsonKeys, options)
13
16
  end
14
17
 
15
18
  def self.retrieve(id, env=nil, headers={})
16
19
  jsonKeys = {
17
20
  }
18
- Request.send('get', uri_path("comments",id.to_s), {}, env, headers,nil, false, jsonKeys)
21
+ options = {}
22
+ Request.send('get', uri_path("comments",id.to_s), {}, env, headers,nil, false, jsonKeys, options)
19
23
  end
20
24
 
21
25
  def self.list(params={}, env=nil, headers={})
22
26
  jsonKeys = {
23
27
  }
24
- Request.send_list_request('get', uri_path("comments"), params, env, headers,nil, false, jsonKeys)
28
+ options = {}
29
+ Request.send_list_request('get', uri_path("comments"), params, env, headers,nil, false, jsonKeys, options)
25
30
  end
26
31
 
27
32
  def self.delete(id, env=nil, headers={})
28
33
  jsonKeys = {
29
34
  }
30
- Request.send('post', uri_path("comments",id.to_s,"delete"), {}, env, headers,nil, false, jsonKeys)
35
+ options = {
36
+ :isIdempotent => true
37
+ }
38
+ Request.send('post', uri_path("comments",id.to_s,"delete"), {}, env, headers,nil, false, jsonKeys, options)
31
39
  end
32
40
 
33
41
  end # ~Comment
@@ -9,7 +9,8 @@ module ChargeBee
9
9
  def self.list(env=nil, headers={})
10
10
  jsonKeys = {
11
11
  }
12
- Request.send_list_request('get', uri_path("configurations"), {}, env, headers,nil, false, jsonKeys)
12
+ options = {}
13
+ Request.send_list_request('get', uri_path("configurations"), {}, env, headers,nil, false, jsonKeys, options)
13
14
  end
14
15
 
15
16
  end # ~Configuration
@@ -27,7 +27,10 @@ module ChargeBee
27
27
  jsonKeys = {
28
28
  :meta_data => 0,
29
29
  }
30
- Request.send('post', uri_path("coupons"), params, env, headers,nil, false, jsonKeys)
30
+ options = {
31
+ :isIdempotent => true
32
+ }
33
+ Request.send('post', uri_path("coupons"), params, env, headers,nil, false, jsonKeys, options)
31
34
  end
32
35
 
33
36
  def self.create_for_items(params, env=nil, headers={})
@@ -38,7 +41,10 @@ module ChargeBee
38
41
  :currencies => 1,
39
42
  :item_price_periods => 1,
40
43
  }
41
- Request.send('post', uri_path("coupons","create_for_items"), params, env, headers,nil, false, jsonKeys)
44
+ options = {
45
+ :isIdempotent => true
46
+ }
47
+ Request.send('post', uri_path("coupons","create_for_items"), params, env, headers,nil, false, jsonKeys, options)
42
48
  end
43
49
 
44
50
  def self.update_for_items(id, params, env=nil, headers={})
@@ -49,44 +55,61 @@ module ChargeBee
49
55
  :currencies => 1,
50
56
  :item_price_periods => 1,
51
57
  }
52
- Request.send('post', uri_path("coupons",id.to_s,"update_for_items"), params, env, headers,nil, false, jsonKeys)
58
+ options = {
59
+ :isIdempotent => true
60
+ }
61
+ Request.send('post', uri_path("coupons",id.to_s,"update_for_items"), params, env, headers,nil, false, jsonKeys, options)
53
62
  end
54
63
 
55
64
  def self.list(params={}, env=nil, headers={})
56
65
  jsonKeys = {
57
66
  }
58
- Request.send_list_request('get', uri_path("coupons"), params, env, headers,nil, false, jsonKeys)
67
+ options = {}
68
+ Request.send_list_request('get', uri_path("coupons"), params, env, headers,nil, false, jsonKeys, options)
59
69
  end
60
70
 
61
71
  def self.retrieve(id, env=nil, headers={})
62
72
  jsonKeys = {
63
73
  }
64
- Request.send('get', uri_path("coupons",id.to_s), {}, env, headers,nil, false, jsonKeys)
74
+ options = {}
75
+ Request.send('get', uri_path("coupons",id.to_s), {}, env, headers,nil, false, jsonKeys, options)
65
76
  end
66
77
 
67
78
  def self.update(id, params={}, env=nil, headers={})
68
79
  jsonKeys = {
69
80
  :meta_data => 0,
70
81
  }
71
- Request.send('post', uri_path("coupons",id.to_s), params, env, headers,nil, false, jsonKeys)
82
+ options = {
83
+ :isIdempotent => true
84
+ }
85
+ Request.send('post', uri_path("coupons",id.to_s), params, env, headers,nil, false, jsonKeys, options)
72
86
  end
73
87
 
74
88
  def self.delete(id, env=nil, headers={})
75
89
  jsonKeys = {
76
90
  }
77
- Request.send('post', uri_path("coupons",id.to_s,"delete"), {}, env, headers,nil, false, jsonKeys)
91
+ options = {
92
+ :isIdempotent => true
93
+ }
94
+ Request.send('post', uri_path("coupons",id.to_s,"delete"), {}, env, headers,nil, false, jsonKeys, options)
78
95
  end
79
96
 
80
97
  def self.copy(params, env=nil, headers={})
81
98
  jsonKeys = {
82
99
  }
83
- Request.send('post', uri_path("coupons","copy"), params, env, headers,nil, false, jsonKeys)
100
+ options = {
101
+ :isIdempotent => true
102
+ }
103
+ Request.send('post', uri_path("coupons","copy"), params, env, headers,nil, false, jsonKeys, options)
84
104
  end
85
105
 
86
106
  def self.unarchive(id, env=nil, headers={})
87
107
  jsonKeys = {
88
108
  }
89
- Request.send('post', uri_path("coupons",id.to_s,"unarchive"), {}, env, headers,nil, false, jsonKeys)
109
+ options = {
110
+ :isIdempotent => true
111
+ }
112
+ Request.send('post', uri_path("coupons",id.to_s,"unarchive"), {}, env, headers,nil, false, jsonKeys, options)
90
113
  end
91
114
 
92
115
  end # ~Coupon
@@ -9,25 +9,33 @@ module ChargeBee
9
9
  def self.create(params, env=nil, headers={})
10
10
  jsonKeys = {
11
11
  }
12
- Request.send('post', uri_path("coupon_codes"), params, env, headers,nil, false, jsonKeys)
12
+ options = {
13
+ :isIdempotent => true
14
+ }
15
+ Request.send('post', uri_path("coupon_codes"), params, env, headers,nil, false, jsonKeys, options)
13
16
  end
14
17
 
15
18
  def self.retrieve(id, env=nil, headers={})
16
19
  jsonKeys = {
17
20
  }
18
- Request.send('get', uri_path("coupon_codes",id.to_s), {}, env, headers,nil, false, jsonKeys)
21
+ options = {}
22
+ Request.send('get', uri_path("coupon_codes",id.to_s), {}, env, headers,nil, false, jsonKeys, options)
19
23
  end
20
24
 
21
25
  def self.list(params={}, env=nil, headers={})
22
26
  jsonKeys = {
23
27
  }
24
- Request.send_list_request('get', uri_path("coupon_codes"), params, env, headers,nil, false, jsonKeys)
28
+ options = {}
29
+ Request.send_list_request('get', uri_path("coupon_codes"), params, env, headers,nil, false, jsonKeys, options)
25
30
  end
26
31
 
27
32
  def self.archive(id, env=nil, headers={})
28
33
  jsonKeys = {
29
34
  }
30
- Request.send('post', uri_path("coupon_codes",id.to_s,"archive"), {}, env, headers,nil, false, jsonKeys)
35
+ options = {
36
+ :isIdempotent => true
37
+ }
38
+ Request.send('post', uri_path("coupon_codes",id.to_s,"archive"), {}, env, headers,nil, false, jsonKeys, options)
31
39
  end
32
40
 
33
41
  end # ~CouponCode
@@ -10,44 +10,61 @@ module ChargeBee
10
10
  jsonKeys = {
11
11
  :meta_data => 0,
12
12
  }
13
- Request.send('post', uri_path("coupon_sets"), params, env, headers,nil, false, jsonKeys)
13
+ options = {
14
+ :isIdempotent => true
15
+ }
16
+ Request.send('post', uri_path("coupon_sets"), params, env, headers,nil, false, jsonKeys, options)
14
17
  end
15
18
 
16
19
  def self.add_coupon_codes(id, params={}, env=nil, headers={})
17
20
  jsonKeys = {
18
21
  }
19
- Request.send('post', uri_path("coupon_sets",id.to_s,"add_coupon_codes"), params, env, headers,nil, false, jsonKeys)
22
+ options = {
23
+ :isIdempotent => true
24
+ }
25
+ Request.send('post', uri_path("coupon_sets",id.to_s,"add_coupon_codes"), params, env, headers,nil, false, jsonKeys, options)
20
26
  end
21
27
 
22
28
  def self.list(params={}, env=nil, headers={})
23
29
  jsonKeys = {
24
30
  }
25
- Request.send_list_request('get', uri_path("coupon_sets"), params, env, headers,nil, false, jsonKeys)
31
+ options = {}
32
+ Request.send_list_request('get', uri_path("coupon_sets"), params, env, headers,nil, false, jsonKeys, options)
26
33
  end
27
34
 
28
35
  def self.retrieve(id, env=nil, headers={})
29
36
  jsonKeys = {
30
37
  }
31
- Request.send('get', uri_path("coupon_sets",id.to_s), {}, env, headers,nil, false, jsonKeys)
38
+ options = {}
39
+ Request.send('get', uri_path("coupon_sets",id.to_s), {}, env, headers,nil, false, jsonKeys, options)
32
40
  end
33
41
 
34
42
  def self.update(id, params={}, env=nil, headers={})
35
43
  jsonKeys = {
36
44
  :meta_data => 0,
37
45
  }
38
- Request.send('post', uri_path("coupon_sets",id.to_s,"update"), params, env, headers,nil, false, jsonKeys)
46
+ options = {
47
+ :isIdempotent => true
48
+ }
49
+ Request.send('post', uri_path("coupon_sets",id.to_s,"update"), params, env, headers,nil, false, jsonKeys, options)
39
50
  end
40
51
 
41
52
  def self.delete(id, env=nil, headers={})
42
53
  jsonKeys = {
43
54
  }
44
- Request.send('post', uri_path("coupon_sets",id.to_s,"delete"), {}, env, headers,nil, false, jsonKeys)
55
+ options = {
56
+ :isIdempotent => true
57
+ }
58
+ Request.send('post', uri_path("coupon_sets",id.to_s,"delete"), {}, env, headers,nil, false, jsonKeys, options)
45
59
  end
46
60
 
47
61
  def self.delete_unused_coupon_codes(id, env=nil, headers={})
48
62
  jsonKeys = {
49
63
  }
50
- Request.send('post', uri_path("coupon_sets",id.to_s,"delete_unused_coupon_codes"), {}, env, headers,nil, false, jsonKeys)
64
+ options = {
65
+ :isIdempotent => true
66
+ }
67
+ Request.send('post', uri_path("coupon_sets",id.to_s,"delete_unused_coupon_codes"), {}, env, headers,nil, false, jsonKeys, options)
51
68
  end
52
69
 
53
70
  end # ~CouponSet