recurly 3.6.0 → 3.7.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 +4 -4
- data/.bumpversion.cfg +1 -1
- data/CHANGELOG.md +19 -2
- data/GETTING_STARTED.md +1 -1
- data/lib/recurly/client.rb +7 -5
- data/lib/recurly/client/operations.rb +38 -1
- data/lib/recurly/requests/add_on_create.rb +2 -2
- data/lib/recurly/requests/add_on_update.rb +1 -1
- data/lib/recurly/requests/billing_info_create.rb +10 -2
- data/lib/recurly/requests/plan_create.rb +8 -0
- data/lib/recurly/requests/plan_update.rb +8 -0
- data/lib/recurly/requests/shipping_method_create.rb +26 -0
- data/lib/recurly/requests/shipping_method_update.rb +26 -0
- data/lib/recurly/requests/subscription_add_on_create.rb +1 -1
- data/lib/recurly/requests/subscription_add_on_update.rb +1 -1
- data/lib/recurly/resources/plan.rb +8 -0
- data/lib/recurly/resources/transaction.rb +4 -0
- data/lib/recurly/version.rb +1 -1
- data/openapi/api.yaml +772 -19
- data/recurly.gemspec +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4030ed5d0b3caab223006348f1f47342e2bf331fa5dcdc13f4679ac7b3b58b45
|
4
|
+
data.tar.gz: 65a37eab661fdb72b9bb42720ba81c07cafd10c0a48c1d8d2cc51baf01a8e979
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8569f9f4a8f3bc5722603036cfd16aa90fcbf8a48a14725f7d520d894de505c01b16a6ea2005fa1f43e24f58101f21159ee972ada8bd2390ed4ad901a3310cc8
|
7
|
+
data.tar.gz: 4eb5ec05dabac2b015aea206c59c9eb1ae3c06b8e56b660dd1417d9349cb6be02db179fa423a9cc841800c5b4b33dd8528c31ec342e2331d66c122bed173b032
|
data/.bumpversion.cfg
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,25 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## [3.
|
3
|
+
## [3.7.0](https://github.com/recurly/recurly-client-ruby/tree/HEAD)
|
4
4
|
|
5
|
-
[Full Changelog](https://github.com/recurly/recurly-client-ruby/compare/3.
|
5
|
+
[Full Changelog](https://github.com/recurly/recurly-client-ruby/compare/3.6.0...HEAD)
|
6
|
+
|
7
|
+
**Implemented enhancements:**
|
8
|
+
|
9
|
+
- Mon Jun 29 17:01:25 UTC 2020 Upgrade API version v2019-10-10 [\#601](https://github.com/recurly/recurly-client-ruby/pull/601) ([douglasmiller](https://github.com/douglasmiller))
|
10
|
+
|
11
|
+
**Fixed bugs:**
|
12
|
+
|
13
|
+
- Allow :headers to be included in operations [\#597](https://github.com/recurly/recurly-client-ruby/pull/597) ([douglasmiller](https://github.com/douglasmiller))
|
14
|
+
|
15
|
+
**Merged pull requests:**
|
16
|
+
|
17
|
+
- Release 3.7.0 [\#602](https://github.com/recurly/recurly-client-ruby/pull/602) ([douglasmiller](https://github.com/douglasmiller))
|
18
|
+
- Fix doc link [\#596](https://github.com/recurly/recurly-client-ruby/pull/596) ([bhelx](https://github.com/bhelx))
|
19
|
+
|
20
|
+
## [3.6.0](https://github.com/recurly/recurly-client-ruby/tree/3.6.0) (2020-06-01)
|
21
|
+
|
22
|
+
[Full Changelog](https://github.com/recurly/recurly-client-ruby/compare/3.5.0...3.6.0)
|
6
23
|
|
7
24
|
**Implemented enhancements:**
|
8
25
|
|
data/GETTING_STARTED.md
CHANGED
@@ -5,7 +5,7 @@ This repository houses the official ruby client for Recurly's V3 API.
|
|
5
5
|
In your Gemfile, add `recurly` as a dependency.
|
6
6
|
|
7
7
|
```ruby
|
8
|
-
gem 'recurly', '~> 3.
|
8
|
+
gem 'recurly', '~> 3.7'
|
9
9
|
```
|
10
10
|
|
11
11
|
> *Note*: We try to follow [semantic versioning](https://semver.org/) and will only apply breaking changes to major versions.
|
data/lib/recurly/client.rb
CHANGED
@@ -20,6 +20,7 @@ module Recurly
|
|
20
20
|
MAX_RETRIES = 3
|
21
21
|
LOG_LEVELS = %i(debug info warn error fatal).freeze
|
22
22
|
BASE36_ALPHABET = (("0".."9").to_a + ("a".."z").to_a).freeze
|
23
|
+
REQUEST_OPTIONS = [:headers].freeze
|
23
24
|
|
24
25
|
# Initialize a client. It requires an API key.
|
25
26
|
#
|
@@ -204,6 +205,9 @@ module Recurly
|
|
204
205
|
end
|
205
206
|
|
206
207
|
def set_headers(request, additional_headers = {})
|
208
|
+
# TODO this is undocumented until we finalize it
|
209
|
+
additional_headers.each { |header, v| request[header] = v } if additional_headers
|
210
|
+
|
207
211
|
request["Accept"] = "application/vnd.recurly.#{api_version}".chomp # got this method from operations.rb
|
208
212
|
request["Authorization"] = "Basic #{Base64.encode64(@api_key)}".chomp
|
209
213
|
request["User-Agent"] = "Recurly/#{VERSION}; #{RUBY_DESCRIPTION}"
|
@@ -211,9 +215,6 @@ module Recurly
|
|
211
215
|
unless request.is_a?(Net::HTTP::Get) || request.is_a?(Net::HTTP::Head)
|
212
216
|
request["Idempotency-Key"] ||= generate_idempotency_key
|
213
217
|
end
|
214
|
-
|
215
|
-
# TODO this is undocumented until we finalize it
|
216
|
-
additional_headers.each { |header, v| request[header] = v } if additional_headers
|
217
218
|
end
|
218
219
|
|
219
220
|
# from https://github.com/rails/rails/blob/6-0-stable/activesupport/lib/active_support/core_ext/securerandom.rb
|
@@ -316,8 +317,9 @@ module Recurly
|
|
316
317
|
|
317
318
|
def build_url(path, options)
|
318
319
|
path = scope_by_site(path, options)
|
319
|
-
|
320
|
-
|
320
|
+
query_params = options.reject { |k, _| REQUEST_OPTIONS.include?(k.to_sym) }
|
321
|
+
if query_params.any?
|
322
|
+
"#{path}?#{URI.encode_www_form(query_params)}"
|
321
323
|
else
|
322
324
|
path
|
323
325
|
end
|
@@ -2539,18 +2539,55 @@ module Recurly
|
|
2539
2539
|
pager(path, **options)
|
2540
2540
|
end
|
2541
2541
|
|
2542
|
+
# Create a new shipping method
|
2543
|
+
#
|
2544
|
+
# {https://developers.recurly.com/api/v2019-10-10#operation/create_shipping_method create_shipping_method api documenation}
|
2545
|
+
#
|
2546
|
+
# @param body [Requests::ShippingMethodCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::ShippingMethodCreate}
|
2547
|
+
# @param site_id [String] Site ID or subdomain. For ID no prefix is used e.g. +e28zov4fw0v2+. For subdomain use prefix +subdomain-+, e.g. +subdomain-recurly+.
|
2548
|
+
# @return [Resources::ShippingMethod] A new shipping method.
|
2549
|
+
def create_shipping_method(body:, **options)
|
2550
|
+
path = interpolate_path("/shipping_methods")
|
2551
|
+
post(path, body, Requests::ShippingMethodCreate, **options)
|
2552
|
+
end
|
2553
|
+
|
2542
2554
|
# Fetch a shipping method
|
2543
2555
|
#
|
2544
2556
|
# {https://developers.recurly.com/api/v2019-10-10#operation/get_shipping_method get_shipping_method api documenation}
|
2545
2557
|
#
|
2546
2558
|
# @param id [String] Shipping Method ID or code. For ID no prefix is used e.g. +e28zov4fw0v2+. For code use prefix +code-+, e.g. +code-usps_2-day+.
|
2547
2559
|
# @param site_id [String] Site ID or subdomain. For ID no prefix is used e.g. +e28zov4fw0v2+. For subdomain use prefix +subdomain-+, e.g. +subdomain-recurly+.
|
2548
|
-
# @return [Resources::ShippingMethod] A
|
2560
|
+
# @return [Resources::ShippingMethod] A shipping method.
|
2549
2561
|
def get_shipping_method(id:, **options)
|
2550
2562
|
path = interpolate_path("/shipping_methods/{id}", id: id)
|
2551
2563
|
get(path, **options)
|
2552
2564
|
end
|
2553
2565
|
|
2566
|
+
# Update an active Shipping Method
|
2567
|
+
#
|
2568
|
+
# {https://developers.recurly.com/api/v2019-10-10#operation/update_shipping_method update_shipping_method api documenation}
|
2569
|
+
#
|
2570
|
+
# @param shipping_method_id [String] Shipping Method ID or code. For ID no prefix is used e.g. +e28zov4fw0v2+. For code use prefix +code-+, e.g. +code-usps_2-day+.
|
2571
|
+
# @param body [Requests::ShippingMethodUpdate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::ShippingMethodUpdate}
|
2572
|
+
# @param site_id [String] Site ID or subdomain. For ID no prefix is used e.g. +e28zov4fw0v2+. For subdomain use prefix +subdomain-+, e.g. +subdomain-recurly+.
|
2573
|
+
# @return [Resources::ShippingMethod] The updated shipping method.
|
2574
|
+
def update_shipping_method(shipping_method_id:, body:, **options)
|
2575
|
+
path = interpolate_path("/shipping_methods/{shipping_method_id}", shipping_method_id: shipping_method_id)
|
2576
|
+
put(path, body, Requests::ShippingMethodUpdate, **options)
|
2577
|
+
end
|
2578
|
+
|
2579
|
+
# Deactivate a shipping method
|
2580
|
+
#
|
2581
|
+
# {https://developers.recurly.com/api/v2019-10-10#operation/deactivate_shipping_method deactivate_shipping_method api documenation}
|
2582
|
+
#
|
2583
|
+
# @param shipping_method_id [String] Shipping Method ID or code. For ID no prefix is used e.g. +e28zov4fw0v2+. For code use prefix +code-+, e.g. +code-usps_2-day+.
|
2584
|
+
# @param site_id [String] Site ID or subdomain. For ID no prefix is used e.g. +e28zov4fw0v2+. For subdomain use prefix +subdomain-+, e.g. +subdomain-recurly+.
|
2585
|
+
# @return [Resources::ShippingMethod] A shipping method.
|
2586
|
+
def deactivate_shipping_method(shipping_method_id:, **options)
|
2587
|
+
path = interpolate_path("/shipping_methods/{shipping_method_id}", shipping_method_id: shipping_method_id)
|
2588
|
+
delete(path, **options)
|
2589
|
+
end
|
2590
|
+
|
2554
2591
|
# List a site's subscriptions
|
2555
2592
|
#
|
2556
2593
|
# {https://developers.recurly.com/api/v2019-10-10#operation/list_subscriptions list_subscriptions api documenation}
|
@@ -55,11 +55,11 @@ module Recurly
|
|
55
55
|
define_attribute :tax_code, String
|
56
56
|
|
57
57
|
# @!attribute tier_type
|
58
|
-
# @return [String] The
|
58
|
+
# @return [String] The pricing model for the add-on. For more information, [click here](https://docs.recurly.com/docs/billing-models#section-quantity-based).
|
59
59
|
define_attribute :tier_type, String
|
60
60
|
|
61
61
|
# @!attribute tiers
|
62
|
-
# @return [Array[Tier]]
|
62
|
+
# @return [Array[Tier]] If the tier_type is `flat`, then `tiers` must be absent. The `tiers` object must include one to many tiers with `ending_quantity` and `unit_amount` for the desired `currencies`. There must be one tier with an `ending_quantity` of 999999999 which is the default if not provided.
|
63
63
|
define_attribute :tiers, Array, { :item_type => :Tier }
|
64
64
|
end
|
65
65
|
end
|
@@ -47,7 +47,7 @@ module Recurly
|
|
47
47
|
define_attribute :tax_code, String
|
48
48
|
|
49
49
|
# @!attribute tiers
|
50
|
-
# @return [Array[Tier]] If tiers
|
50
|
+
# @return [Array[Tier]] If the tier_type is `flat`, then `tiers` must be absent. The `tiers` object must include one to many tiers with `ending_quantity` and `unit_amount` for the desired `currencies`. There must be one tier with an `ending_quantity` of 999999999 which is the default if not provided.
|
51
51
|
define_attribute :tiers, Array, { :item_type => :Tier }
|
52
52
|
end
|
53
53
|
end
|
@@ -7,7 +7,7 @@ module Recurly
|
|
7
7
|
class BillingInfoCreate < Request
|
8
8
|
|
9
9
|
# @!attribute account_number
|
10
|
-
# @return [String] The bank account number. (ACH only)
|
10
|
+
# @return [String] The bank account number. (ACH, Bacs only)
|
11
11
|
define_attribute :account_number, String
|
12
12
|
|
13
13
|
# @!attribute account_type
|
@@ -63,7 +63,7 @@ module Recurly
|
|
63
63
|
define_attribute :month, String
|
64
64
|
|
65
65
|
# @!attribute name_on_account
|
66
|
-
# @return [String] The name associated with the bank account
|
66
|
+
# @return [String] The name associated with the bank account (ACH, SEPA, Bacs only)
|
67
67
|
define_attribute :name_on_account, String
|
68
68
|
|
69
69
|
# @!attribute number
|
@@ -78,6 +78,10 @@ module Recurly
|
|
78
78
|
# @return [String] The bank's rounting number. (ACH only)
|
79
79
|
define_attribute :routing_number, String
|
80
80
|
|
81
|
+
# @!attribute sort_code
|
82
|
+
# @return [String] Bank identifier code for UK based banks. Required for Bacs based billing infos. (Bacs only)
|
83
|
+
define_attribute :sort_code, String
|
84
|
+
|
81
85
|
# @!attribute three_d_secure_action_result_token_id
|
82
86
|
# @return [String] A token generated by Recurly.js after completing a 3-D Secure device fingerprinting or authentication challenge.
|
83
87
|
define_attribute :three_d_secure_action_result_token_id, String
|
@@ -90,6 +94,10 @@ module Recurly
|
|
90
94
|
# @return [String] An optional type designation for the payment gateway transaction created by this request. Supports 'moto' value, which is the acronym for mail order and telephone transactions.
|
91
95
|
define_attribute :transaction_type, String
|
92
96
|
|
97
|
+
# @!attribute type
|
98
|
+
# @return [String] The payment method type for a non-credit card based billing info. The value of `bacs` is the only accepted value (Bacs only)
|
99
|
+
define_attribute :type, String
|
100
|
+
|
93
101
|
# @!attribute vat_number
|
94
102
|
# @return [String] VAT number
|
95
103
|
define_attribute :vat_number, String
|
@@ -14,6 +14,10 @@ module Recurly
|
|
14
14
|
# @return [Array[AddOnCreate]] Add Ons
|
15
15
|
define_attribute :add_ons, Array, { :item_type => :AddOnCreate }
|
16
16
|
|
17
|
+
# @!attribute allow_any_item_on_subscriptions
|
18
|
+
# @return [Boolean] Used to determine whether items can be assigned as add-ons to individual subscriptions. If `true`, items can be assigned as add-ons to individual subscription add-ons. If `false`, only plan add-ons can be used.
|
19
|
+
define_attribute :allow_any_item_on_subscriptions, :Boolean
|
20
|
+
|
17
21
|
# @!attribute auto_renew
|
18
22
|
# @return [Boolean] Subscriptions will automatically inherit this value once they are active. If `auto_renew` is `true`, then a subscription will automatically renew its term at renewal. If `auto_renew` is `false`, then a subscription will expire at the end of its term. `auto_renew` can be overridden on the subscription record itself.
|
19
23
|
define_attribute :auto_renew, :Boolean
|
@@ -74,6 +78,10 @@ module Recurly
|
|
74
78
|
# @return [Integer] Length of plan's trial period in `trial_units`. `0` means `no trial`.
|
75
79
|
define_attribute :trial_length, Integer
|
76
80
|
|
81
|
+
# @!attribute trial_requires_billing_info
|
82
|
+
# @return [Boolean] Allow free trial subscriptions to be created without billing info. Should not be used if billing info is needed for initial invoice due to existing uninvoiced charges or setup fee.
|
83
|
+
define_attribute :trial_requires_billing_info, :Boolean
|
84
|
+
|
77
85
|
# @!attribute trial_unit
|
78
86
|
# @return [String] Units for the plan's trial period.
|
79
87
|
define_attribute :trial_unit, String
|
@@ -14,6 +14,10 @@ module Recurly
|
|
14
14
|
# @return [Array[AddOnCreate]] Add Ons
|
15
15
|
define_attribute :add_ons, Array, { :item_type => :AddOnCreate }
|
16
16
|
|
17
|
+
# @!attribute allow_any_item_on_subscriptions
|
18
|
+
# @return [Boolean] Used to determine whether items can be assigned as add-ons to individual subscriptions. If `true`, items can be assigned as add-ons to individual subscription add-ons. If `false`, only plan add-ons can be used.
|
19
|
+
define_attribute :allow_any_item_on_subscriptions, :Boolean
|
20
|
+
|
17
21
|
# @!attribute auto_renew
|
18
22
|
# @return [Boolean] Subscriptions will automatically inherit this value once they are active. If `auto_renew` is `true`, then a subscription will automatically renew its term at renewal. If `auto_renew` is `false`, then a subscription will expire at the end of its term. `auto_renew` can be overridden on the subscription record itself.
|
19
23
|
define_attribute :auto_renew, :Boolean
|
@@ -70,6 +74,10 @@ module Recurly
|
|
70
74
|
# @return [Integer] Length of plan's trial period in `trial_units`. `0` means `no trial`.
|
71
75
|
define_attribute :trial_length, Integer
|
72
76
|
|
77
|
+
# @!attribute trial_requires_billing_info
|
78
|
+
# @return [Boolean] Allow free trial subscriptions to be created without billing info. Should not be used if billing info is needed for initial invoice due to existing uninvoiced charges or setup fee.
|
79
|
+
define_attribute :trial_requires_billing_info, :Boolean
|
80
|
+
|
73
81
|
# @!attribute trial_unit
|
74
82
|
# @return [String] Units for the plan's trial period.
|
75
83
|
define_attribute :trial_unit, String
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# This file is automatically created by Recurly's OpenAPI generation process
|
2
|
+
# and thus any edits you make by hand will be lost. If you wish to make a
|
3
|
+
# change to this file, please create a Github issue explaining the changes you
|
4
|
+
# need and we will usher them to the appropriate places.
|
5
|
+
module Recurly
|
6
|
+
module Requests
|
7
|
+
class ShippingMethodCreate < Request
|
8
|
+
|
9
|
+
# @!attribute accounting_code
|
10
|
+
# @return [String] Accounting code for shipping method.
|
11
|
+
define_attribute :accounting_code, String
|
12
|
+
|
13
|
+
# @!attribute code
|
14
|
+
# @return [String] The internal name used identify the shipping method.
|
15
|
+
define_attribute :code, String
|
16
|
+
|
17
|
+
# @!attribute name
|
18
|
+
# @return [String] The name of the shipping method displayed to customers.
|
19
|
+
define_attribute :name, String
|
20
|
+
|
21
|
+
# @!attribute tax_code
|
22
|
+
# @return [String] Used by Avalara, Vertex, and Recurly’s built-in tax feature. The tax code values are specific to each tax system. If you are using Recurly’s built-in taxes the values are: - `FR` – Common Carrier FOB Destination - `FR022000` – Common Carrier FOB Origin - `FR020400` – Non Common Carrier FOB Destination - `FR020500` – Non Common Carrier FOB Origin - `FR010100` – Delivery by Company Vehicle Before Passage of Title - `FR010200` – Delivery by Company Vehicle After Passage of Title - `NT` – Non-Taxable
|
23
|
+
define_attribute :tax_code, String
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# This file is automatically created by Recurly's OpenAPI generation process
|
2
|
+
# and thus any edits you make by hand will be lost. If you wish to make a
|
3
|
+
# change to this file, please create a Github issue explaining the changes you
|
4
|
+
# need and we will usher them to the appropriate places.
|
5
|
+
module Recurly
|
6
|
+
module Requests
|
7
|
+
class ShippingMethodUpdate < Request
|
8
|
+
|
9
|
+
# @!attribute accounting_code
|
10
|
+
# @return [String] Accounting code for shipping method.
|
11
|
+
define_attribute :accounting_code, String
|
12
|
+
|
13
|
+
# @!attribute code
|
14
|
+
# @return [String] The internal name used identify the shipping method.
|
15
|
+
define_attribute :code, String
|
16
|
+
|
17
|
+
# @!attribute name
|
18
|
+
# @return [String] The name of the shipping method displayed to customers.
|
19
|
+
define_attribute :name, String
|
20
|
+
|
21
|
+
# @!attribute tax_code
|
22
|
+
# @return [String] Used by Avalara, Vertex, and Recurly’s built-in tax feature. The tax code values are specific to each tax system. If you are using Recurly’s built-in taxes the values are: - `FR` – Common Carrier FOB Destination - `FR022000` – Common Carrier FOB Origin - `FR020400` – Non Common Carrier FOB Destination - `FR020500` – Non Common Carrier FOB Origin - `FR010100` – Delivery by Company Vehicle Before Passage of Title - `FR010200` – Delivery by Company Vehicle After Passage of Title - `NT` – Non-Taxable
|
23
|
+
define_attribute :tax_code, String
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -19,7 +19,7 @@ module Recurly
|
|
19
19
|
define_attribute :revenue_schedule_type, String
|
20
20
|
|
21
21
|
# @!attribute tiers
|
22
|
-
# @return [Array[SubscriptionAddOnTier]] If the plan add-on's `tier_type` is `flat`, then `tiers` must be absent.
|
22
|
+
# @return [Array[SubscriptionAddOnTier]] If the plan add-on's `tier_type` is `flat`, then `tiers` must be absent. The `tiers` object must include one to many tiers with `ending_quantity` and `unit_amount`. There must be one tier with an `ending_quantity` of 999999999 which is the default if not provided.
|
23
23
|
define_attribute :tiers, Array, { :item_type => :SubscriptionAddOnTier }
|
24
24
|
|
25
25
|
# @!attribute unit_amount
|
@@ -23,7 +23,7 @@ module Recurly
|
|
23
23
|
define_attribute :revenue_schedule_type, String
|
24
24
|
|
25
25
|
# @!attribute tiers
|
26
|
-
# @return [Array[SubscriptionAddOnTier]] If the plan add-on's `tier_type` is `flat`, then `tiers` must be absent.
|
26
|
+
# @return [Array[SubscriptionAddOnTier]] If the plan add-on's `tier_type` is `flat`, then `tiers` must be absent. The `tiers` object must include one to many tiers with `ending_quantity` and `unit_amount`. There must be one tier with an `ending_quantity` of 999999999 which is the default if not provided.
|
27
27
|
define_attribute :tiers, Array, { :item_type => :SubscriptionAddOnTier }
|
28
28
|
|
29
29
|
# @!attribute unit_amount
|
@@ -10,6 +10,10 @@ module Recurly
|
|
10
10
|
# @return [String] Accounting code for invoice line items for the plan. If no value is provided, it defaults to plan's code.
|
11
11
|
define_attribute :accounting_code, String
|
12
12
|
|
13
|
+
# @!attribute allow_any_item_on_subscriptions
|
14
|
+
# @return [Boolean] Used to determine whether items can be assigned as add-ons to individual subscriptions. If `true`, items can be assigned as add-ons to individual subscription add-ons. If `false`, only plan add-ons can be used.
|
15
|
+
define_attribute :allow_any_item_on_subscriptions, :Boolean
|
16
|
+
|
13
17
|
# @!attribute auto_renew
|
14
18
|
# @return [Boolean] Subscriptions will automatically inherit this value once they are active. If `auto_renew` is `true`, then a subscription will automatically renew its term at renewal. If `auto_renew` is `false`, then a subscription will expire at the end of its term. `auto_renew` can be overridden on the subscription record itself.
|
15
19
|
define_attribute :auto_renew, :Boolean
|
@@ -90,6 +94,10 @@ module Recurly
|
|
90
94
|
# @return [Integer] Length of plan's trial period in `trial_units`. `0` means `no trial`.
|
91
95
|
define_attribute :trial_length, Integer
|
92
96
|
|
97
|
+
# @!attribute trial_requires_billing_info
|
98
|
+
# @return [Boolean] Allow free trial subscriptions to be created without billing info.
|
99
|
+
define_attribute :trial_requires_billing_info, :Boolean
|
100
|
+
|
93
101
|
# @!attribute trial_unit
|
94
102
|
# @return [String] Units for the plan's trial period.
|
95
103
|
define_attribute :trial_unit, String
|
@@ -138,6 +138,10 @@ module Recurly
|
|
138
138
|
# @return [String] - `authorization` – verifies billing information and places a hold on money in the customer's account. - `capture` – captures funds held by an authorization and completes a purchase. - `purchase` – combines the authorization and capture in one transaction. - `refund` – returns all or a portion of the money collected in a previous transaction to the customer. - `verify` – a $0 or $1 transaction used to verify billing information which is immediately voided.
|
139
139
|
define_attribute :type, String
|
140
140
|
|
141
|
+
# @!attribute updated_at
|
142
|
+
# @return [DateTime] Updated at
|
143
|
+
define_attribute :updated_at, DateTime
|
144
|
+
|
141
145
|
# @!attribute uuid
|
142
146
|
# @return [String] The UUID is useful for matching data with the CSV exports and building URLs into Recurly's UI.
|
143
147
|
define_attribute :uuid, String
|
data/lib/recurly/version.rb
CHANGED
data/openapi/api.yaml
CHANGED
@@ -381,6 +381,22 @@ paths:
|
|
381
381
|
schema:
|
382
382
|
"$ref": "#/components/schemas/Error"
|
383
383
|
x-code-samples:
|
384
|
+
- lang: Node.js
|
385
|
+
source: |
|
386
|
+
try {
|
387
|
+
const site = await client.getSite(siteId)
|
388
|
+
console.log('Fetched site: ', site)
|
389
|
+
} catch (err) {
|
390
|
+
if (err instanceof recurly.errors.NotFoundError) {
|
391
|
+
// If the request was not found, you may want to alert the user or
|
392
|
+
// just return null
|
393
|
+
console.log('Resource Not Found')
|
394
|
+
} else {
|
395
|
+
// If we don't know what to do with the err, we should
|
396
|
+
// probably re-raise and let our web framework and logger handle it
|
397
|
+
console.log('Unknown Error: ', err)
|
398
|
+
}
|
399
|
+
}
|
384
400
|
- lang: Python
|
385
401
|
source: |
|
386
402
|
try:
|
@@ -418,6 +434,19 @@ paths:
|
|
418
434
|
# just return nil
|
419
435
|
puts "Resource Not Found"
|
420
436
|
end
|
437
|
+
- lang: Java
|
438
|
+
source: |
|
439
|
+
try {
|
440
|
+
final Site site = client.getSite(siteId);
|
441
|
+
System.out.println("Fetched site: " + site.getId());
|
442
|
+
} catch (NotFoundException e) {
|
443
|
+
// If the resource was not found
|
444
|
+
// we may want to alert the user or just return null
|
445
|
+
System.out.println("Resource Not Found: " + e.getError().getMessage());
|
446
|
+
} catch (ApiException e) {
|
447
|
+
// Use ApiException to catch a generic error from the API
|
448
|
+
System.out.println("Unexpected Recurly Error: " + e.getError().getMessage());
|
449
|
+
}
|
421
450
|
- lang: PHP
|
422
451
|
source: |
|
423
452
|
try {
|
@@ -2235,6 +2264,13 @@ paths:
|
|
2235
2264
|
schema:
|
2236
2265
|
"$ref": "#/components/schemas/Error"
|
2237
2266
|
x-code-samples:
|
2267
|
+
- lang: Node.js
|
2268
|
+
source: |
|
2269
|
+
const redemptions = client.listAccountCouponRedemptions(accountId, { limit: 200 })
|
2270
|
+
|
2271
|
+
for await (const redemption of redemptions.each()) {
|
2272
|
+
console.log(redemption.id)
|
2273
|
+
}
|
2238
2274
|
- lang: Python
|
2239
2275
|
source: |
|
2240
2276
|
redemptions = client.list_account_coupon_redemptions(account_id, limit=200).items()
|
@@ -2560,6 +2596,22 @@ paths:
|
|
2560
2596
|
schema:
|
2561
2597
|
"$ref": "#/components/schemas/Error"
|
2562
2598
|
x-code-samples:
|
2599
|
+
- lang: Node.js
|
2600
|
+
source: |
|
2601
|
+
try {
|
2602
|
+
const redemption = await client.removeCouponRedemption(accountId)
|
2603
|
+
console.log('Removed coupon redemption: ', redemption.id)
|
2604
|
+
} catch (err) {
|
2605
|
+
if (err instanceof recurly.errors.NotFoundError) {
|
2606
|
+
// If the request was not found, you may want to alert the user or
|
2607
|
+
// just return null
|
2608
|
+
console.log('Resource Not Found')
|
2609
|
+
} else {
|
2610
|
+
// If we don't know what to do with the err, we should
|
2611
|
+
// probably re-raise and let our web framework and logger handle it
|
2612
|
+
console.log('Unknown Error: ', err)
|
2613
|
+
}
|
2614
|
+
}
|
2563
2615
|
- lang: Python
|
2564
2616
|
source: |
|
2565
2617
|
try:
|
@@ -2767,6 +2819,13 @@ paths:
|
|
2767
2819
|
schema:
|
2768
2820
|
"$ref": "#/components/schemas/Error"
|
2769
2821
|
x-code-samples:
|
2822
|
+
- lang: Node.js
|
2823
|
+
source: |
|
2824
|
+
const invoices = client.listAccountInvoices(accountId, { limit: 200 })
|
2825
|
+
|
2826
|
+
for await (const invoice of invoices.each()) {
|
2827
|
+
console.log(invoice.number)
|
2828
|
+
}
|
2770
2829
|
- lang: Python
|
2771
2830
|
source: |
|
2772
2831
|
invoices = client.list_account_invoices(account_id, limit=200).items()
|
@@ -3199,6 +3258,13 @@ paths:
|
|
3199
3258
|
schema:
|
3200
3259
|
"$ref": "#/components/schemas/Error"
|
3201
3260
|
x-code-samples:
|
3261
|
+
- lang: Node.js
|
3262
|
+
source: |
|
3263
|
+
const lineItems = client.listAccountLineItems(accountId, { limit: 200 })
|
3264
|
+
|
3265
|
+
for await (const lineItem of lineItems.each()) {
|
3266
|
+
console.log(lineItem.id)
|
3267
|
+
}
|
3202
3268
|
- lang: Python
|
3203
3269
|
source: |
|
3204
3270
|
line_items = client.list_account_line_items(account_id, limit=200).items()
|
@@ -4347,6 +4413,13 @@ paths:
|
|
4347
4413
|
schema:
|
4348
4414
|
"$ref": "#/components/schemas/Error"
|
4349
4415
|
x-code-samples:
|
4416
|
+
- lang: Node.js
|
4417
|
+
source: |
|
4418
|
+
const subscriptions = client.listAccountSubscriptions(accountId, { limit: 200 })
|
4419
|
+
|
4420
|
+
for await (const subscription of subscriptions.each()) {
|
4421
|
+
console.log(subscription.uuid)
|
4422
|
+
}
|
4350
4423
|
- lang: Python
|
4351
4424
|
source: |
|
4352
4425
|
subscriptions = client.list_account_subscriptions(account.id, limit=200).items()
|
@@ -4436,6 +4509,13 @@ paths:
|
|
4436
4509
|
schema:
|
4437
4510
|
"$ref": "#/components/schemas/Error"
|
4438
4511
|
x-code-samples:
|
4512
|
+
- lang: Node.js
|
4513
|
+
source: |
|
4514
|
+
const transactions = client.listAccountTransactions(accountId, { limit: 200 })
|
4515
|
+
|
4516
|
+
for await (const transaction of transactions.each()) {
|
4517
|
+
console.log(transaction.uuid)
|
4518
|
+
}
|
4439
4519
|
- lang: Python
|
4440
4520
|
source: |
|
4441
4521
|
transactions = client.list_account_transactions(account_id, limit=200).items()
|
@@ -4595,6 +4675,13 @@ paths:
|
|
4595
4675
|
schema:
|
4596
4676
|
"$ref": "#/components/schemas/Error"
|
4597
4677
|
x-code-samples:
|
4678
|
+
- lang: Node.js
|
4679
|
+
source: |
|
4680
|
+
const acquisitions = client.listAccountAcquisition({ limit: 200 })
|
4681
|
+
|
4682
|
+
for await (const acquisition of acquisitions.each()) {
|
4683
|
+
console.log(acquisition.id)
|
4684
|
+
}
|
4598
4685
|
- lang: Python
|
4599
4686
|
source: |
|
4600
4687
|
acquisitions = client.list_account_acquisition(limit=200).items()
|
@@ -4613,6 +4700,15 @@ paths:
|
|
4613
4700
|
acquisitions.each do |acquisition|
|
4614
4701
|
puts "AccountAcquisition: #{acquisition.cost}"
|
4615
4702
|
end
|
4703
|
+
- lang: Java
|
4704
|
+
source: |
|
4705
|
+
QueryParams params = new QueryParams();
|
4706
|
+
params.setLimit(200); // Pull 200 records at a time
|
4707
|
+
final Pager<AccountAcquisition> acquisitions = client.listAccountAcquisition(params);
|
4708
|
+
|
4709
|
+
for (AccountAcquisition acquisition : acquisitions) {
|
4710
|
+
System.out.println(acquisition.getId());
|
4711
|
+
}
|
4616
4712
|
- lang: PHP
|
4617
4713
|
source: |
|
4618
4714
|
$params = ['limit' => 200];
|
@@ -4762,6 +4858,28 @@ paths:
|
|
4762
4858
|
schema:
|
4763
4859
|
"$ref": "#/components/schemas/Error"
|
4764
4860
|
x-code-samples:
|
4861
|
+
- lang: Node.js
|
4862
|
+
source: |
|
4863
|
+
try {
|
4864
|
+
const couponCreate = {
|
4865
|
+
name: "Promotional Coupon",
|
4866
|
+
code: couponCode,
|
4867
|
+
discount_type: "fixed",
|
4868
|
+
currencies: [{"currency": "USD", "discount": 10}],
|
4869
|
+
}
|
4870
|
+
const coupon = await client.createCoupon(couponCreate)
|
4871
|
+
console.log('Created coupon: ', coupon.id)
|
4872
|
+
} catch (err) {
|
4873
|
+
if (err instanceof recurly.errors.ValidationError) {
|
4874
|
+
// If the request was not valid, you may want to tell your user
|
4875
|
+
// why. You can find the invalid params and reasons in err.params
|
4876
|
+
console.log('Failed validation', err.params)
|
4877
|
+
} else {
|
4878
|
+
// If we don't know what to do with the err, we should
|
4879
|
+
// probably re-raise and let our web framework and logger handle it
|
4880
|
+
console.log('Unknown Error: ', err)
|
4881
|
+
}
|
4882
|
+
}
|
4765
4883
|
- lang: Python
|
4766
4884
|
source: |
|
4767
4885
|
try:
|
@@ -5056,6 +5174,25 @@ paths:
|
|
5056
5174
|
schema:
|
5057
5175
|
"$ref": "#/components/schemas/Error"
|
5058
5176
|
x-code-samples:
|
5177
|
+
- lang: Node.js
|
5178
|
+
source: |
|
5179
|
+
try {
|
5180
|
+
const couponUpdate = {
|
5181
|
+
name: "New Coupon Name"
|
5182
|
+
}
|
5183
|
+
const coupon = await client.updateCoupon(couponId, couponUpdate)
|
5184
|
+
console.log('Updated coupon: ', coupon)
|
5185
|
+
} catch (err) {
|
5186
|
+
if (err instanceof recurly.errors.ValidationError) {
|
5187
|
+
// If the request was not valid, you may want to tell your user
|
5188
|
+
// why. You can find the invalid params and reasons in err.params
|
5189
|
+
console.log('Failed validation', err.params)
|
5190
|
+
} else {
|
5191
|
+
// If we don't know what to do with the err, we should
|
5192
|
+
// probably re-raise and let our web framework and logger handle it
|
5193
|
+
console.log('Unknown Error: ', err)
|
5194
|
+
}
|
5195
|
+
}
|
5059
5196
|
- lang: Python
|
5060
5197
|
source: |
|
5061
5198
|
try:
|
@@ -5102,6 +5239,23 @@ paths:
|
|
5102
5239
|
# just return nil
|
5103
5240
|
puts "Resource Not Found"
|
5104
5241
|
end
|
5242
|
+
- lang: Java
|
5243
|
+
source: |
|
5244
|
+
try {
|
5245
|
+
final CouponUpdate couponUpdate = new CouponUpdate();
|
5246
|
+
couponUpdate.setName("New Coupon Name");
|
5247
|
+
|
5248
|
+
final Coupon coupon = client.updateCoupon(couponId, couponUpdate);
|
5249
|
+
System.out.println("Updated coupon: " + coupon.getCode());
|
5250
|
+
System.out.println(coupon.getName());
|
5251
|
+
} catch (ValidationException e) {
|
5252
|
+
// If the request was not valid, you may want to tell your user
|
5253
|
+
// why. You can find the invalid params and reasons in e.getError().getParams()
|
5254
|
+
System.out.println("Failed validation: " + e.getError().getMessage());
|
5255
|
+
} catch (ApiException e) {
|
5256
|
+
// Use ApiException to catch a generic error from the API
|
5257
|
+
System.out.println("Unexpected Recurly Error: " + e.getError().getMessage());
|
5258
|
+
}
|
5105
5259
|
- lang: PHP
|
5106
5260
|
source: |
|
5107
5261
|
try {
|
@@ -7521,6 +7675,22 @@ paths:
|
|
7521
7675
|
schema:
|
7522
7676
|
"$ref": "#/components/schemas/Error"
|
7523
7677
|
x-code-samples:
|
7678
|
+
- lang: Node.js
|
7679
|
+
source: |
|
7680
|
+
try {
|
7681
|
+
const invoice = await client.voidInvoice(invoiceId)
|
7682
|
+
console.log('Voided invoice: ', invoice)
|
7683
|
+
} catch (err) {
|
7684
|
+
if (err instanceof recurly.errors.ValidationError) {
|
7685
|
+
// If the request was not valid, you may want to tell your user
|
7686
|
+
// why. You can find the invalid params and reasons in err.params
|
7687
|
+
console.log('Failed validation', err.params)
|
7688
|
+
} else {
|
7689
|
+
// If we don't know what to do with the err, we should
|
7690
|
+
// probably re-raise and let our web framework and logger handle it
|
7691
|
+
console.log('Unknown Error: ', err)
|
7692
|
+
}
|
7693
|
+
}
|
7524
7694
|
- lang: Python
|
7525
7695
|
source: |
|
7526
7696
|
try:
|
@@ -7540,6 +7710,19 @@ paths:
|
|
7540
7710
|
# just return nil
|
7541
7711
|
puts "Resource Not Found"
|
7542
7712
|
end
|
7713
|
+
- lang: Java
|
7714
|
+
source: |
|
7715
|
+
try {
|
7716
|
+
final Invoice invoice = client.voidInvoice(invoiceId);
|
7717
|
+
System.out.println("Voided invoice " + invoice.getId());
|
7718
|
+
} catch (final ValidationException e) {
|
7719
|
+
// If the request was not valid, you may want to tell your user
|
7720
|
+
// why. You can find the invalid params and reasons in e.getError().getParams()
|
7721
|
+
System.out.println("Failed validation: " + e.getError().getMessage());
|
7722
|
+
} catch (final ApiException e) {
|
7723
|
+
// Use ApiException to catch a generic error from the API
|
7724
|
+
System.out.println("Unexpected Recurly Error: " + e.getError().getMessage());
|
7725
|
+
}
|
7543
7726
|
- lang: PHP
|
7544
7727
|
source: |
|
7545
7728
|
try {
|
@@ -7672,6 +7855,13 @@ paths:
|
|
7672
7855
|
schema:
|
7673
7856
|
"$ref": "#/components/schemas/Error"
|
7674
7857
|
x-code-samples:
|
7858
|
+
- lang: Node.js
|
7859
|
+
source: |
|
7860
|
+
const lineItems = client.listInvoiceLineItems(invoiceId, { limit: 200 })
|
7861
|
+
|
7862
|
+
for await (const lineItem of lineItems.each()) {
|
7863
|
+
console.log(lineItem.id)
|
7864
|
+
}
|
7675
7865
|
- lang: Python
|
7676
7866
|
source: |
|
7677
7867
|
try:
|
@@ -7698,6 +7888,15 @@ paths:
|
|
7698
7888
|
line_items.each do |line_item|
|
7699
7889
|
puts "Line Item: #{line_item.id}"
|
7700
7890
|
end
|
7891
|
+
- lang: Java
|
7892
|
+
source: |
|
7893
|
+
QueryParams params = new QueryParams();
|
7894
|
+
params.setLimit(200);
|
7895
|
+
Pager<LineItem> lineItems = client.listInvoiceLineItems(invoiceId, params);
|
7896
|
+
|
7897
|
+
for (LineItem lineItem : lineItems) {
|
7898
|
+
System.out.println(lineItem.getId());
|
7899
|
+
}
|
7701
7900
|
- lang: PHP
|
7702
7901
|
source: |
|
7703
7902
|
$params = ['limit' => 200];
|
@@ -7746,6 +7945,13 @@ paths:
|
|
7746
7945
|
schema:
|
7747
7946
|
"$ref": "#/components/schemas/Error"
|
7748
7947
|
x-code-samples:
|
7948
|
+
- lang: Node.js
|
7949
|
+
source: |
|
7950
|
+
const redemptions = client.listInvoiceCouponRedemptions(invoiceId, { limit: 200 })
|
7951
|
+
|
7952
|
+
for await (const redemption of redemptions.each()) {
|
7953
|
+
console.log(redemption.id)
|
7954
|
+
}
|
7749
7955
|
- lang: Python
|
7750
7956
|
source: |
|
7751
7957
|
try:
|
@@ -9079,6 +9285,13 @@ paths:
|
|
9079
9285
|
schema:
|
9080
9286
|
"$ref": "#/components/schemas/Error"
|
9081
9287
|
x-code-samples:
|
9288
|
+
- lang: Node.js
|
9289
|
+
source: |
|
9290
|
+
const addOns = client.listPlanAddOns(planId, { limit: 200 })
|
9291
|
+
|
9292
|
+
for await (const addOn of addOns.each()) {
|
9293
|
+
console.log(addOn.code)
|
9294
|
+
}
|
9082
9295
|
- lang: Python
|
9083
9296
|
source: |
|
9084
9297
|
add_ons = client.list_plan_add_ons(plan_id).items()
|
@@ -9165,6 +9378,34 @@ paths:
|
|
9165
9378
|
schema:
|
9166
9379
|
"$ref": "#/components/schemas/Error"
|
9167
9380
|
x-code-samples:
|
9381
|
+
- lang: Node.js
|
9382
|
+
source: |
|
9383
|
+
try {
|
9384
|
+
const addOnCreate = {
|
9385
|
+
code: 'coffee_grinder',
|
9386
|
+
name: 'A quality grinder for your beans',
|
9387
|
+
defaultQuantity: 1,
|
9388
|
+
currencies: [
|
9389
|
+
{
|
9390
|
+
currency: 'USD',
|
9391
|
+
unitAmount: 10000
|
9392
|
+
}
|
9393
|
+
]
|
9394
|
+
}
|
9395
|
+
|
9396
|
+
const addOn = await client.createPlanAddOn(planId, addOnCreate)
|
9397
|
+
console.log('Created add-on: ', addOn.code)
|
9398
|
+
} catch (err) {
|
9399
|
+
if (err instanceof recurly.errors.ValidationError) {
|
9400
|
+
// If the request was not valid, you may want to tell your user
|
9401
|
+
// why. You can find the invalid params and reasons in err.params
|
9402
|
+
console.log('Failed validation', err.params)
|
9403
|
+
} else {
|
9404
|
+
// If we don't know what to do with the err, we should
|
9405
|
+
// probably re-raise and let our web framework and logger handle it
|
9406
|
+
console.log('Unknown Error: ', err)
|
9407
|
+
}
|
9408
|
+
}
|
9168
9409
|
- lang: Python
|
9169
9410
|
source: |
|
9170
9411
|
try:
|
@@ -9325,6 +9566,22 @@ paths:
|
|
9325
9566
|
schema:
|
9326
9567
|
"$ref": "#/components/schemas/Error"
|
9327
9568
|
x-code-samples:
|
9569
|
+
- lang: Node.js
|
9570
|
+
source: |
|
9571
|
+
try {
|
9572
|
+
const addOn = await client.getPlanAddOn(planId, addOnId)
|
9573
|
+
console.log('Fetched add-on: ', addOn.code)
|
9574
|
+
} catch (err) {
|
9575
|
+
if (err instanceof recurly.errors.NotFoundError) {
|
9576
|
+
// If the request was not found, you may want to alert the user or
|
9577
|
+
// just return null
|
9578
|
+
console.log('Resource Not Found')
|
9579
|
+
} else {
|
9580
|
+
// If we don't know what to do with the err, we should
|
9581
|
+
// probably re-raise and let our web framework and logger handle it
|
9582
|
+
console.log('Unknown Error: ', err)
|
9583
|
+
}
|
9584
|
+
}
|
9328
9585
|
- lang: Python
|
9329
9586
|
source: |
|
9330
9587
|
try:
|
@@ -9441,6 +9698,25 @@ paths:
|
|
9441
9698
|
schema:
|
9442
9699
|
"$ref": "#/components/schemas/Error"
|
9443
9700
|
x-code-samples:
|
9701
|
+
- lang: Node.js
|
9702
|
+
source: |
|
9703
|
+
try {
|
9704
|
+
const addOnUpdate = {
|
9705
|
+
name: 'New AddOn Name',
|
9706
|
+
}
|
9707
|
+
const addOn = await client.updatePlanAddOn(planId, addOnId, addOnUpdate)
|
9708
|
+
console.log('Updated add-on: ', addOn)
|
9709
|
+
} catch (err) {
|
9710
|
+
if (err instanceof recurly.errors.ValidationError) {
|
9711
|
+
// If the request was not valid, you may want to tell your user
|
9712
|
+
// why. You can find the invalid params and reasons in err.params
|
9713
|
+
console.log('Failed validation', err.params)
|
9714
|
+
} else {
|
9715
|
+
// If we don't know what to do with the err, we should
|
9716
|
+
// probably re-raise and let our web framework and logger handle it
|
9717
|
+
console.log('Unknown Error: ', err)
|
9718
|
+
}
|
9719
|
+
}
|
9444
9720
|
- lang: Python
|
9445
9721
|
source: |
|
9446
9722
|
try:
|
@@ -9481,6 +9757,23 @@ paths:
|
|
9481
9757
|
\"Updated add-on #{add_on}\"\nrescue Recurly::Errors::NotFoundError\n #
|
9482
9758
|
If the resource was not found, you may want to alert the user or\n # just
|
9483
9759
|
return nil\n puts \"Resource Not Found\"\nend\n"
|
9760
|
+
- lang: Java
|
9761
|
+
source: |
|
9762
|
+
try {
|
9763
|
+
final AddOnUpdate addOnUpdate = new AddOnUpdate();
|
9764
|
+
addOnUpdate.setName("New Add-On Name");
|
9765
|
+
|
9766
|
+
final AddOn addOn = client.updatePlanAddOn(planId, addOnId, addOnUpdate);
|
9767
|
+
System.out.println("Updated add-on " + addOn.getCode());
|
9768
|
+
System.out.println(addOn.getName());
|
9769
|
+
} catch (NotFoundException e) {
|
9770
|
+
// If the resource was not found
|
9771
|
+
// we may want to alert the user or just return null
|
9772
|
+
System.out.println("Resource Not Found: " + e.getError().getMessage());
|
9773
|
+
} catch (ApiException e) {
|
9774
|
+
// Use ApiException to catch a generic error from the API
|
9775
|
+
System.out.println("Unexpected Recurly Error: " + e.getError().getMessage());
|
9776
|
+
}
|
9484
9777
|
- lang: PHP
|
9485
9778
|
source: |
|
9486
9779
|
try {
|
@@ -9531,6 +9824,22 @@ paths:
|
|
9531
9824
|
schema:
|
9532
9825
|
"$ref": "#/components/schemas/Error"
|
9533
9826
|
x-code-samples:
|
9827
|
+
- lang: Node.js
|
9828
|
+
source: |
|
9829
|
+
try {
|
9830
|
+
const addOn = await client.removePlanAddOn(planId, addOnId)
|
9831
|
+
console.log('Removed plan add-on: ', addOn)
|
9832
|
+
} catch (err) {
|
9833
|
+
if (err instanceof recurly.errors.NotFoundError) {
|
9834
|
+
// If the request was not found, you may want to alert the user or
|
9835
|
+
// just return null
|
9836
|
+
console.log('Resource Not Found')
|
9837
|
+
} else {
|
9838
|
+
// If we don't know what to do with the err, we should
|
9839
|
+
// probably re-raise and let our web framework and logger handle it
|
9840
|
+
console.log('Unknown Error: ', err)
|
9841
|
+
}
|
9842
|
+
}
|
9534
9843
|
- lang: Python
|
9535
9844
|
source: |
|
9536
9845
|
try:
|
@@ -9563,6 +9872,19 @@ paths:
|
|
9563
9872
|
\n add_on_id: add_on_id\n )\n puts \"Removed add-on #{add_on}\"\nrescue
|
9564
9873
|
Recurly::Errors::NotFoundError\n # If the resource was not found, you may
|
9565
9874
|
want to alert the user or\n # just return nil\n puts \"Resource Not Found\"\nend\n"
|
9875
|
+
- lang: Java
|
9876
|
+
source: |-
|
9877
|
+
try {
|
9878
|
+
final AddOn addOn = client.removePlanAddOn(planId, addOnId);
|
9879
|
+
System.out.println("Removed add-on " + addOn.getCode());
|
9880
|
+
} catch (ValidationException e) {
|
9881
|
+
// If the request was not valid, you may want to tell your user
|
9882
|
+
// why. You can find the invalid params and reasons in e.getError().getParams()
|
9883
|
+
System.out.println("Failed validation: " + e.getError().getMessage());
|
9884
|
+
} catch (ApiException e) {
|
9885
|
+
// Use ApiException to catch a generic error from the API
|
9886
|
+
System.out.println("Unexpected Recurly Error: " + e.getError().getMessage());
|
9887
|
+
}
|
9566
9888
|
- lang: PHP
|
9567
9889
|
source: |
|
9568
9890
|
try {
|
@@ -9626,6 +9948,13 @@ paths:
|
|
9626
9948
|
schema:
|
9627
9949
|
"$ref": "#/components/schemas/Error"
|
9628
9950
|
x-code-samples:
|
9951
|
+
- lang: Node.js
|
9952
|
+
source: |
|
9953
|
+
const addOns = client.listAddOns({ limit: 200 })
|
9954
|
+
|
9955
|
+
for await (const addOn of addOns.each()) {
|
9956
|
+
console.log(addOn.code)
|
9957
|
+
}
|
9629
9958
|
- lang: Python
|
9630
9959
|
source: |
|
9631
9960
|
add_ons = client.list_add_ons().items()
|
@@ -9698,12 +10027,28 @@ paths:
|
|
9698
10027
|
schema:
|
9699
10028
|
"$ref": "#/components/schemas/Error"
|
9700
10029
|
x-code-samples:
|
9701
|
-
- lang:
|
10030
|
+
- lang: Node.js
|
9702
10031
|
source: |
|
9703
|
-
try
|
9704
|
-
|
9705
|
-
|
9706
|
-
|
10032
|
+
try {
|
10033
|
+
const addOn = await client.getAddOn(addOnId)
|
10034
|
+
console.log('Fetched add-on: ', addOn)
|
10035
|
+
} catch (err) {
|
10036
|
+
if (err instanceof recurly.errors.NotFoundError) {
|
10037
|
+
// If the request was not found, you may want to alert the user or
|
10038
|
+
// just return null
|
10039
|
+
console.log('Resource Not Found')
|
10040
|
+
} else {
|
10041
|
+
// If we don't know what to do with the err, we should
|
10042
|
+
// probably re-raise and let our web framework and logger handle it
|
10043
|
+
console.log('Unknown Error: ', err)
|
10044
|
+
}
|
10045
|
+
}
|
10046
|
+
- lang: Python
|
10047
|
+
source: |
|
10048
|
+
try:
|
10049
|
+
add_on = client.get_add_on(add_on_id)
|
10050
|
+
print("Got Add-On %s" % add_on)
|
10051
|
+
except recurly.errors.NotFoundError:
|
9707
10052
|
# If the resource was not found, you may want to alert the user or
|
9708
10053
|
# just return nil
|
9709
10054
|
print("Resource Not Found")
|
@@ -9735,6 +10080,19 @@ paths:
|
|
9735
10080
|
# just return nil
|
9736
10081
|
puts "Resource Not Found"
|
9737
10082
|
end
|
10083
|
+
- lang: Java
|
10084
|
+
source: |
|
10085
|
+
try {
|
10086
|
+
final AddOn addOn = client.getAddOn(addOnId);
|
10087
|
+
System.out.println("Fetched add-on " + addOn.getCode());
|
10088
|
+
} catch (NotFoundException e) {
|
10089
|
+
// If the resource was not found
|
10090
|
+
// we may want to alert the user or just return null
|
10091
|
+
System.out.println("Resource Not Found: " + e.getError().getMessage());
|
10092
|
+
} catch (ApiException e) {
|
10093
|
+
// Use ApiException to catch a generic error from the API
|
10094
|
+
System.out.println("Unexpected Recurly Error: " + e.getError().getMessage());
|
10095
|
+
}
|
9738
10096
|
- lang: PHP
|
9739
10097
|
source: |
|
9740
10098
|
try {
|
@@ -9797,6 +10155,13 @@ paths:
|
|
9797
10155
|
schema:
|
9798
10156
|
"$ref": "#/components/schemas/Error"
|
9799
10157
|
x-code-samples:
|
10158
|
+
- lang: Node.js
|
10159
|
+
source: |
|
10160
|
+
const methods = client.listShippingMethods({ limit: 200 })
|
10161
|
+
|
10162
|
+
for await (const method of methods.each()) {
|
10163
|
+
console.log(method.code)
|
10164
|
+
}
|
9800
10165
|
- lang: Python
|
9801
10166
|
source: |
|
9802
10167
|
shipping_methods = client.list_shipping_methods(limit=200).items()
|
@@ -9817,6 +10182,15 @@ paths:
|
|
9817
10182
|
shipping_methods.each do |shipping_method|
|
9818
10183
|
puts "Shipping Method: #{shipping_method.code}"
|
9819
10184
|
end
|
10185
|
+
- lang: Java
|
10186
|
+
source: |
|
10187
|
+
QueryParams params = new QueryParams();
|
10188
|
+
params.setLimit(200); // Pull 200 records at a time
|
10189
|
+
final Pager<ShippingMethod> shippingMethods = client.listShippingMethods(params);
|
10190
|
+
|
10191
|
+
for (ShippingMethod shippingMethod : shippingMethods) {
|
10192
|
+
System.out.println(shippingMethod.getCode());
|
10193
|
+
}
|
9820
10194
|
- lang: PHP
|
9821
10195
|
source: |
|
9822
10196
|
$params = ['limit' => 200];
|
@@ -9833,6 +10207,51 @@ paths:
|
|
9833
10207
|
ok {\n\t\tfmt.Printf(\"Failed to retrieve next page: %v\", e)\n\t\tbreak\n\t}\n\tfor
|
9834
10208
|
i, method := range shippingMethods.Data {\n\t\tfmt.Printf(\"Shipping Method
|
9835
10209
|
%3d: %s, %s\\n\",\n\t\t\ti,\n\t\t\tmethod.Id,\n\t\t\tmethod.Code,\n\t\t)\n\t}\n}"
|
10210
|
+
post:
|
10211
|
+
tags:
|
10212
|
+
- shipping_method
|
10213
|
+
operationId: create_shipping_method
|
10214
|
+
summary: Create a new shipping method
|
10215
|
+
parameters:
|
10216
|
+
- "$ref": "#/components/parameters/site_id"
|
10217
|
+
requestBody:
|
10218
|
+
content:
|
10219
|
+
application/json:
|
10220
|
+
schema:
|
10221
|
+
"$ref": "#/components/schemas/ShippingMethodCreate"
|
10222
|
+
required: true
|
10223
|
+
responses:
|
10224
|
+
'201':
|
10225
|
+
description: A new shipping method.
|
10226
|
+
content:
|
10227
|
+
application/json:
|
10228
|
+
schema:
|
10229
|
+
"$ref": "#/components/schemas/ShippingMethod"
|
10230
|
+
'400':
|
10231
|
+
description: Bad request, perhaps invalid JSON?
|
10232
|
+
content:
|
10233
|
+
application/json:
|
10234
|
+
schema:
|
10235
|
+
"$ref": "#/components/schemas/Error"
|
10236
|
+
'404':
|
10237
|
+
description: Incorrect site ID.
|
10238
|
+
content:
|
10239
|
+
application/json:
|
10240
|
+
schema:
|
10241
|
+
"$ref": "#/components/schemas/Error"
|
10242
|
+
'422':
|
10243
|
+
description: Invalid request parameters.
|
10244
|
+
content:
|
10245
|
+
application/json:
|
10246
|
+
schema:
|
10247
|
+
"$ref": "#/components/schemas/Error"
|
10248
|
+
default:
|
10249
|
+
description: Unexpected error.
|
10250
|
+
content:
|
10251
|
+
application/json:
|
10252
|
+
schema:
|
10253
|
+
"$ref": "#/components/schemas/Error"
|
10254
|
+
x-code-samples: []
|
9836
10255
|
"/sites/{site_id}/shipping_methods/{id}":
|
9837
10256
|
get:
|
9838
10257
|
tags:
|
@@ -9850,19 +10269,96 @@ paths:
|
|
9850
10269
|
type: string
|
9851
10270
|
responses:
|
9852
10271
|
'200':
|
9853
|
-
description: A
|
10272
|
+
description: A shipping method.
|
9854
10273
|
content:
|
9855
10274
|
application/json:
|
9856
10275
|
schema:
|
9857
10276
|
"$ref": "#/components/schemas/ShippingMethod"
|
9858
10277
|
'404':
|
9859
|
-
description: Incorrect site or
|
10278
|
+
description: Incorrect site or shipping method ID.
|
9860
10279
|
content:
|
9861
10280
|
application/json:
|
9862
10281
|
schema:
|
9863
10282
|
"$ref": "#/components/schemas/Error"
|
9864
10283
|
default:
|
9865
|
-
description: Unexpected error
|
10284
|
+
description: Unexpected error.
|
10285
|
+
content:
|
10286
|
+
application/json:
|
10287
|
+
schema:
|
10288
|
+
"$ref": "#/components/schemas/Error"
|
10289
|
+
x-code-samples: []
|
10290
|
+
"/sites/{site_id}/shipping_methods/{shipping_method_id}":
|
10291
|
+
put:
|
10292
|
+
tags:
|
10293
|
+
- shipping_method
|
10294
|
+
operationId: update_shipping_method
|
10295
|
+
summary: Update an active Shipping Method
|
10296
|
+
parameters:
|
10297
|
+
- "$ref": "#/components/parameters/site_id"
|
10298
|
+
- "$ref": "#/components/parameters/shipping_method_id"
|
10299
|
+
requestBody:
|
10300
|
+
content:
|
10301
|
+
application/json:
|
10302
|
+
schema:
|
10303
|
+
"$ref": "#/components/schemas/ShippingMethodUpdate"
|
10304
|
+
required: true
|
10305
|
+
responses:
|
10306
|
+
'200':
|
10307
|
+
description: The updated shipping method.
|
10308
|
+
content:
|
10309
|
+
application/json:
|
10310
|
+
schema:
|
10311
|
+
"$ref": "#/components/schemas/ShippingMethod"
|
10312
|
+
'400':
|
10313
|
+
description: Bad request, perhaps invalid JSON?
|
10314
|
+
content:
|
10315
|
+
application/json:
|
10316
|
+
schema:
|
10317
|
+
"$ref": "#/components/schemas/Error"
|
10318
|
+
'404':
|
10319
|
+
description: Incorrect site or shipping method ID.
|
10320
|
+
content:
|
10321
|
+
application/json:
|
10322
|
+
schema:
|
10323
|
+
"$ref": "#/components/schemas/Error"
|
10324
|
+
'422':
|
10325
|
+
description: Invalid request parameters
|
10326
|
+
content:
|
10327
|
+
application/json:
|
10328
|
+
schema:
|
10329
|
+
"$ref": "#/components/schemas/Error"
|
10330
|
+
default:
|
10331
|
+
description: Unexpected error.
|
10332
|
+
content:
|
10333
|
+
application/json:
|
10334
|
+
schema:
|
10335
|
+
"$ref": "#/components/schemas/Error"
|
10336
|
+
x-code-samples: []
|
10337
|
+
delete:
|
10338
|
+
tags:
|
10339
|
+
- shipping_method
|
10340
|
+
operationId: deactivate_shipping_method
|
10341
|
+
summary: Deactivate a shipping method
|
10342
|
+
parameters:
|
10343
|
+
- "$ref": "#/components/parameters/site_id"
|
10344
|
+
- "$ref": "#/components/parameters/shipping_method_id"
|
10345
|
+
description: Deactivating a shipping method makes it unavailable for new subscriptions
|
10346
|
+
or purchases. It will not affect existing subscriptions.
|
10347
|
+
responses:
|
10348
|
+
'200':
|
10349
|
+
description: A shipping method.
|
10350
|
+
content:
|
10351
|
+
application/json:
|
10352
|
+
schema:
|
10353
|
+
"$ref": "#/components/schemas/ShippingMethod"
|
10354
|
+
'422':
|
10355
|
+
description: Shipping method may already be inactive.
|
10356
|
+
content:
|
10357
|
+
application/json:
|
10358
|
+
schema:
|
10359
|
+
"$ref": "#/components/schemas/Error"
|
10360
|
+
default:
|
10361
|
+
description: Unexpected error.
|
9866
10362
|
content:
|
9867
10363
|
application/json:
|
9868
10364
|
schema:
|
@@ -10872,6 +11368,25 @@ paths:
|
|
10872
11368
|
schema:
|
10873
11369
|
"$ref": "#/components/schemas/Error"
|
10874
11370
|
x-code-samples:
|
11371
|
+
- lang: Node.js
|
11372
|
+
source: |
|
11373
|
+
try {
|
11374
|
+
let pauseReq = {
|
11375
|
+
remaining_pause_cycles: 2,
|
11376
|
+
}
|
11377
|
+
const subscription = await client.pauseSubscription(subscriptionId, pauseReq)
|
11378
|
+
console.log('Paused subscription: ', subscription.id)
|
11379
|
+
} catch (err) {
|
11380
|
+
if (err instanceof recurly.errors.ValidationError) {
|
11381
|
+
// If the request was not valid, you may want to tell your user
|
11382
|
+
// why. You can find the invalid params and reasons in err.params
|
11383
|
+
console.log('Failed validation', err.params)
|
11384
|
+
} else {
|
11385
|
+
// If we don't know what to do with the err, we should
|
11386
|
+
// probably re-raise and let our web framework and logger handle it
|
11387
|
+
console.log('Unknown Error: ', err)
|
11388
|
+
}
|
11389
|
+
}
|
10875
11390
|
- lang: Python
|
10876
11391
|
source: |
|
10877
11392
|
try:
|
@@ -11001,6 +11516,22 @@ paths:
|
|
11001
11516
|
schema:
|
11002
11517
|
"$ref": "#/components/schemas/Error"
|
11003
11518
|
x-code-samples:
|
11519
|
+
- lang: Node.js
|
11520
|
+
source: |
|
11521
|
+
try {
|
11522
|
+
const subscription = await client.resumeSubscription(subscriptionId)
|
11523
|
+
console.log('Resumed subscription: ', subscription.id)
|
11524
|
+
} catch (err) {
|
11525
|
+
if (err instanceof recurly.errors.ValidationError) {
|
11526
|
+
// If the request was not valid, you may want to tell your user
|
11527
|
+
// why. You can find the invalid params and reasons in err.params
|
11528
|
+
console.log('Failed validation', err.params)
|
11529
|
+
} else {
|
11530
|
+
// If we don't know what to do with the err, we should
|
11531
|
+
// probably re-raise and let our web framework and logger handle it
|
11532
|
+
console.log('Unknown Error: ', err)
|
11533
|
+
}
|
11534
|
+
}
|
11004
11535
|
- lang: Python
|
11005
11536
|
source: |
|
11006
11537
|
try:
|
@@ -11041,6 +11572,19 @@ paths:
|
|
11041
11572
|
# just return nil
|
11042
11573
|
puts "Resource Not Found"
|
11043
11574
|
end
|
11575
|
+
- lang: Java
|
11576
|
+
source: |
|
11577
|
+
try {
|
11578
|
+
final Subscription subscription = client.resumeSubscription(subscriptionId);
|
11579
|
+
System.out.println("Resumed Subscription: " + subscription.getUuid());
|
11580
|
+
} catch (ValidationException e) {
|
11581
|
+
// If the request was not valid, you may want to tell your user
|
11582
|
+
// why. You can find the invalid params and reasons in e.getError().getParams()
|
11583
|
+
System.out.println("Failed validation: " + e.getError().getMessage());
|
11584
|
+
} catch (ApiException e) {
|
11585
|
+
// Use ApiException to catch a generic error from the API
|
11586
|
+
System.out.println("Unexpected Recurly Error: " + e.getError().getMessage());
|
11587
|
+
}
|
11044
11588
|
- lang: PHP
|
11045
11589
|
source: |
|
11046
11590
|
try {
|
@@ -11555,6 +12099,13 @@ paths:
|
|
11555
12099
|
schema:
|
11556
12100
|
"$ref": "#/components/schemas/Error"
|
11557
12101
|
x-code-samples:
|
12102
|
+
- lang: Node.js
|
12103
|
+
source: |
|
12104
|
+
const invoices = client.listSubscriptionInvoices(subscriptionId, { limit: 200 })
|
12105
|
+
|
12106
|
+
for await (const invoice of invoices.each()) {
|
12107
|
+
console.log(invoice.number)
|
12108
|
+
}
|
11558
12109
|
- lang: Python
|
11559
12110
|
source: |
|
11560
12111
|
invoices = client.list_subscription_invoices(subscription_id).items()
|
@@ -11645,6 +12196,13 @@ paths:
|
|
11645
12196
|
schema:
|
11646
12197
|
"$ref": "#/components/schemas/Error"
|
11647
12198
|
x-code-samples:
|
12199
|
+
- lang: Node.js
|
12200
|
+
source: |
|
12201
|
+
const lineItems = client.listSubscriptionLineItems(subscriptionId, { limit: 200 })
|
12202
|
+
|
12203
|
+
for await (const lineItem of lineItems.each()) {
|
12204
|
+
console.log(lineItem.id)
|
12205
|
+
}
|
11648
12206
|
- lang: Python
|
11649
12207
|
source: |
|
11650
12208
|
line_items = client.list_subscription_line_items(subscription_id).items()
|
@@ -11725,6 +12283,13 @@ paths:
|
|
11725
12283
|
schema:
|
11726
12284
|
"$ref": "#/components/schemas/Error"
|
11727
12285
|
x-code-samples:
|
12286
|
+
- lang: Node.js
|
12287
|
+
source: |
|
12288
|
+
const redemptions = client.listSubscriptionCouponRedemptions(subscriptionId, { limit: 200 })
|
12289
|
+
|
12290
|
+
for await (const redemption of redemptions.each()) {
|
12291
|
+
console.log(redemption.id)
|
12292
|
+
}
|
11728
12293
|
- lang: Python
|
11729
12294
|
source: |
|
11730
12295
|
redemptions = client.list_subscription_coupon_redemptions(subscription_id).items()
|
@@ -12240,7 +12805,7 @@ paths:
|
|
12240
12805
|
AccountPurchase account = new AccountPurchase();
|
12241
12806
|
account.setCode(accountCode);
|
12242
12807
|
account.setFirstName("Benjamin");
|
12243
|
-
account.setLastName("
|
12808
|
+
account.setLastName("DuMonde");
|
12244
12809
|
|
12245
12810
|
BillingInfoCreate billing = new BillingInfoCreate();
|
12246
12811
|
billing.setTokenId(rjsTokenId);
|
@@ -12467,6 +13032,42 @@ paths:
|
|
12467
13032
|
# why. You can find the invalid params and reasons in e.recurly_error.params
|
12468
13033
|
puts "ValidationError: #{e.recurly_error.params}"
|
12469
13034
|
end
|
13035
|
+
- lang: Java
|
13036
|
+
source: |
|
13037
|
+
try {
|
13038
|
+
|
13039
|
+
AccountPurchase account = new AccountPurchase();
|
13040
|
+
account.setCode(accountCode);
|
13041
|
+
account.setFirstName("Joanna");
|
13042
|
+
account.setLastName("DuMonde");
|
13043
|
+
|
13044
|
+
BillingInfoCreate billing = new BillingInfoCreate();
|
13045
|
+
billing.setTokenId(rjsTokenId);
|
13046
|
+
account.setBillingInfo(billing);
|
13047
|
+
|
13048
|
+
List<SubscriptionPurchase> subscriptions = new ArrayList<SubscriptionPurchase>();
|
13049
|
+
SubscriptionPurchase sub = new SubscriptionPurchase();
|
13050
|
+
sub.setPlanCode(planCode);
|
13051
|
+
subscriptions.add(sub);
|
13052
|
+
|
13053
|
+
PurchaseCreate purchase = new PurchaseCreate();
|
13054
|
+
purchase.setCurrency("USD");
|
13055
|
+
purchase.setAccount(account);
|
13056
|
+
purchase.setSubscriptions(subscriptions);
|
13057
|
+
|
13058
|
+
InvoiceCollection collection = client.previewPurchase(purchase);
|
13059
|
+
System.out.println("Preview Charge Invoice:" + collection.getChargeInvoice());
|
13060
|
+
System.out.println("Preview Credit Invoices: " + collection.getCreditInvoices());
|
13061
|
+
|
13062
|
+
} catch (ValidationException e) {
|
13063
|
+
// If the request was not valid, you may want to tell your user
|
13064
|
+
// why. You can find the invalid params and reasons in e.getError().getParams()
|
13065
|
+
System.out.println("Failed validation: " + e.getError().getMessage());
|
13066
|
+
System.out.println("Params: " + e.getError().getParams());
|
13067
|
+
} catch (ApiException e) {
|
13068
|
+
// Use ApiException to catch a generic error from the API
|
13069
|
+
System.out.println("Unexpected Recurly Error: " + e.getError().getMessage());
|
13070
|
+
}
|
12470
13071
|
- lang: PHP
|
12471
13072
|
source: |
|
12472
13073
|
try {
|
@@ -12593,6 +13194,14 @@ components:
|
|
12593
13194
|
required: true
|
12594
13195
|
schema:
|
12595
13196
|
type: string
|
13197
|
+
shipping_method_id:
|
13198
|
+
name: shipping_method_id
|
13199
|
+
in: path
|
13200
|
+
description: Shipping Method ID or code. For ID no prefix is used e.g. `e28zov4fw0v2`.
|
13201
|
+
For code use prefix `code-`, e.g. `code-usps_2-day`.
|
13202
|
+
required: true
|
13203
|
+
schema:
|
13204
|
+
type: string
|
12596
13205
|
subscription_id:
|
12597
13206
|
name: subscription_id
|
12598
13207
|
in: path
|
@@ -13885,7 +14494,9 @@ components:
|
|
13885
14494
|
tier_type:
|
13886
14495
|
type: string
|
13887
14496
|
title: Tier type
|
13888
|
-
description:
|
14497
|
+
description: |
|
14498
|
+
The pricing model for the add-on. For more information,
|
14499
|
+
[click here](https://docs.recurly.com/docs/billing-models#section-quantity-based).
|
13889
14500
|
default: flat
|
13890
14501
|
enum:
|
13891
14502
|
- flat
|
@@ -13897,7 +14508,11 @@ components:
|
|
13897
14508
|
title: Tiers
|
13898
14509
|
items:
|
13899
14510
|
"$ref": "#/components/schemas/Tier"
|
13900
|
-
description:
|
14511
|
+
description: |
|
14512
|
+
If the tier_type is `flat`, then `tiers` must be absent. The `tiers` object
|
14513
|
+
must include one to many tiers with `ending_quantity` and `unit_amount` for
|
14514
|
+
the desired `currencies`. There must be one tier with an `ending_quantity` of
|
14515
|
+
999999999 which is the default if not provided.
|
13901
14516
|
required:
|
13902
14517
|
- code
|
13903
14518
|
- name
|
@@ -13987,8 +14602,10 @@ components:
|
|
13987
14602
|
items:
|
13988
14603
|
"$ref": "#/components/schemas/Tier"
|
13989
14604
|
description: |
|
13990
|
-
If
|
13991
|
-
|
14605
|
+
If the tier_type is `flat`, then `tiers` must be absent. The `tiers` object
|
14606
|
+
must include one to many tiers with `ending_quantity` and `unit_amount` for
|
14607
|
+
the desired `currencies`. There must be one tier with an `ending_quantity` of
|
14608
|
+
999999999 which is the default if not provided.
|
13992
14609
|
BillingInfo:
|
13993
14610
|
type: object
|
13994
14611
|
properties:
|
@@ -14161,15 +14778,27 @@ components:
|
|
14161
14778
|
name_on_account:
|
14162
14779
|
type: string
|
14163
14780
|
maxLength: 255
|
14164
|
-
description: The name associated with the bank account
|
14781
|
+
description: The name associated with the bank account (ACH, SEPA, Bacs
|
14782
|
+
only)
|
14165
14783
|
account_number:
|
14166
14784
|
type: string
|
14167
14785
|
maxLength: 255
|
14168
|
-
description: The bank account number. (ACH only)
|
14786
|
+
description: The bank account number. (ACH, Bacs only)
|
14169
14787
|
routing_number:
|
14170
14788
|
type: string
|
14171
14789
|
maxLength: 15
|
14172
14790
|
description: The bank's rounting number. (ACH only)
|
14791
|
+
sort_code:
|
14792
|
+
type: string
|
14793
|
+
maxLength: 15
|
14794
|
+
description: Bank identifier code for UK based banks. Required for Bacs
|
14795
|
+
based billing infos. (Bacs only)
|
14796
|
+
type:
|
14797
|
+
type: string
|
14798
|
+
enum:
|
14799
|
+
- bacs
|
14800
|
+
description: The payment method type for a non-credit card based billing
|
14801
|
+
info. The value of `bacs` is the only accepted value (Bacs only)
|
14173
14802
|
account_type:
|
14174
14803
|
type: string
|
14175
14804
|
enum:
|
@@ -16130,6 +16759,11 @@ components:
|
|
16130
16759
|
trial`.
|
16131
16760
|
default: 0
|
16132
16761
|
minimum: 0
|
16762
|
+
trial_requires_billing_info:
|
16763
|
+
type: boolean
|
16764
|
+
title: Trial Requires BillingInfo
|
16765
|
+
description: Allow free trial subscriptions to be created without billing
|
16766
|
+
info.
|
16133
16767
|
total_billing_cycles:
|
16134
16768
|
type: integer
|
16135
16769
|
title: Total billing cycles
|
@@ -16198,6 +16832,13 @@ components:
|
|
16198
16832
|
type: object
|
16199
16833
|
title: Hosted pages settings
|
16200
16834
|
"$ref": "#/components/schemas/PlanHostedPages"
|
16835
|
+
allow_any_item_on_subscriptions:
|
16836
|
+
type: boolean
|
16837
|
+
title: Allow any item on subscriptions
|
16838
|
+
description: |
|
16839
|
+
Used to determine whether items can be assigned as add-ons to individual subscriptions.
|
16840
|
+
If `true`, items can be assigned as add-ons to individual subscription add-ons.
|
16841
|
+
If `false`, only plan add-ons can be used.
|
16201
16842
|
created_at:
|
16202
16843
|
type: string
|
16203
16844
|
format: date-time
|
@@ -16272,6 +16913,13 @@ components:
|
|
16272
16913
|
trial`.
|
16273
16914
|
default: 0
|
16274
16915
|
minimum: 0
|
16916
|
+
trial_requires_billing_info:
|
16917
|
+
type: boolean
|
16918
|
+
title: Trial Requires BillingInfo
|
16919
|
+
description: Allow free trial subscriptions to be created without billing
|
16920
|
+
info. Should not be used if billing info is needed for initial invoice
|
16921
|
+
due to existing uninvoiced charges or setup fee.
|
16922
|
+
default: true
|
16275
16923
|
total_billing_cycles:
|
16276
16924
|
type: integer
|
16277
16925
|
title: Total billing cycles
|
@@ -16339,6 +16987,14 @@ components:
|
|
16339
16987
|
title: Add Ons
|
16340
16988
|
items:
|
16341
16989
|
"$ref": "#/components/schemas/AddOnCreate"
|
16990
|
+
allow_any_item_on_subscriptions:
|
16991
|
+
type: boolean
|
16992
|
+
title: Allow any item on subscriptions
|
16993
|
+
default: false
|
16994
|
+
description: |
|
16995
|
+
Used to determine whether items can be assigned as add-ons to individual subscriptions.
|
16996
|
+
If `true`, items can be assigned as add-ons to individual subscription add-ons.
|
16997
|
+
If `false`, only plan add-ons can be used.
|
16342
16998
|
required:
|
16343
16999
|
- code
|
16344
17000
|
- name
|
@@ -16436,6 +17092,13 @@ components:
|
|
16436
17092
|
trial`.
|
16437
17093
|
default: 0
|
16438
17094
|
minimum: 0
|
17095
|
+
trial_requires_billing_info:
|
17096
|
+
type: boolean
|
17097
|
+
title: Trial Requires BillingInfo
|
17098
|
+
description: Allow free trial subscriptions to be created without billing
|
17099
|
+
info. Should not be used if billing info is needed for initial invoice
|
17100
|
+
due to existing uninvoiced charges or setup fee.
|
17101
|
+
default: true
|
16439
17102
|
total_billing_cycles:
|
16440
17103
|
type: integer
|
16441
17104
|
title: Total billing cycles
|
@@ -16503,6 +17166,13 @@ components:
|
|
16503
17166
|
title: Add Ons
|
16504
17167
|
items:
|
16505
17168
|
"$ref": "#/components/schemas/AddOnCreate"
|
17169
|
+
allow_any_item_on_subscriptions:
|
17170
|
+
type: boolean
|
17171
|
+
title: Allow any item on subscriptions
|
17172
|
+
description: |
|
17173
|
+
Used to determine whether items can be assigned as add-ons to individual subscriptions.
|
17174
|
+
If `true`, items can be assigned as add-ons to individual subscription add-ons.
|
17175
|
+
If `false`, only plan add-ons can be used.
|
16506
17176
|
AddOnPricing:
|
16507
17177
|
type: object
|
16508
17178
|
properties:
|
@@ -16798,6 +17468,79 @@ components:
|
|
16798
17468
|
title: Name
|
16799
17469
|
description: The name of the shipping method displayed to customers.
|
16800
17470
|
maxLength: 100
|
17471
|
+
ShippingMethodCreate:
|
17472
|
+
type: object
|
17473
|
+
properties:
|
17474
|
+
code:
|
17475
|
+
type: string
|
17476
|
+
title: Code
|
17477
|
+
description: The internal name used identify the shipping method.
|
17478
|
+
pattern: "/^[a-z0-9_+-]+$/i"
|
17479
|
+
maxLength: 50
|
17480
|
+
name:
|
17481
|
+
type: string
|
17482
|
+
title: Name
|
17483
|
+
description: The name of the shipping method displayed to customers.
|
17484
|
+
maxLength: 100
|
17485
|
+
accounting_code:
|
17486
|
+
type: string
|
17487
|
+
title: Accounting Code
|
17488
|
+
description: Accounting code for shipping method.
|
17489
|
+
maxLength: 20
|
17490
|
+
tax_code:
|
17491
|
+
type: string
|
17492
|
+
title: Tax code
|
17493
|
+
description: |
|
17494
|
+
Used by Avalara, Vertex, and Recurly’s built-in tax feature. The tax
|
17495
|
+
code values are specific to each tax system. If you are using Recurly’s
|
17496
|
+
built-in taxes the values are:
|
17497
|
+
|
17498
|
+
- `FR` – Common Carrier FOB Destination
|
17499
|
+
- `FR022000` – Common Carrier FOB Origin
|
17500
|
+
- `FR020400` – Non Common Carrier FOB Destination
|
17501
|
+
- `FR020500` – Non Common Carrier FOB Origin
|
17502
|
+
- `FR010100` – Delivery by Company Vehicle Before Passage of Title
|
17503
|
+
- `FR010200` – Delivery by Company Vehicle After Passage of Title
|
17504
|
+
- `NT` – Non-Taxable
|
17505
|
+
maxLength: 50
|
17506
|
+
required:
|
17507
|
+
- code
|
17508
|
+
- name
|
17509
|
+
ShippingMethodUpdate:
|
17510
|
+
type: object
|
17511
|
+
properties:
|
17512
|
+
code:
|
17513
|
+
type: string
|
17514
|
+
title: Code
|
17515
|
+
description: The internal name used identify the shipping method.
|
17516
|
+
pattern: "/^[a-z0-9_+-]+$/i"
|
17517
|
+
maxLength: 50
|
17518
|
+
name:
|
17519
|
+
type: string
|
17520
|
+
title: Name
|
17521
|
+
description: The name of the shipping method displayed to customers.
|
17522
|
+
maxLength: 100
|
17523
|
+
accounting_code:
|
17524
|
+
type: string
|
17525
|
+
title: Accounting Code
|
17526
|
+
description: Accounting code for shipping method.
|
17527
|
+
maxLength: 20
|
17528
|
+
tax_code:
|
17529
|
+
type: string
|
17530
|
+
title: Tax code
|
17531
|
+
description: |
|
17532
|
+
Used by Avalara, Vertex, and Recurly’s built-in tax feature. The tax
|
17533
|
+
code values are specific to each tax system. If you are using Recurly’s
|
17534
|
+
built-in taxes the values are:
|
17535
|
+
|
17536
|
+
- `FR` – Common Carrier FOB Destination
|
17537
|
+
- `FR022000` – Common Carrier FOB Origin
|
17538
|
+
- `FR020400` – Non Common Carrier FOB Destination
|
17539
|
+
- `FR020500` – Non Common Carrier FOB Origin
|
17540
|
+
- `FR010100` – Delivery by Company Vehicle Before Passage of Title
|
17541
|
+
- `FR010200` – Delivery by Company Vehicle After Passage of Title
|
17542
|
+
- `NT` – Non-Taxable
|
17543
|
+
maxLength: 50
|
16801
17544
|
ShippingFeeCreate:
|
16802
17545
|
type: object
|
16803
17546
|
properties:
|
@@ -17223,8 +17966,11 @@ components:
|
|
17223
17966
|
items:
|
17224
17967
|
"$ref": "#/components/schemas/SubscriptionAddOnTier"
|
17225
17968
|
minItems: 1
|
17226
|
-
description:
|
17227
|
-
be absent.
|
17969
|
+
description: |
|
17970
|
+
If the plan add-on's `tier_type` is `flat`, then `tiers` must be absent. The `tiers` object
|
17971
|
+
must include one to many tiers with `ending_quantity` and `unit_amount`.
|
17972
|
+
There must be one tier with an `ending_quantity` of 999999999 which is the
|
17973
|
+
default if not provided.
|
17228
17974
|
revenue_schedule_type:
|
17229
17975
|
type: string
|
17230
17976
|
title: Revenue schedule type
|
@@ -17269,8 +18015,11 @@ components:
|
|
17269
18015
|
items:
|
17270
18016
|
"$ref": "#/components/schemas/SubscriptionAddOnTier"
|
17271
18017
|
minItems: 1
|
17272
|
-
description:
|
17273
|
-
be absent.
|
18018
|
+
description: |
|
18019
|
+
If the plan add-on's `tier_type` is `flat`, then `tiers` must be absent. The `tiers` object
|
18020
|
+
must include one to many tiers with `ending_quantity` and `unit_amount`.
|
18021
|
+
There must be one tier with an `ending_quantity` of 999999999 which is the
|
18022
|
+
default if not provided.
|
17274
18023
|
revenue_schedule_type:
|
17275
18024
|
type: string
|
17276
18025
|
title: Revenue schedule type
|
@@ -18173,6 +18922,10 @@ components:
|
|
18173
18922
|
type: string
|
18174
18923
|
format: date-time
|
18175
18924
|
title: Created at
|
18925
|
+
updated_at:
|
18926
|
+
type: string
|
18927
|
+
format: date-time
|
18928
|
+
title: Updated at
|
18176
18929
|
voided_at:
|
18177
18930
|
type: string
|
18178
18931
|
format: date-time
|