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,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 Resources
7
+ class SubscriptionRampIntervalResponse < Resource
8
+
9
+ # @!attribute remaining_billing_cycles
10
+ # @return [Integer] Represents how many billing cycles are left in a ramp interval.
11
+ define_attribute :remaining_billing_cycles, Integer
12
+
13
+ # @!attribute starting_billing_cycle
14
+ # @return [Integer] Represents the billing cycle where a ramp interval starts.
15
+ define_attribute :starting_billing_cycle, Integer
16
+
17
+ # @!attribute unit_amount
18
+ # @return [Integer] Represents the price for the ramp interval.
19
+ define_attribute :unit_amount, Integer
20
+ end
21
+ end
22
+ 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 Resources
7
+ class SubscriptionShipping < Resource
8
+
9
+ # @!attribute address
10
+ # @return [ShippingAddress]
11
+ define_attribute :address, :ShippingAddress
12
+
13
+ # @!attribute amount
14
+ # @return [Float] Subscription's shipping cost
15
+ define_attribute :amount, Float
16
+
17
+ # @!attribute method
18
+ # @return [ShippingMethodMini]
19
+ define_attribute :method, :ShippingMethodMini
20
+
21
+ # @!attribute object
22
+ # @return [String] Object type
23
+ define_attribute :object, 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 Resources
7
+ class TaxDetail < Resource
8
+
9
+ # @!attribute rate
10
+ # @return [Float] Provides the tax rate for the region.
11
+ define_attribute :rate, Float
12
+
13
+ # @!attribute region
14
+ # @return [String] Provides the tax region applied on an invoice. For Canadian Sales Tax, this will be either the 2 letter province code or country code.
15
+ define_attribute :region, String
16
+
17
+ # @!attribute tax
18
+ # @return [Float] The total tax applied for this tax type.
19
+ define_attribute :tax, Float
20
+
21
+ # @!attribute type
22
+ # @return [String] Provides the tax type for the region. For Canadian Sales Tax, this will be GST, HST, QST or PST.
23
+ define_attribute :type, 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 Resources
7
+ class TaxInfo < Resource
8
+
9
+ # @!attribute rate
10
+ # @return [Float] Rate
11
+ define_attribute :rate, Float
12
+
13
+ # @!attribute region
14
+ # @return [String] Provides the tax region applied on an invoice. For U.S. Sales Tax, this will be the 2 letter state code. For EU VAT this will be the 2 letter country code. For all country level tax types, this will display the regional tax, like VAT, GST, or PST.
15
+ define_attribute :region, String
16
+
17
+ # @!attribute tax_details
18
+ # @return [Array[TaxDetail]] Provides additional tax details for Canadian Sales Tax when there is tax applied at both the country and province levels. This will only be populated for the Invoice response when fetching a single invoice and not for the InvoiceList or LineItem.
19
+ define_attribute :tax_details, Array, { :item_type => :TaxDetail }
20
+
21
+ # @!attribute type
22
+ # @return [String] Provides the tax type as "vat" for EU VAT, "usst" for U.S. Sales Tax, or the 2 letter country code for country level tax types like Canada, Australia, New Zealand, Israel, and all non-EU European countries.
23
+ define_attribute :type, String
24
+ end
25
+ end
26
+ 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 Resources
7
+ class Tier < Resource
8
+
9
+ # @!attribute currencies
10
+ # @return [Array[Pricing]] Tier pricing
11
+ define_attribute :currencies, Array, { :item_type => :Pricing }
12
+
13
+ # @!attribute ending_quantity
14
+ # @return [Integer] Ending quantity
15
+ define_attribute :ending_quantity, Integer
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,162 @@
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 Resources
7
+ class Transaction < Resource
8
+
9
+ # @!attribute account
10
+ # @return [AccountMini] Account mini details
11
+ define_attribute :account, :AccountMini
12
+
13
+ # @!attribute amount
14
+ # @return [Float] Total transaction amount sent to the payment gateway.
15
+ define_attribute :amount, Float
16
+
17
+ # @!attribute avs_check
18
+ # @return [String] When processed, result from checking the overall AVS on the transaction.
19
+ define_attribute :avs_check, String
20
+
21
+ # @!attribute backup_payment_method_used
22
+ # @return [Boolean] Indicates if the transaction was completed using a backup payment
23
+ define_attribute :backup_payment_method_used, :Boolean
24
+
25
+ # @!attribute billing_address
26
+ # @return [Address]
27
+ define_attribute :billing_address, :Address
28
+
29
+ # @!attribute collected_at
30
+ # @return [DateTime] Collected at, or if not collected yet, the time the transaction was created.
31
+ define_attribute :collected_at, DateTime
32
+
33
+ # @!attribute collection_method
34
+ # @return [String] The method by which the payment was collected.
35
+ define_attribute :collection_method, String
36
+
37
+ # @!attribute created_at
38
+ # @return [DateTime] Created at
39
+ define_attribute :created_at, DateTime
40
+
41
+ # @!attribute currency
42
+ # @return [String] 3-letter ISO 4217 currency code.
43
+ define_attribute :currency, String
44
+
45
+ # @!attribute customer_message
46
+ # @return [String] For declined (`success=false`) transactions, the message displayed to the customer.
47
+ define_attribute :customer_message, String
48
+
49
+ # @!attribute customer_message_locale
50
+ # @return [String] Language code for the message
51
+ define_attribute :customer_message_locale, String
52
+
53
+ # @!attribute cvv_check
54
+ # @return [String] When processed, result from checking the CVV/CVC value on the transaction.
55
+ define_attribute :cvv_check, String
56
+
57
+ # @!attribute gateway_approval_code
58
+ # @return [String] Transaction approval code from the payment gateway.
59
+ define_attribute :gateway_approval_code, String
60
+
61
+ # @!attribute gateway_message
62
+ # @return [String] Transaction message from the payment gateway.
63
+ define_attribute :gateway_message, String
64
+
65
+ # @!attribute gateway_reference
66
+ # @return [String] Transaction reference number from the payment gateway.
67
+ define_attribute :gateway_reference, String
68
+
69
+ # @!attribute gateway_response_code
70
+ # @return [String] For declined transactions (`success=false`), this field lists the gateway error code.
71
+ define_attribute :gateway_response_code, String
72
+
73
+ # @!attribute gateway_response_time
74
+ # @return [Float] Time, in seconds, for gateway to process the transaction.
75
+ define_attribute :gateway_response_time, Float
76
+
77
+ # @!attribute gateway_response_values
78
+ # @return [Hash] The values in this field will vary from gateway to gateway.
79
+ define_attribute :gateway_response_values, Hash
80
+
81
+ # @!attribute id
82
+ # @return [String] Transaction ID
83
+ define_attribute :id, String
84
+
85
+ # @!attribute invoice
86
+ # @return [InvoiceMini] Invoice mini details
87
+ define_attribute :invoice, :InvoiceMini
88
+
89
+ # @!attribute ip_address_country
90
+ # @return [String] Origin IP address country, 2-letter ISO 3166-1 alpha-2 code, if known by Recurly.
91
+ define_attribute :ip_address_country, String
92
+
93
+ # @!attribute ip_address_v4
94
+ # @return [String] IP address provided when the billing information was collected: - When the customer enters billing information into the Recurly.js or Hosted Payment Pages, Recurly records the IP address. - When the merchant enters billing information using the API, the merchant may provide an IP address. - When the merchant enters billing information using the UI, no IP address is recorded.
95
+ define_attribute :ip_address_v4, String
96
+
97
+ # @!attribute object
98
+ # @return [String] Object type
99
+ define_attribute :object, String
100
+
101
+ # @!attribute origin
102
+ # @return [String] Describes how the transaction was triggered.
103
+ define_attribute :origin, String
104
+
105
+ # @!attribute original_transaction_id
106
+ # @return [String] If this transaction is a refund (`type=refund`), this will be the ID of the original transaction on the invoice being refunded.
107
+ define_attribute :original_transaction_id, String
108
+
109
+ # @!attribute payment_gateway
110
+ # @return [TransactionPaymentGateway]
111
+ define_attribute :payment_gateway, :TransactionPaymentGateway
112
+
113
+ # @!attribute payment_method
114
+ # @return [PaymentMethod]
115
+ define_attribute :payment_method, :PaymentMethod
116
+
117
+ # @!attribute refunded
118
+ # @return [Boolean] Indicates if part or all of this transaction was refunded.
119
+ define_attribute :refunded, :Boolean
120
+
121
+ # @!attribute status
122
+ # @return [String] The current transaction status. Note that the status may change, e.g. a `pending` transaction may become `declined` or `success` may later become `void`.
123
+ define_attribute :status, String
124
+
125
+ # @!attribute status_code
126
+ # @return [String] Status code
127
+ define_attribute :status_code, String
128
+
129
+ # @!attribute status_message
130
+ # @return [String] For declined (`success=false`) transactions, the message displayed to the merchant.
131
+ define_attribute :status_message, String
132
+
133
+ # @!attribute subscription_ids
134
+ # @return [Array[String]] If the transaction is charging or refunding for one or more subscriptions, these are their IDs.
135
+ define_attribute :subscription_ids, Array, { :item_type => String }
136
+
137
+ # @!attribute success
138
+ # @return [Boolean] Did this transaction complete successfully?
139
+ define_attribute :success, :Boolean
140
+
141
+ # @!attribute type
142
+ # @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.
143
+ define_attribute :type, String
144
+
145
+ # @!attribute updated_at
146
+ # @return [DateTime] Updated at
147
+ define_attribute :updated_at, DateTime
148
+
149
+ # @!attribute uuid
150
+ # @return [String] The UUID is useful for matching data with the CSV exports and building URLs into Recurly's UI.
151
+ define_attribute :uuid, String
152
+
153
+ # @!attribute voided_at
154
+ # @return [DateTime] Voided at
155
+ define_attribute :voided_at, DateTime
156
+
157
+ # @!attribute voided_by_invoice
158
+ # @return [InvoiceMini] Invoice mini details
159
+ define_attribute :voided_by_invoice, :InvoiceMini
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,38 @@
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 Resources
7
+ class TransactionError < Resource
8
+
9
+ # @!attribute category
10
+ # @return [String] Category
11
+ define_attribute :category, String
12
+
13
+ # @!attribute code
14
+ # @return [String] Code
15
+ define_attribute :code, String
16
+
17
+ # @!attribute merchant_advice
18
+ # @return [String] Merchant message
19
+ define_attribute :merchant_advice, String
20
+
21
+ # @!attribute message
22
+ # @return [String] Customer message
23
+ define_attribute :message, String
24
+
25
+ # @!attribute object
26
+ # @return [String] Object type
27
+ define_attribute :object, String
28
+
29
+ # @!attribute three_d_secure_action_token_id
30
+ # @return [String] Returned when 3-D Secure authentication is required for a transaction. Pass this value to Recurly.js so it can continue the challenge flow.
31
+ define_attribute :three_d_secure_action_token_id, String
32
+
33
+ # @!attribute transaction_id
34
+ # @return [String] Transaction ID
35
+ define_attribute :transaction_id, String
36
+ end
37
+ end
38
+ 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 Resources
7
+ class TransactionPaymentGateway < Resource
8
+
9
+ # @!attribute id
10
+ # @return [String]
11
+ define_attribute :id, String
12
+
13
+ # @!attribute name
14
+ # @return [String]
15
+ define_attribute :name, String
16
+
17
+ # @!attribute object
18
+ # @return [String] Object type
19
+ define_attribute :object, String
20
+
21
+ # @!attribute type
22
+ # @return [String]
23
+ define_attribute :type, String
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,50 @@
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 Resources
7
+ class UniqueCouponCode < Resource
8
+
9
+ # @!attribute bulk_coupon_code
10
+ # @return [String] The Coupon code of the parent Bulk Coupon
11
+ define_attribute :bulk_coupon_code, String
12
+
13
+ # @!attribute bulk_coupon_id
14
+ # @return [String] The Coupon ID of the parent Bulk Coupon
15
+ define_attribute :bulk_coupon_id, String
16
+
17
+ # @!attribute code
18
+ # @return [String] The code the customer enters to redeem the coupon.
19
+ define_attribute :code, String
20
+
21
+ # @!attribute created_at
22
+ # @return [DateTime] Created at
23
+ define_attribute :created_at, DateTime
24
+
25
+ # @!attribute expired_at
26
+ # @return [DateTime] The date and time the coupon was expired early or reached its `max_redemptions`.
27
+ define_attribute :expired_at, DateTime
28
+
29
+ # @!attribute id
30
+ # @return [String] Unique Coupon Code ID
31
+ define_attribute :id, String
32
+
33
+ # @!attribute object
34
+ # @return [String] Object type
35
+ define_attribute :object, String
36
+
37
+ # @!attribute redeemed_at
38
+ # @return [DateTime] The date and time the unique coupon code was redeemed.
39
+ define_attribute :redeemed_at, DateTime
40
+
41
+ # @!attribute state
42
+ # @return [String] Indicates if the unique coupon code is redeemable or why not.
43
+ define_attribute :state, String
44
+
45
+ # @!attribute updated_at
46
+ # @return [DateTime] Updated at
47
+ define_attribute :updated_at, DateTime
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,70 @@
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 Resources
7
+ class Usage < Resource
8
+
9
+ # @!attribute amount
10
+ # @return [Float] The amount of usage. Can be positive, negative, or 0. If the Decimal Quantity feature is enabled, this value will be rounded to nine decimal places. Otherwise, all digits after the decimal will be stripped. If the usage-based add-on is billed with a percentage, your usage should be a monetary amount formatted in cents (e.g., $5.00 is "500").
11
+ define_attribute :amount, Float
12
+
13
+ # @!attribute billed_at
14
+ # @return [DateTime] When the usage record was billed on an invoice.
15
+ define_attribute :billed_at, DateTime
16
+
17
+ # @!attribute created_at
18
+ # @return [DateTime] When the usage record was created in Recurly.
19
+ define_attribute :created_at, DateTime
20
+
21
+ # @!attribute id
22
+ # @return [String]
23
+ define_attribute :id, String
24
+
25
+ # @!attribute measured_unit_id
26
+ # @return [String] The ID of the measured unit associated with the add-on the usage record is for.
27
+ define_attribute :measured_unit_id, String
28
+
29
+ # @!attribute merchant_tag
30
+ # @return [String] Custom field for recording the id in your own system associated with the usage, so you can provide auditable usage displays to your customers using a GET on this endpoint.
31
+ define_attribute :merchant_tag, String
32
+
33
+ # @!attribute object
34
+ # @return [String] Object type
35
+ define_attribute :object, String
36
+
37
+ # @!attribute recording_timestamp
38
+ # @return [DateTime] When the usage was recorded in your system.
39
+ define_attribute :recording_timestamp, DateTime
40
+
41
+ # @!attribute tier_type
42
+ # @return [String] The pricing model for the add-on. For more information, [click here](https://docs.recurly.com/docs/billing-models#section-quantity-based).
43
+ define_attribute :tier_type, String
44
+
45
+ # @!attribute tiers
46
+ # @return [Array[SubscriptionAddOnTier]] The tiers and prices of the subscription based on the usage_timestamp. If tier_type = flat, tiers = null
47
+ define_attribute :tiers, Array, { :item_type => :SubscriptionAddOnTier }
48
+
49
+ # @!attribute unit_amount
50
+ # @return [Float] Unit price
51
+ define_attribute :unit_amount, Float
52
+
53
+ # @!attribute updated_at
54
+ # @return [DateTime] When the usage record was billed on an invoice.
55
+ define_attribute :updated_at, DateTime
56
+
57
+ # @!attribute usage_percentage
58
+ # @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.
59
+ define_attribute :usage_percentage, Float
60
+
61
+ # @!attribute usage_timestamp
62
+ # @return [DateTime] When the usage actually happened. This will define the line item dates this usage is billed under and is important for revenue recognition.
63
+ define_attribute :usage_timestamp, DateTime
64
+
65
+ # @!attribute usage_type
66
+ # @return [String] Type of usage, returns usage type if `add_on_type` is `usage`.
67
+ define_attribute :usage_type, String
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,42 @@
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 Resources
7
+ class User < Resource
8
+
9
+ # @!attribute created_at
10
+ # @return [DateTime]
11
+ define_attribute :created_at, DateTime
12
+
13
+ # @!attribute deleted_at
14
+ # @return [DateTime]
15
+ define_attribute :deleted_at, DateTime
16
+
17
+ # @!attribute email
18
+ # @return [String]
19
+ define_attribute :email, String
20
+
21
+ # @!attribute first_name
22
+ # @return [String]
23
+ define_attribute :first_name, String
24
+
25
+ # @!attribute id
26
+ # @return [String]
27
+ define_attribute :id, String
28
+
29
+ # @!attribute last_name
30
+ # @return [String]
31
+ define_attribute :last_name, String
32
+
33
+ # @!attribute object
34
+ # @return [String] Object type
35
+ define_attribute :object, String
36
+
37
+ # @!attribute time_zone
38
+ # @return [String]
39
+ define_attribute :time_zone, String
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,18 @@
1
+ # Include all resource files
2
+ resources = File.join(File.dirname(__FILE__), "resources", "*.rb")
3
+ Dir.glob(resources, &method(:require))
4
+
5
+ module Recurly
6
+ module Resources
7
+ class Empty < Resource
8
+ end
9
+
10
+ class Page < Resource
11
+ # leave data untyped
12
+ define_attribute :data, Array, item_type: Hash
13
+ define_attribute :has_more, :Boolean
14
+ define_attribute :next, String
15
+ define_attribute :object, String
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,13 @@
1
+ module Recurly
2
+ # This is a wrapper class to help parse http response into Recurly objects.
3
+ class FileParser
4
+
5
+ # Parses the json body into a recurly object.
6
+ #
7
+ # @param body [String] The data string to cast.
8
+ # @return [Resource]
9
+ def self.parse(body)
10
+ Recurly::Resources::BinaryFile.cast(data: body)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,72 @@
1
+ require "json"
2
+
3
+ module Recurly
4
+ # This is a wrapper class to help parse http response into Recurly objects.
5
+ class JSONParser
6
+
7
+ # Parses the json body into a recurly object.
8
+ #
9
+ # @param client [Client] The Recurly client which made the request.
10
+ # @param body [String] The JSON string to parse.
11
+ # @return [Resource]
12
+ def self.parse(client, body)
13
+ data = JSON.parse(body)
14
+ from_json(data).tap do |object|
15
+ object.client = client if object.requires_client?
16
+ end
17
+ end
18
+
19
+ # Converts the parsed JSON into a Recurly object.
20
+ #
21
+ # *TODO*: Instead of inferring this type from the `object`
22
+ # attribute. We should instead "register" the response type
23
+ # in the client/operations code. The `get`, `post`, etc methods
24
+ # could explicitly state their response types.
25
+ #
26
+ # @param data [Hash] The parsed JSON data
27
+ # @return [Error,Resource]
28
+ def self.from_json(data)
29
+ type = if data.has_key?("error")
30
+ "error_may_have_transaction"
31
+ else
32
+ data["object"]
33
+ end
34
+ klazz = self.recurly_class(type)
35
+
36
+ unless klazz
37
+ raise ArgumentError, "Unknown resource for json type #{type}"
38
+ end
39
+
40
+ data = data["error"] if klazz == Resources::ErrorMayHaveTransaction
41
+
42
+ klazz.cast(data)
43
+ end
44
+
45
+ # Returns the Recurly ruby class responsible for the Recurly json key.
46
+ #
47
+ # @example
48
+ # JSONParser.recurly_class('list')
49
+ # #=> Recurly::Page
50
+ # @example
51
+ # JSONParser.recurly_class('shipping_address')
52
+ # #=> Recurly::Resources::ShippingAddress
53
+ #
54
+ # @param type [String] The JSON key.
55
+ # @return [Resource,Pager,nil]
56
+ def self.recurly_class(type)
57
+ case type
58
+ when nil
59
+ nil
60
+ when "list"
61
+ Resources::Page
62
+ else
63
+ type_camelized = type.split("_").map(&:capitalize).join
64
+ if Resources.const_defined?(type_camelized, false)
65
+ Resources.const_get(type_camelized, false)
66
+ elsif Recurly::STRICT_MODE
67
+ raise ArgumentError, "Could not find Recurly Resource responsible for key #{type}"
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end