recurly 2.17.0 → 3.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (273) hide show
  1. checksums.yaml +4 -4
  2. data/.bumpversion.cfg +15 -0
  3. data/.changelog_config.yaml +11 -0
  4. data/.github/ISSUE_TEMPLATE/bug-report.md +30 -0
  5. data/.github/ISSUE_TEMPLATE/question-or-other.md +10 -0
  6. data/.github/workflows/ci.yml +29 -0
  7. data/.github/workflows/docs.yml +28 -0
  8. data/.gitignore +15 -0
  9. data/.rspec +2 -0
  10. data/.yardopts +2 -0
  11. data/CHANGELOG.md +496 -0
  12. data/CODE_OF_CONDUCT.md +130 -0
  13. data/CONTRIBUTING.md +106 -0
  14. data/GETTING_STARTED.md +319 -0
  15. data/Gemfile +4 -0
  16. data/LICENSE.txt +21 -0
  17. data/README.md +9 -153
  18. data/Rakefile +6 -0
  19. data/benchmark.rb +16 -0
  20. data/lib/data/ca-certificates.crt +3466 -0
  21. data/lib/recurly/client/operations.rb +3868 -0
  22. data/lib/recurly/client.rb +355 -0
  23. data/lib/recurly/connection_pool.rb +40 -0
  24. data/lib/recurly/errors/api_errors.rb +87 -0
  25. data/lib/recurly/errors/network_errors.rb +10 -0
  26. data/lib/recurly/errors.rb +68 -0
  27. data/lib/recurly/http.rb +50 -0
  28. data/lib/recurly/pager.rb +146 -0
  29. data/lib/recurly/request.rb +31 -0
  30. data/lib/recurly/requests/account_acquisition_cost.rb +18 -0
  31. data/lib/recurly/requests/account_acquisition_updatable.rb +26 -0
  32. data/lib/recurly/requests/account_create.rb +94 -0
  33. data/lib/recurly/requests/account_purchase.rb +94 -0
  34. data/lib/recurly/requests/account_update.rb +82 -0
  35. data/lib/recurly/requests/add_on_create.rb +94 -0
  36. data/lib/recurly/requests/add_on_pricing.rb +22 -0
  37. data/lib/recurly/requests/add_on_update.rb +74 -0
  38. data/lib/recurly/requests/address.rb +46 -0
  39. data/lib/recurly/requests/billing_info_create.rb +126 -0
  40. data/lib/recurly/requests/billing_info_verify.rb +14 -0
  41. data/lib/recurly/requests/coupon_bulk_create.rb +14 -0
  42. data/lib/recurly/requests/coupon_create.rb +102 -0
  43. data/lib/recurly/requests/coupon_pricing.rb +18 -0
  44. data/lib/recurly/requests/coupon_redemption_create.rb +22 -0
  45. data/lib/recurly/requests/coupon_update.rb +34 -0
  46. data/lib/recurly/requests/custom_field.rb +18 -0
  47. data/lib/recurly/requests/dunning_campaigns_bulk_update.rb +18 -0
  48. data/lib/recurly/requests/external_refund.rb +22 -0
  49. data/lib/recurly/requests/external_transaction.rb +26 -0
  50. data/lib/recurly/requests/invoice_address.rb +54 -0
  51. data/lib/recurly/requests/invoice_collect.rb +22 -0
  52. data/lib/recurly/requests/invoice_create.rb +42 -0
  53. data/lib/recurly/requests/invoice_refund.rb +34 -0
  54. data/lib/recurly/requests/invoice_updatable.rb +34 -0
  55. data/lib/recurly/requests/item_create.rb +58 -0
  56. data/lib/recurly/requests/item_update.rb +58 -0
  57. data/lib/recurly/requests/line_item_create.rb +86 -0
  58. data/lib/recurly/requests/line_item_refund.rb +26 -0
  59. data/lib/recurly/requests/measured_unit_create.rb +22 -0
  60. data/lib/recurly/requests/measured_unit_update.rb +22 -0
  61. data/lib/recurly/requests/plan_create.rb +114 -0
  62. data/lib/recurly/requests/plan_hosted_pages.rb +26 -0
  63. data/lib/recurly/requests/plan_pricing.rb +26 -0
  64. data/lib/recurly/requests/plan_ramp_interval.rb +18 -0
  65. data/lib/recurly/requests/plan_ramp_pricing.rb +18 -0
  66. data/lib/recurly/requests/plan_update.rb +102 -0
  67. data/lib/recurly/requests/pricing.rb +22 -0
  68. data/lib/recurly/requests/purchase_create.rb +78 -0
  69. data/lib/recurly/requests/shipping_address_create.rb +62 -0
  70. data/lib/recurly/requests/shipping_address_update.rb +66 -0
  71. data/lib/recurly/requests/shipping_fee_create.rb +22 -0
  72. data/lib/recurly/requests/shipping_method_create.rb +26 -0
  73. data/lib/recurly/requests/shipping_method_update.rb +26 -0
  74. data/lib/recurly/requests/shipping_purchase.rb +22 -0
  75. data/lib/recurly/requests/subscription_add_on_create.rb +38 -0
  76. data/lib/recurly/requests/subscription_add_on_tier.rb +18 -0
  77. data/lib/recurly/requests/subscription_add_on_update.rb +42 -0
  78. data/lib/recurly/requests/subscription_cancel.rb +14 -0
  79. data/lib/recurly/requests/subscription_change_billing_info_create.rb +14 -0
  80. data/lib/recurly/requests/subscription_change_create.rb +78 -0
  81. data/lib/recurly/requests/subscription_change_shipping_create.rb +22 -0
  82. data/lib/recurly/requests/subscription_create.rb +118 -0
  83. data/lib/recurly/requests/subscription_pause.rb +14 -0
  84. data/lib/recurly/requests/subscription_purchase.rb +74 -0
  85. data/lib/recurly/requests/subscription_ramp_interval.rb +18 -0
  86. data/lib/recurly/requests/subscription_shipping_create.rb +30 -0
  87. data/lib/recurly/requests/subscription_shipping_purchase.rb +22 -0
  88. data/lib/recurly/requests/subscription_shipping_update.rb +22 -0
  89. data/lib/recurly/requests/subscription_update.rb +66 -0
  90. data/lib/recurly/requests/tier.rb +18 -0
  91. data/lib/recurly/requests/usage_create.rb +26 -0
  92. data/lib/recurly/requests.rb +8 -0
  93. data/lib/recurly/resource.rb +23 -1082
  94. data/lib/recurly/resources/account.rb +134 -0
  95. data/lib/recurly/resources/account_acquisition.rb +46 -0
  96. data/lib/recurly/resources/account_acquisition_cost.rb +18 -0
  97. data/lib/recurly/resources/account_balance.rb +26 -0
  98. data/lib/recurly/resources/account_balance_amount.rb +26 -0
  99. data/lib/recurly/resources/account_mini.rb +50 -0
  100. data/lib/recurly/resources/account_note.rb +34 -0
  101. data/lib/recurly/resources/add_on.rb +114 -0
  102. data/lib/recurly/resources/add_on_mini.rb +54 -0
  103. data/lib/recurly/resources/add_on_pricing.rb +22 -0
  104. data/lib/recurly/resources/address.rb +46 -0
  105. data/lib/recurly/resources/billing_info.rb +74 -0
  106. data/lib/recurly/resources/billing_info_updated_by.rb +18 -0
  107. data/lib/recurly/resources/binary_file.rb +14 -0
  108. data/lib/recurly/resources/coupon.rb +138 -0
  109. data/lib/recurly/resources/coupon_discount.rb +26 -0
  110. data/lib/recurly/resources/coupon_discount_pricing.rb +18 -0
  111. data/lib/recurly/resources/coupon_discount_trial.rb +18 -0
  112. data/lib/recurly/resources/coupon_mini.rb +42 -0
  113. data/lib/recurly/resources/coupon_redemption.rb +54 -0
  114. data/lib/recurly/resources/coupon_redemption_mini.rb +34 -0
  115. data/lib/recurly/resources/credit_payment.rb +66 -0
  116. data/lib/recurly/resources/custom_field.rb +18 -0
  117. data/lib/recurly/resources/custom_field_definition.rb +50 -0
  118. data/lib/recurly/resources/dunning_campaign.rb +50 -0
  119. data/lib/recurly/resources/dunning_campaigns_bulk_update_response.rb +18 -0
  120. data/lib/recurly/resources/dunning_cycle.rb +58 -0
  121. data/lib/recurly/resources/dunning_interval.rb +18 -0
  122. data/lib/recurly/resources/error.rb +22 -0
  123. data/lib/recurly/resources/error_may_have_transaction.rb +26 -0
  124. data/lib/recurly/resources/export_dates.rb +18 -0
  125. data/lib/recurly/resources/export_file.rb +22 -0
  126. data/lib/recurly/resources/export_files.rb +18 -0
  127. data/lib/recurly/resources/fraud_info.rb +22 -0
  128. data/lib/recurly/resources/invoice.rb +154 -0
  129. data/lib/recurly/resources/invoice_address.rb +54 -0
  130. data/lib/recurly/resources/invoice_collection.rb +22 -0
  131. data/lib/recurly/resources/invoice_mini.rb +30 -0
  132. data/lib/recurly/resources/item.rb +82 -0
  133. data/lib/recurly/resources/item_mini.rb +34 -0
  134. data/lib/recurly/resources/line_item.rb +214 -0
  135. data/lib/recurly/resources/line_item_list.rb +26 -0
  136. data/lib/recurly/resources/measured_unit.rb +46 -0
  137. data/lib/recurly/resources/payment_method.rb +70 -0
  138. data/lib/recurly/resources/plan.rb +134 -0
  139. data/lib/recurly/resources/plan_hosted_pages.rb +26 -0
  140. data/lib/recurly/resources/plan_mini.rb +26 -0
  141. data/lib/recurly/resources/plan_pricing.rb +26 -0
  142. data/lib/recurly/resources/plan_ramp_interval.rb +18 -0
  143. data/lib/recurly/resources/plan_ramp_pricing.rb +18 -0
  144. data/lib/recurly/resources/pricing.rb +22 -0
  145. data/lib/recurly/resources/settings.rb +22 -0
  146. data/lib/recurly/resources/shipping_address.rb +82 -0
  147. data/lib/recurly/resources/shipping_method.rb +46 -0
  148. data/lib/recurly/resources/shipping_method_mini.rb +26 -0
  149. data/lib/recurly/resources/site.rb +54 -0
  150. data/lib/recurly/resources/subscription.rb +190 -0
  151. data/lib/recurly/resources/subscription_add_on.rb +66 -0
  152. data/lib/recurly/resources/subscription_add_on_tier.rb +18 -0
  153. data/lib/recurly/resources/subscription_change.rb +90 -0
  154. data/lib/recurly/resources/subscription_change_billing_info.rb +14 -0
  155. data/lib/recurly/resources/subscription_change_preview.rb +90 -0
  156. data/lib/recurly/resources/subscription_ramp_interval_response.rb +22 -0
  157. data/lib/recurly/resources/subscription_shipping.rb +26 -0
  158. data/lib/recurly/resources/tax_detail.rb +26 -0
  159. data/lib/recurly/resources/tax_info.rb +26 -0
  160. data/lib/recurly/resources/tier.rb +18 -0
  161. data/lib/recurly/resources/transaction.rb +162 -0
  162. data/lib/recurly/resources/transaction_error.rb +38 -0
  163. data/lib/recurly/resources/transaction_payment_gateway.rb +26 -0
  164. data/lib/recurly/resources/unique_coupon_code.rb +50 -0
  165. data/lib/recurly/resources/usage.rb +70 -0
  166. data/lib/recurly/resources/user.rb +42 -0
  167. data/lib/recurly/resources.rb +18 -0
  168. data/lib/recurly/schema/file_parser.rb +13 -0
  169. data/lib/recurly/schema/json_parser.rb +72 -0
  170. data/lib/recurly/schema/request_caster.rb +60 -0
  171. data/lib/recurly/schema/resource_caster.rb +46 -0
  172. data/lib/recurly/schema/schema_factory.rb +48 -0
  173. data/lib/recurly/schema/schema_validator.rb +144 -0
  174. data/lib/recurly/schema.rb +156 -0
  175. data/lib/recurly/version.rb +1 -15
  176. data/lib/recurly.rb +15 -137
  177. data/openapi/api.yaml +22373 -0
  178. data/recurly.gemspec +39 -0
  179. data/scripts/build +5 -0
  180. data/scripts/clean +6 -0
  181. data/scripts/format +12 -0
  182. data/scripts/prepare-release +50 -0
  183. data/scripts/release +17 -0
  184. data/scripts/test +15 -0
  185. metadata +216 -165
  186. data/lib/recurly/account.rb +0 -169
  187. data/lib/recurly/account_balance.rb +0 -21
  188. data/lib/recurly/add_on.rb +0 -30
  189. data/lib/recurly/address.rb +0 -25
  190. data/lib/recurly/adjustment.rb +0 -76
  191. data/lib/recurly/api/errors.rb +0 -206
  192. data/lib/recurly/api/net_http_adapter.rb +0 -111
  193. data/lib/recurly/api.rb +0 -101
  194. data/lib/recurly/billing_info.rb +0 -80
  195. data/lib/recurly/coupon.rb +0 -134
  196. data/lib/recurly/credit_payment.rb +0 -28
  197. data/lib/recurly/custom_field.rb +0 -15
  198. data/lib/recurly/delivery.rb +0 -19
  199. data/lib/recurly/error.rb +0 -13
  200. data/lib/recurly/gift_card.rb +0 -79
  201. data/lib/recurly/helper.rb +0 -51
  202. data/lib/recurly/invoice.rb +0 -268
  203. data/lib/recurly/invoice_collection.rb +0 -14
  204. data/lib/recurly/js.rb +0 -14
  205. data/lib/recurly/juris_detail.rb +0 -14
  206. data/lib/recurly/measured_unit.rb +0 -16
  207. data/lib/recurly/money.rb +0 -120
  208. data/lib/recurly/plan.rb +0 -40
  209. data/lib/recurly/purchase.rb +0 -219
  210. data/lib/recurly/redemption.rb +0 -46
  211. data/lib/recurly/resource/association.rb +0 -16
  212. data/lib/recurly/resource/errors.rb +0 -20
  213. data/lib/recurly/resource/pager.rb +0 -314
  214. data/lib/recurly/shipping_address.rb +0 -22
  215. data/lib/recurly/subscription/add_ons.rb +0 -77
  216. data/lib/recurly/subscription.rb +0 -325
  217. data/lib/recurly/subscription_add_on.rb +0 -50
  218. data/lib/recurly/tax_detail.rb +0 -14
  219. data/lib/recurly/tax_type.rb +0 -12
  220. data/lib/recurly/transaction/errors.rb +0 -107
  221. data/lib/recurly/transaction.rb +0 -116
  222. data/lib/recurly/usage.rb +0 -24
  223. data/lib/recurly/webhook/account_notification.rb +0 -10
  224. data/lib/recurly/webhook/billing_info_updated_notification.rb +0 -6
  225. data/lib/recurly/webhook/canceled_account_notification.rb +0 -6
  226. data/lib/recurly/webhook/canceled_subscription_notification.rb +0 -6
  227. data/lib/recurly/webhook/closed_credit_invoice_notification.rb +0 -6
  228. data/lib/recurly/webhook/closed_invoice_notification.rb +0 -6
  229. data/lib/recurly/webhook/credit_payment_notification.rb +0 -12
  230. data/lib/recurly/webhook/dunning_notification.rb +0 -14
  231. data/lib/recurly/webhook/expired_subscription_notification.rb +0 -6
  232. data/lib/recurly/webhook/failed_charge_invoice_notification.rb +0 -6
  233. data/lib/recurly/webhook/failed_payment_notification.rb +0 -6
  234. data/lib/recurly/webhook/gift_card_notification.rb +0 -8
  235. data/lib/recurly/webhook/invoice_notification.rb +0 -12
  236. data/lib/recurly/webhook/new_account_notification.rb +0 -6
  237. data/lib/recurly/webhook/new_charge_invoice_notification.rb +0 -6
  238. data/lib/recurly/webhook/new_credit_invoice_notification.rb +0 -6
  239. data/lib/recurly/webhook/new_credit_payment_notification.rb +0 -6
  240. data/lib/recurly/webhook/new_dunning_event_notification.rb +0 -6
  241. data/lib/recurly/webhook/new_invoice_notification.rb +0 -6
  242. data/lib/recurly/webhook/new_subscription_notification.rb +0 -6
  243. data/lib/recurly/webhook/new_usage_notification.rb +0 -8
  244. data/lib/recurly/webhook/notification.rb +0 -18
  245. data/lib/recurly/webhook/paid_charge_invoice_notification.rb +0 -6
  246. data/lib/recurly/webhook/past_due_charge_invoice_notification.rb +0 -6
  247. data/lib/recurly/webhook/past_due_invoice_notification.rb +0 -6
  248. data/lib/recurly/webhook/processing_charge_invoice_notification.rb +0 -6
  249. data/lib/recurly/webhook/processing_credit_invoice_notification.rb +0 -6
  250. data/lib/recurly/webhook/processing_invoice_notification.rb +0 -6
  251. data/lib/recurly/webhook/processing_payment_notification.rb +0 -6
  252. data/lib/recurly/webhook/purchased_gift_card_notification.rb +0 -7
  253. data/lib/recurly/webhook/reactivated_account_notification.rb +0 -6
  254. data/lib/recurly/webhook/redeemed_gift_card_notification.rb +0 -7
  255. data/lib/recurly/webhook/renewed_subscription_notification.rb +0 -6
  256. data/lib/recurly/webhook/reopened_charge_invoice_notification.rb +0 -6
  257. data/lib/recurly/webhook/reopened_credit_invoice_notification.rb +0 -6
  258. data/lib/recurly/webhook/scheduled_payment_notification.rb +0 -6
  259. data/lib/recurly/webhook/subscription_notification.rb +0 -12
  260. data/lib/recurly/webhook/successful_payment_notification.rb +0 -6
  261. data/lib/recurly/webhook/successful_refund_notification.rb +0 -6
  262. data/lib/recurly/webhook/transaction_authorized_notification.rb +0 -6
  263. data/lib/recurly/webhook/transaction_notification.rb +0 -12
  264. data/lib/recurly/webhook/updated_account_notification.rb +0 -6
  265. data/lib/recurly/webhook/updated_balance_gift_card_notification.rb +0 -7
  266. data/lib/recurly/webhook/updated_subscription_notification.rb +0 -6
  267. data/lib/recurly/webhook/void_payment_notification.rb +0 -6
  268. data/lib/recurly/webhook/voided_credit_invoice_notification.rb +0 -6
  269. data/lib/recurly/webhook/voided_credit_payment_notification.rb +0 -6
  270. data/lib/recurly/webhook.rb +0 -88
  271. data/lib/recurly/xml/nokogiri.rb +0 -58
  272. data/lib/recurly/xml/rexml.rb +0 -50
  273. data/lib/recurly/xml.rb +0 -120
@@ -0,0 +1,146 @@
1
+ module Recurly
2
+ class Pager
3
+ attr_accessor :client
4
+ attr_reader :data, :next
5
+
6
+ def initialize(client:, path:, options: {})
7
+ @client = client
8
+ @path = path
9
+ @options = map_array_params(options)
10
+ rewind!
11
+ end
12
+
13
+ # Performs a request with the pager `limit` set to 1 and only returns the first
14
+ # result in the response.
15
+ def first
16
+ # Modify the @next url to set the :limit to 1
17
+ original_next = @next
18
+ @next = @path
19
+ fetch_next!(@options.merge(limit: 1))
20
+ # Restore the @next url to the original
21
+ @next = original_next
22
+ @data.first
23
+ end
24
+
25
+ # Makes a HEAD request to the API to determine how many total records exist.
26
+ def count
27
+ resource = @client.send(:head, self.next, **@options)
28
+ resource.get_response.total_records
29
+ end
30
+
31
+ # Enumerates each "page" from the server.
32
+ # This method yields a given block with the array of items
33
+ # in the page `data` and the page number the pagination is on
34
+ # `page_num` which is 0-indexed.
35
+ #
36
+ # @example
37
+ # plans = client.list_plans()
38
+ # plans.each_page do |data|
39
+ # data.each do |plan|
40
+ # puts "Plan: #{plan.id}"
41
+ # end
42
+ # end
43
+ # @example
44
+ # plans = client.list_plans()
45
+ # plans.each_page.each_with_index do |data, page_num|
46
+ # puts "Page Number: #{page_num}"
47
+ # data.each do |plan|
48
+ # puts "Plan: #{plan.id}"
49
+ # end
50
+ # end
51
+ def each_page(&block)
52
+ if block_given?
53
+ page_enumerator.each(&block)
54
+ else
55
+ page_enumerator
56
+ end
57
+ end
58
+
59
+ # Enumerates each item on the server. Each item is yielded to the
60
+ # block presenting the effect of a continuous stream of items.
61
+ # In reality, the pager is fetching blocks of data (pages) under the hood.
62
+ # This method yields a given block with the next item to process.
63
+ #
64
+ # @example
65
+ # plans = client.list_plans()
66
+ # plans.each do |plan|
67
+ # puts "Plan: #{plan.id}"
68
+ # end
69
+ # @example
70
+ # plans = client.list_plans()
71
+ # plans.each.each_with_index do |plan, idx|
72
+ # puts "Plan #{idx}: #{plan.id}"
73
+ # end
74
+ def each(&block)
75
+ if block_given?
76
+ item_enumerator.each(&block)
77
+ else
78
+ item_enumerator
79
+ end
80
+ end
81
+
82
+ def has_more?
83
+ !!@has_more
84
+ end
85
+
86
+ def requires_client?
87
+ true
88
+ end
89
+
90
+ private
91
+
92
+ def item_enumerator
93
+ Enumerator.new do |yielder|
94
+ page_enumerator.each do |data|
95
+ data.each do |item|
96
+ yielder << item
97
+ end
98
+ end
99
+ end
100
+ end
101
+
102
+ def page_enumerator
103
+ Enumerator.new do |yielder|
104
+ loop do
105
+ # Pass in @options when requesting the first page (@data.empty?)
106
+ next_options = @data.empty? ? @options : {}
107
+ fetch_next!(next_options)
108
+ yielder << data
109
+ unless has_more?
110
+ rewind!
111
+ break
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ def fetch_next!(options)
118
+ path = extract_path(self.next)
119
+ page = @client.send(:get, path, **options)
120
+ @data = page.data.map { |d| JSONParser.from_json(d) }
121
+ @has_more = page.has_more
122
+ @next = page.next
123
+ end
124
+
125
+ def rewind!
126
+ @data = []
127
+ @next = @path
128
+ end
129
+
130
+ # Returns just the path and parameters so we can safely reuse the connection
131
+ def extract_path(uri_or_path)
132
+ uri = URI(uri_or_path)
133
+ uri.kind_of?(URI::HTTP) ? uri.request_uri : uri_or_path
134
+ end
135
+
136
+ # Converts array parameters to CSV strings to maintain consistency with
137
+ # how the server expects the request to be formatted while providing the
138
+ # developer with an array type to maintain developer happiness!
139
+ def map_array_params(params)
140
+ @options = params.map do |key, param|
141
+ new_param = param.is_a?(Array) ? param.join(",") : param
142
+ [key, new_param]
143
+ end.to_h
144
+ end
145
+ end
146
+ end
@@ -0,0 +1,31 @@
1
+ module Recurly
2
+ # This class represents a request to Recurly.
3
+ # It's used to validate requests data as well as
4
+ # cast and serialize the request data to JSON.
5
+ class Request
6
+ extend Schema::SchemaFactory
7
+ extend Schema::RequestCaster
8
+ extend Schema::ResourceCaster
9
+ include Schema::SchemaValidator
10
+
11
+ attr_reader :attributes
12
+
13
+ def ==(other_resource)
14
+ self.attributes == other_resource.attributes
15
+ end
16
+
17
+ def to_s
18
+ self.inspect
19
+ end
20
+
21
+ protected
22
+
23
+ def initialize(attributes = {})
24
+ @attributes = self.class.cast_request(attributes)
25
+ end
26
+
27
+ def schema
28
+ self.class.schema
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,18 @@
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 AccountAcquisitionCost < Request
8
+
9
+ # @!attribute amount
10
+ # @return [Float] The amount of the corresponding currency used to acquire the account.
11
+ define_attribute :amount, Float
12
+
13
+ # @!attribute currency
14
+ # @return [String] 3-letter ISO 4217 currency code.
15
+ define_attribute :currency, String
16
+ end
17
+ end
18
+ 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 AccountAcquisitionUpdatable < Request
8
+
9
+ # @!attribute campaign
10
+ # @return [String] An arbitrary identifier for the marketing campaign that led to the acquisition of this account.
11
+ define_attribute :campaign, String
12
+
13
+ # @!attribute channel
14
+ # @return [String] The channel through which the account was acquired.
15
+ define_attribute :channel, String
16
+
17
+ # @!attribute cost
18
+ # @return [AccountAcquisitionCost] Account balance
19
+ define_attribute :cost, :AccountAcquisitionCost
20
+
21
+ # @!attribute subchannel
22
+ # @return [String] An arbitrary subchannel string representing a distinction/subcategory within a broader channel.
23
+ define_attribute :subchannel, String
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,94 @@
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 AccountCreate < Request
8
+
9
+ # @!attribute acquisition
10
+ # @return [AccountAcquisitionUpdatable]
11
+ define_attribute :acquisition, :AccountAcquisitionUpdatable
12
+
13
+ # @!attribute address
14
+ # @return [Address]
15
+ define_attribute :address, :Address
16
+
17
+ # @!attribute bill_to
18
+ # @return [String] An enumerable describing the billing behavior of the account, specifically whether the account is self-paying or will rely on the parent account to pay.
19
+ define_attribute :bill_to, String
20
+
21
+ # @!attribute billing_info
22
+ # @return [BillingInfoCreate]
23
+ define_attribute :billing_info, :BillingInfoCreate
24
+
25
+ # @!attribute cc_emails
26
+ # @return [String] Additional email address that should receive account correspondence. These should be separated only by commas. These CC emails will receive all emails that the `email` field also receives.
27
+ define_attribute :cc_emails, String
28
+
29
+ # @!attribute code
30
+ # @return [String] The unique identifier of the account. This cannot be changed once the account is created.
31
+ define_attribute :code, String
32
+
33
+ # @!attribute company
34
+ # @return [String]
35
+ define_attribute :company, String
36
+
37
+ # @!attribute custom_fields
38
+ # @return [Array[CustomField]] The custom fields will only be altered when they are included in a request. Sending an empty array will not remove any existing values. To remove a field send the name with a null or empty value.
39
+ define_attribute :custom_fields, Array, { :item_type => :CustomField }
40
+
41
+ # @!attribute dunning_campaign_id
42
+ # @return [String] Unique ID to identify a dunning campaign. Used to specify if a non-default dunning campaign should be assigned to this account. For sites without multiple dunning campaigns enabled, the default dunning campaign will always be used.
43
+ define_attribute :dunning_campaign_id, String
44
+
45
+ # @!attribute email
46
+ # @return [String] The email address used for communicating with this customer. The customer will also use this email address to log into your hosted account management pages. This value does not need to be unique.
47
+ define_attribute :email, String
48
+
49
+ # @!attribute exemption_certificate
50
+ # @return [String] The tax exemption certificate number for the account. If the merchant has an integration for the Vertex tax provider, this optional value will be sent in any tax calculation requests for the account.
51
+ define_attribute :exemption_certificate, String
52
+
53
+ # @!attribute first_name
54
+ # @return [String]
55
+ define_attribute :first_name, String
56
+
57
+ # @!attribute last_name
58
+ # @return [String]
59
+ define_attribute :last_name, String
60
+
61
+ # @!attribute parent_account_code
62
+ # @return [String] The account code of the parent account to be associated with this account. Passing an empty value removes any existing parent association from this account. If both `parent_account_code` and `parent_account_id` are passed, the non-blank value in `parent_account_id` will be used. Only one level of parent child relationship is allowed. You cannot assign a parent account that itself has a parent account.
63
+ define_attribute :parent_account_code, String
64
+
65
+ # @!attribute parent_account_id
66
+ # @return [String] The UUID of the parent account to be associated with this account. Passing an empty value removes any existing parent association from this account. If both `parent_account_code` and `parent_account_id` are passed, the non-blank value in `parent_account_id` will be used. Only one level of parent child relationship is allowed. You cannot assign a parent account that itself has a parent account.
67
+ define_attribute :parent_account_id, String
68
+
69
+ # @!attribute preferred_locale
70
+ # @return [String] Used to determine the language and locale of emails sent on behalf of the merchant to the customer. The list of locales is restricted to those the merchant has enabled on the site.
71
+ define_attribute :preferred_locale, String
72
+
73
+ # @!attribute shipping_addresses
74
+ # @return [Array[ShippingAddressCreate]]
75
+ define_attribute :shipping_addresses, Array, { :item_type => :ShippingAddressCreate }
76
+
77
+ # @!attribute tax_exempt
78
+ # @return [Boolean] The tax status of the account. `true` exempts tax on the account, `false` applies tax on the account.
79
+ define_attribute :tax_exempt, :Boolean
80
+
81
+ # @!attribute transaction_type
82
+ # @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.
83
+ define_attribute :transaction_type, String
84
+
85
+ # @!attribute username
86
+ # @return [String] A secondary value for the account.
87
+ define_attribute :username, String
88
+
89
+ # @!attribute vat_number
90
+ # @return [String] The VAT number of the account (to avoid having the VAT applied). This is only used for manually collected invoices.
91
+ define_attribute :vat_number, String
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,94 @@
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 AccountPurchase < Request
8
+
9
+ # @!attribute acquisition
10
+ # @return [AccountAcquisitionUpdatable]
11
+ define_attribute :acquisition, :AccountAcquisitionUpdatable
12
+
13
+ # @!attribute address
14
+ # @return [Address]
15
+ define_attribute :address, :Address
16
+
17
+ # @!attribute bill_to
18
+ # @return [String] An enumerable describing the billing behavior of the account, specifically whether the account is self-paying or will rely on the parent account to pay.
19
+ define_attribute :bill_to, String
20
+
21
+ # @!attribute billing_info
22
+ # @return [BillingInfoCreate]
23
+ define_attribute :billing_info, :BillingInfoCreate
24
+
25
+ # @!attribute cc_emails
26
+ # @return [String] Additional email address that should receive account correspondence. These should be separated only by commas. These CC emails will receive all emails that the `email` field also receives.
27
+ define_attribute :cc_emails, String
28
+
29
+ # @!attribute code
30
+ # @return [String] The unique identifier of the account. This cannot be changed once the account is created.
31
+ define_attribute :code, String
32
+
33
+ # @!attribute company
34
+ # @return [String]
35
+ define_attribute :company, String
36
+
37
+ # @!attribute custom_fields
38
+ # @return [Array[CustomField]] The custom fields will only be altered when they are included in a request. Sending an empty array will not remove any existing values. To remove a field send the name with a null or empty value.
39
+ define_attribute :custom_fields, Array, { :item_type => :CustomField }
40
+
41
+ # @!attribute dunning_campaign_id
42
+ # @return [String] Unique ID to identify a dunning campaign. Used to specify if a non-default dunning campaign should be assigned to this account. For sites without multiple dunning campaigns enabled, the default dunning campaign will always be used.
43
+ define_attribute :dunning_campaign_id, String
44
+
45
+ # @!attribute email
46
+ # @return [String] The email address used for communicating with this customer. The customer will also use this email address to log into your hosted account management pages. This value does not need to be unique.
47
+ define_attribute :email, String
48
+
49
+ # @!attribute exemption_certificate
50
+ # @return [String] The tax exemption certificate number for the account. If the merchant has an integration for the Vertex tax provider, this optional value will be sent in any tax calculation requests for the account.
51
+ define_attribute :exemption_certificate, String
52
+
53
+ # @!attribute first_name
54
+ # @return [String]
55
+ define_attribute :first_name, String
56
+
57
+ # @!attribute id
58
+ # @return [String] Optional, but if present allows an existing account to be used and updated as part of the purchase.
59
+ define_attribute :id, String
60
+
61
+ # @!attribute last_name
62
+ # @return [String]
63
+ define_attribute :last_name, String
64
+
65
+ # @!attribute parent_account_code
66
+ # @return [String] The account code of the parent account to be associated with this account. Passing an empty value removes any existing parent association from this account. If both `parent_account_code` and `parent_account_id` are passed, the non-blank value in `parent_account_id` will be used. Only one level of parent child relationship is allowed. You cannot assign a parent account that itself has a parent account.
67
+ define_attribute :parent_account_code, String
68
+
69
+ # @!attribute parent_account_id
70
+ # @return [String] The UUID of the parent account to be associated with this account. Passing an empty value removes any existing parent association from this account. If both `parent_account_code` and `parent_account_id` are passed, the non-blank value in `parent_account_id` will be used. Only one level of parent child relationship is allowed. You cannot assign a parent account that itself has a parent account.
71
+ define_attribute :parent_account_id, String
72
+
73
+ # @!attribute preferred_locale
74
+ # @return [String] Used to determine the language and locale of emails sent on behalf of the merchant to the customer. The list of locales is restricted to those the merchant has enabled on the site.
75
+ define_attribute :preferred_locale, String
76
+
77
+ # @!attribute tax_exempt
78
+ # @return [Boolean] The tax status of the account. `true` exempts tax on the account, `false` applies tax on the account.
79
+ define_attribute :tax_exempt, :Boolean
80
+
81
+ # @!attribute transaction_type
82
+ # @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.
83
+ define_attribute :transaction_type, String
84
+
85
+ # @!attribute username
86
+ # @return [String] A secondary value for the account.
87
+ define_attribute :username, String
88
+
89
+ # @!attribute vat_number
90
+ # @return [String] The VAT number of the account (to avoid having the VAT applied). This is only used for manually collected invoices.
91
+ define_attribute :vat_number, String
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,82 @@
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 AccountUpdate < Request
8
+
9
+ # @!attribute address
10
+ # @return [Address]
11
+ define_attribute :address, :Address
12
+
13
+ # @!attribute bill_to
14
+ # @return [String] An enumerable describing the billing behavior of the account, specifically whether the account is self-paying or will rely on the parent account to pay.
15
+ define_attribute :bill_to, String
16
+
17
+ # @!attribute billing_info
18
+ # @return [BillingInfoCreate]
19
+ define_attribute :billing_info, :BillingInfoCreate
20
+
21
+ # @!attribute cc_emails
22
+ # @return [String] Additional email address that should receive account correspondence. These should be separated only by commas. These CC emails will receive all emails that the `email` field also receives.
23
+ define_attribute :cc_emails, String
24
+
25
+ # @!attribute company
26
+ # @return [String]
27
+ define_attribute :company, String
28
+
29
+ # @!attribute custom_fields
30
+ # @return [Array[CustomField]] The custom fields will only be altered when they are included in a request. Sending an empty array will not remove any existing values. To remove a field send the name with a null or empty value.
31
+ define_attribute :custom_fields, Array, { :item_type => :CustomField }
32
+
33
+ # @!attribute dunning_campaign_id
34
+ # @return [String] Unique ID to identify a dunning campaign. Used to specify if a non-default dunning campaign should be assigned to this account. For sites without multiple dunning campaigns enabled, the default dunning campaign will always be used.
35
+ define_attribute :dunning_campaign_id, String
36
+
37
+ # @!attribute email
38
+ # @return [String] The email address used for communicating with this customer. The customer will also use this email address to log into your hosted account management pages. This value does not need to be unique.
39
+ define_attribute :email, String
40
+
41
+ # @!attribute exemption_certificate
42
+ # @return [String] The tax exemption certificate number for the account. If the merchant has an integration for the Vertex tax provider, this optional value will be sent in any tax calculation requests for the account.
43
+ define_attribute :exemption_certificate, String
44
+
45
+ # @!attribute first_name
46
+ # @return [String]
47
+ define_attribute :first_name, String
48
+
49
+ # @!attribute last_name
50
+ # @return [String]
51
+ define_attribute :last_name, String
52
+
53
+ # @!attribute parent_account_code
54
+ # @return [String] The account code of the parent account to be associated with this account. Passing an empty value removes any existing parent association from this account. If both `parent_account_code` and `parent_account_id` are passed, the non-blank value in `parent_account_id` will be used. Only one level of parent child relationship is allowed. You cannot assign a parent account that itself has a parent account.
55
+ define_attribute :parent_account_code, String
56
+
57
+ # @!attribute parent_account_id
58
+ # @return [String] The UUID of the parent account to be associated with this account. Passing an empty value removes any existing parent association from this account. If both `parent_account_code` and `parent_account_id` are passed, the non-blank value in `parent_account_id` will be used. Only one level of parent child relationship is allowed. You cannot assign a parent account that itself has a parent account.
59
+ define_attribute :parent_account_id, String
60
+
61
+ # @!attribute preferred_locale
62
+ # @return [String] Used to determine the language and locale of emails sent on behalf of the merchant to the customer. The list of locales is restricted to those the merchant has enabled on the site.
63
+ define_attribute :preferred_locale, String
64
+
65
+ # @!attribute tax_exempt
66
+ # @return [Boolean] The tax status of the account. `true` exempts tax on the account, `false` applies tax on the account.
67
+ define_attribute :tax_exempt, :Boolean
68
+
69
+ # @!attribute transaction_type
70
+ # @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.
71
+ define_attribute :transaction_type, String
72
+
73
+ # @!attribute username
74
+ # @return [String] A secondary value for the account.
75
+ define_attribute :username, String
76
+
77
+ # @!attribute vat_number
78
+ # @return [String] The VAT number of the account (to avoid having the VAT applied). This is only used for manually collected invoices.
79
+ define_attribute :vat_number, String
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,94 @@
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 AddOnCreate < Request
8
+
9
+ # @!attribute accounting_code
10
+ # @return [String] Accounting code for invoice line items for this add-on. If no value is provided, it defaults to add-on's code. If `item_code`/`item_id` is part of the request then `accounting_code` must be absent.
11
+ define_attribute :accounting_code, String
12
+
13
+ # @!attribute add_on_type
14
+ # @return [String] Whether the add-on type is fixed, or usage-based.
15
+ define_attribute :add_on_type, String
16
+
17
+ # @!attribute avalara_service_type
18
+ # @return [Integer] Used by Avalara for Communications taxes. The transaction type in combination with the service type describe how the add-on is taxed. Refer to [the documentation](https://help.avalara.com/AvaTax_for_Communications/Tax_Calculation/AvaTax_for_Communications_Tax_Engine/Mapping_Resources/TM_00115_AFC_Modules_Corresponding_Transaction_Types) for more available t/s types. If an `Item` is associated to the `AddOn`, then the `avalara_service_type` must be absent.
19
+ define_attribute :avalara_service_type, Integer
20
+
21
+ # @!attribute avalara_transaction_type
22
+ # @return [Integer] Used by Avalara for Communications taxes. The transaction type in combination with the service type describe how the add-on is taxed. Refer to [the documentation](https://help.avalara.com/AvaTax_for_Communications/Tax_Calculation/AvaTax_for_Communications_Tax_Engine/Mapping_Resources/TM_00115_AFC_Modules_Corresponding_Transaction_Types) for more available t/s types. If an `Item` is associated to the `AddOn`, then the `avalara_transaction_type` must be absent.
23
+ define_attribute :avalara_transaction_type, Integer
24
+
25
+ # @!attribute code
26
+ # @return [String] The unique identifier for the add-on within its plan. If `item_code`/`item_id` is part of the request then `code` must be absent. If `item_code`/`item_id` is not present `code` is required.
27
+ define_attribute :code, String
28
+
29
+ # @!attribute currencies
30
+ # @return [Array[AddOnPricing]] * If `item_code`/`item_id` is part of the request and the item has a default currency then `currencies` is optional. If the item does not have a default currency, then `currencies` is required. If `item_code`/`item_id` is not present `currencies` is required. * If the add-on's `tier_type` is `tiered`, `volume`, or `stairstep`, then `currencies` must be absent. * Must be absent if `add_on_type` is `usage` and `usage_type` is `percentage`.
31
+ define_attribute :currencies, Array, { :item_type => :AddOnPricing }
32
+
33
+ # @!attribute default_quantity
34
+ # @return [Integer] Default quantity for the hosted pages.
35
+ define_attribute :default_quantity, Integer
36
+
37
+ # @!attribute display_quantity
38
+ # @return [Boolean] Determines if the quantity field is displayed on the hosted pages for the add-on.
39
+ define_attribute :display_quantity, :Boolean
40
+
41
+ # @!attribute item_code
42
+ # @return [String] Unique code to identify an item. Avaliable when the `Credit Invoices` feature is enabled. If `item_id` and `item_code` are both present, `item_id` will be used.
43
+ define_attribute :item_code, String
44
+
45
+ # @!attribute item_id
46
+ # @return [String] System-generated unique identifier for an item. Available when the `Credit Invoices` feature is enabled. If `item_id` and `item_code` are both present, `item_id` will be used.
47
+ define_attribute :item_id, String
48
+
49
+ # @!attribute measured_unit_id
50
+ # @return [String] System-generated unique identifier for a measured unit to be associated with the add-on. Either `measured_unit_id` or `measured_unit_name` are required when `add_on_type` is `usage`. If `measured_unit_id` and `measured_unit_name` are both present, `measured_unit_id` will be used.
51
+ define_attribute :measured_unit_id, String
52
+
53
+ # @!attribute measured_unit_name
54
+ # @return [String] Name of a measured unit to be associated with the add-on. Either `measured_unit_id` or `measured_unit_name` are required when `add_on_type` is `usage`. If `measured_unit_id` and `measured_unit_name` are both present, `measured_unit_id` will be used.
55
+ define_attribute :measured_unit_name, String
56
+
57
+ # @!attribute name
58
+ # @return [String] Describes your add-on and will appear in subscribers' invoices. If `item_code`/`item_id` is part of the request then `name` must be absent. If `item_code`/`item_id` is not present `name` is required.
59
+ define_attribute :name, String
60
+
61
+ # @!attribute optional
62
+ # @return [Boolean] Whether the add-on is optional for the customer to include in their purchase on the hosted payment page. If false, the add-on will be included when a subscription is created through the Recurly UI. However, the add-on will not be included when a subscription is created through the API.
63
+ define_attribute :optional, :Boolean
64
+
65
+ # @!attribute plan_id
66
+ # @return [String] Plan ID
67
+ define_attribute :plan_id, String
68
+
69
+ # @!attribute revenue_schedule_type
70
+ # @return [String] When this add-on is invoiced, the line item will use this revenue schedule. If `item_code`/`item_id` is part of the request then `revenue_schedule_type` must be absent in the request as the value will be set from the item.
71
+ define_attribute :revenue_schedule_type, String
72
+
73
+ # @!attribute tax_code
74
+ # @return [String] Optional field used by Avalara, Vertex, and Recurly's EU VAT tax feature to determine taxation rules. If you have your own AvaTax or Vertex account configured, use their tax codes to assign specific tax rules. If you are using Recurly's EU VAT feature, you can use values of `unknown`, `physical`, or `digital`. If `item_code`/`item_id` is part of the request then `tax_code` must be absent.
75
+ define_attribute :tax_code, String
76
+
77
+ # @!attribute tier_type
78
+ # @return [String] The pricing model for the add-on. For more information, [click here](https://docs.recurly.com/docs/billing-models#section-quantity-based). See our [Guide](https://recurly.com/developers/guides/item-addon-guide.html) for an overview of how to configure quantity-based pricing models.
79
+ define_attribute :tier_type, String
80
+
81
+ # @!attribute tiers
82
+ # @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.
83
+ define_attribute :tiers, Array, { :item_type => :Tier }
84
+
85
+ # @!attribute usage_percentage
86
+ # @return [Float] The percentage taken of the monetary amount of usage tracked. This can be up to 4 decimal places. A value between 0.0 and 100.0. Required if `add_on_type` is usage and `usage_type` is percentage. Must be omitted otherwise. `usage_percentage` does not support tiers.
87
+ define_attribute :usage_percentage, Float
88
+
89
+ # @!attribute usage_type
90
+ # @return [String] Type of usage, required if `add_on_type` is `usage`. See our [Guide](https://recurly.com/developers/guides/usage-based-billing-guide.html) for an overview of how to configure usage add-ons.
91
+ define_attribute :usage_type, String
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,22 @@
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 AddOnPricing < Request
8
+
9
+ # @!attribute currency
10
+ # @return [String] 3-letter ISO 4217 currency code.
11
+ define_attribute :currency, String
12
+
13
+ # @!attribute tax_inclusive
14
+ # @return [Boolean] This field is deprecated. Please do not use it.
15
+ define_attribute :tax_inclusive, :Boolean
16
+
17
+ # @!attribute unit_amount
18
+ # @return [Float] Unit price
19
+ define_attribute :unit_amount, Float
20
+ end
21
+ end
22
+ end