recurly 2.18.15 → 3.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (209) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +14 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +158 -110
  8. data/Rakefile +6 -0
  9. data/bin/bundle +105 -0
  10. data/bin/coderay +29 -0
  11. data/bin/console +14 -0
  12. data/bin/htmldiff +29 -0
  13. data/bin/ldiff +29 -0
  14. data/bin/pry +29 -0
  15. data/bin/rake +29 -0
  16. data/bin/rspec +29 -0
  17. data/bin/setup +8 -0
  18. data/bin/yard +29 -0
  19. data/bin/yardoc +29 -0
  20. data/bin/yri +29 -0
  21. data/lib/data/ca-certificates.crt +31 -0
  22. data/lib/recurly.rb +14 -145
  23. data/lib/recurly/client.rb +198 -0
  24. data/lib/recurly/client/operations.rb +935 -0
  25. data/lib/recurly/errors.rb +34 -0
  26. data/lib/recurly/errors/api_errors.rb +35 -0
  27. data/lib/recurly/errors/network_errors.rb +8 -0
  28. data/lib/recurly/pager.rb +119 -0
  29. data/lib/recurly/request.rb +30 -0
  30. data/lib/recurly/requests/account_acquisition_updatable.rb +22 -0
  31. data/lib/recurly/requests/account_create_only.rb +18 -0
  32. data/lib/recurly/requests/account_updatable.rb +50 -0
  33. data/lib/recurly/requests/add_on_create.rb +38 -0
  34. data/lib/recurly/requests/add_on_update.rb +38 -0
  35. data/lib/recurly/requests/address.rb +42 -0
  36. data/lib/recurly/requests/billing_info_create.rb +58 -0
  37. data/lib/recurly/requests/coupon_create_only.rb +66 -0
  38. data/lib/recurly/requests/coupon_updatable.rb +30 -0
  39. data/lib/recurly/requests/create_account.rb +62 -0
  40. data/lib/recurly/requests/create_coupon.rb +90 -0
  41. data/lib/recurly/requests/invoice_create.rb +42 -0
  42. data/lib/recurly/requests/invoice_refund.rb +30 -0
  43. data/lib/recurly/requests/line_item_create.rb +46 -0
  44. data/lib/recurly/requests/plan_create.rb +66 -0
  45. data/lib/recurly/requests/plan_update.rb +70 -0
  46. data/lib/recurly/requests/shipping_address_create.rb +58 -0
  47. data/lib/recurly/requests/shipping_address_update.rb +62 -0
  48. data/lib/recurly/requests/subscription_add_on_create.rb +22 -0
  49. data/lib/recurly/requests/subscription_change_create.rb +42 -0
  50. data/lib/recurly/requests/subscription_create.rb +86 -0
  51. data/lib/recurly/requests/subscription_update.rb +42 -0
  52. data/lib/recurly/requests/update_coupon.rb +30 -0
  53. data/lib/recurly/resource.rb +16 -1103
  54. data/lib/recurly/resources/account.rb +86 -0
  55. data/lib/recurly/resources/account_acquisition.rb +42 -0
  56. data/lib/recurly/resources/account_balance.rb +22 -0
  57. data/lib/recurly/resources/account_note.rb +30 -0
  58. data/lib/recurly/resources/add_on.rb +62 -0
  59. data/lib/recurly/resources/address.rb +42 -0
  60. data/lib/recurly/resources/billing_info.rb +62 -0
  61. data/lib/recurly/resources/coupon.rb +110 -0
  62. data/lib/recurly/resources/coupon_discount.rb +22 -0
  63. data/lib/recurly/resources/coupon_redemption.rb +46 -0
  64. data/lib/recurly/resources/credit_payment.rb +62 -0
  65. data/lib/recurly/resources/error.rb +18 -0
  66. data/lib/recurly/resources/error_may_have_transaction.rb +22 -0
  67. data/lib/recurly/resources/invoice.rb +138 -0
  68. data/lib/recurly/resources/invoice_collection.rb +18 -0
  69. data/lib/recurly/resources/line_item.rb +166 -0
  70. data/lib/recurly/resources/plan.rb +86 -0
  71. data/lib/recurly/resources/settings.rb +18 -0
  72. data/lib/recurly/resources/shipping_address.rb +74 -0
  73. data/lib/recurly/resources/site.rb +46 -0
  74. data/lib/recurly/resources/subscription.rb +134 -0
  75. data/lib/recurly/resources/subscription_add_on.rb +42 -0
  76. data/lib/recurly/resources/subscription_change.rb +54 -0
  77. data/lib/recurly/resources/tax_info.rb +18 -0
  78. data/lib/recurly/resources/transaction.rb +146 -0
  79. data/lib/recurly/resources/unique_coupon_code.rb +38 -0
  80. data/lib/recurly/resources/user.rb +38 -0
  81. data/lib/recurly/schema.rb +114 -0
  82. data/lib/recurly/schema/json_deserializer.rb +53 -0
  83. data/lib/recurly/schema/json_parser.rb +71 -0
  84. data/lib/recurly/schema/request_caster.rb +66 -0
  85. data/lib/recurly/schema/schema_factory.rb +50 -0
  86. data/lib/recurly/schema/schema_validator.rb +125 -0
  87. data/lib/recurly/version.rb +1 -10
  88. data/recurly.gemspec +32 -0
  89. data/scripts/build +4 -0
  90. data/scripts/clean +6 -0
  91. data/scripts/test +3 -0
  92. metadata +121 -245
  93. data/lib/recurly/account.rb +0 -190
  94. data/lib/recurly/account_acquisition.rb +0 -27
  95. data/lib/recurly/account_balance.rb +0 -21
  96. data/lib/recurly/add_on.rb +0 -44
  97. data/lib/recurly/address.rb +0 -25
  98. data/lib/recurly/adjustment.rb +0 -81
  99. data/lib/recurly/api.rb +0 -110
  100. data/lib/recurly/api/errors.rb +0 -208
  101. data/lib/recurly/api/net_http_adapter.rb +0 -111
  102. data/lib/recurly/billing_info.rb +0 -109
  103. data/lib/recurly/coupon.rb +0 -134
  104. data/lib/recurly/credit_payment.rb +0 -32
  105. data/lib/recurly/custom_field.rb +0 -15
  106. data/lib/recurly/delivery.rb +0 -19
  107. data/lib/recurly/error.rb +0 -13
  108. data/lib/recurly/gift_card.rb +0 -85
  109. data/lib/recurly/helper.rb +0 -51
  110. data/lib/recurly/invoice.rb +0 -297
  111. data/lib/recurly/invoice_collection.rb +0 -14
  112. data/lib/recurly/item.rb +0 -36
  113. data/lib/recurly/js.rb +0 -14
  114. data/lib/recurly/juris_detail.rb +0 -15
  115. data/lib/recurly/measured_unit.rb +0 -16
  116. data/lib/recurly/money.rb +0 -120
  117. data/lib/recurly/note.rb +0 -14
  118. data/lib/recurly/plan.rb +0 -43
  119. data/lib/recurly/purchase.rb +0 -234
  120. data/lib/recurly/redemption.rb +0 -46
  121. data/lib/recurly/resource/association.rb +0 -16
  122. data/lib/recurly/resource/errors.rb +0 -20
  123. data/lib/recurly/resource/pager.rb +0 -313
  124. data/lib/recurly/shipping_address.rb +0 -26
  125. data/lib/recurly/shipping_fee.rb +0 -17
  126. data/lib/recurly/shipping_method.rb +0 -13
  127. data/lib/recurly/subscription.rb +0 -365
  128. data/lib/recurly/subscription/add_ons.rb +0 -82
  129. data/lib/recurly/subscription_add_on.rb +0 -58
  130. data/lib/recurly/tax_detail.rb +0 -16
  131. data/lib/recurly/tax_type.rb +0 -13
  132. data/lib/recurly/tier.rb +0 -18
  133. data/lib/recurly/transaction.rb +0 -131
  134. data/lib/recurly/transaction/errors.rb +0 -115
  135. data/lib/recurly/usage.rb +0 -28
  136. data/lib/recurly/verify.rb +0 -12
  137. data/lib/recurly/webhook.rb +0 -111
  138. data/lib/recurly/webhook/account_notification.rb +0 -13
  139. data/lib/recurly/webhook/billing_info_update_failed_notification.rb +0 -6
  140. data/lib/recurly/webhook/billing_info_updated_notification.rb +0 -6
  141. data/lib/recurly/webhook/canceled_account_notification.rb +0 -6
  142. data/lib/recurly/webhook/canceled_gift_card_notification.rb +0 -6
  143. data/lib/recurly/webhook/canceled_subscription_notification.rb +0 -6
  144. data/lib/recurly/webhook/closed_credit_invoice_notification.rb +0 -6
  145. data/lib/recurly/webhook/closed_invoice_notification.rb +0 -6
  146. data/lib/recurly/webhook/credit_payment_notification.rb +0 -12
  147. data/lib/recurly/webhook/deactivated_item_notification.rb +0 -6
  148. data/lib/recurly/webhook/deleted_shipping_address_notification.rb +0 -6
  149. data/lib/recurly/webhook/dunning_notification.rb +0 -14
  150. data/lib/recurly/webhook/expired_subscription_notification.rb +0 -6
  151. data/lib/recurly/webhook/failed_charge_invoice_notification.rb +0 -6
  152. data/lib/recurly/webhook/failed_payment_notification.rb +0 -6
  153. data/lib/recurly/webhook/fraud_info_updated_notification.rb +0 -6
  154. data/lib/recurly/webhook/gift_card_notification.rb +0 -8
  155. data/lib/recurly/webhook/invoice_notification.rb +0 -12
  156. data/lib/recurly/webhook/item_notification.rb +0 -7
  157. data/lib/recurly/webhook/low_balance_gift_card_notification.rb +0 -6
  158. data/lib/recurly/webhook/new_account_notification.rb +0 -6
  159. data/lib/recurly/webhook/new_charge_invoice_notification.rb +0 -6
  160. data/lib/recurly/webhook/new_credit_invoice_notification.rb +0 -6
  161. data/lib/recurly/webhook/new_credit_payment_notification.rb +0 -6
  162. data/lib/recurly/webhook/new_dunning_event_notification.rb +0 -6
  163. data/lib/recurly/webhook/new_invoice_notification.rb +0 -6
  164. data/lib/recurly/webhook/new_item_notification.rb +0 -6
  165. data/lib/recurly/webhook/new_shipping_address_notification.rb +0 -6
  166. data/lib/recurly/webhook/new_subscription_notification.rb +0 -6
  167. data/lib/recurly/webhook/new_usage_notification.rb +0 -8
  168. data/lib/recurly/webhook/notification.rb +0 -18
  169. data/lib/recurly/webhook/paid_charge_invoice_notification.rb +0 -6
  170. data/lib/recurly/webhook/past_due_charge_invoice_notification.rb +0 -6
  171. data/lib/recurly/webhook/past_due_invoice_notification.rb +0 -6
  172. data/lib/recurly/webhook/paused_subscription_renewal_notification.rb +0 -6
  173. data/lib/recurly/webhook/processing_charge_invoice_notification.rb +0 -6
  174. data/lib/recurly/webhook/processing_credit_invoice_notification.rb +0 -6
  175. data/lib/recurly/webhook/processing_invoice_notification.rb +0 -6
  176. data/lib/recurly/webhook/processing_payment_notification.rb +0 -6
  177. data/lib/recurly/webhook/purchased_gift_card_notification.rb +0 -7
  178. data/lib/recurly/webhook/reactivated_account_notification.rb +0 -6
  179. data/lib/recurly/webhook/reactivated_item_notification.rb +0 -6
  180. data/lib/recurly/webhook/redeemed_gift_card_notification.rb +0 -7
  181. data/lib/recurly/webhook/regenerated_gift_card_notification.rb +0 -6
  182. data/lib/recurly/webhook/renewed_subscription_notification.rb +0 -6
  183. data/lib/recurly/webhook/reopened_charge_invoice_notification.rb +0 -6
  184. data/lib/recurly/webhook/reopened_credit_invoice_notification.rb +0 -6
  185. data/lib/recurly/webhook/scheduled_payment_notification.rb +0 -6
  186. data/lib/recurly/webhook/scheduled_subscription_pause_notification.rb +0 -6
  187. data/lib/recurly/webhook/subscription_notification.rb +0 -12
  188. data/lib/recurly/webhook/subscription_pause_canceled_notification.rb +0 -6
  189. data/lib/recurly/webhook/subscription_pause_modified_notification.rb +0 -6
  190. data/lib/recurly/webhook/subscription_paused_notification.rb +0 -6
  191. data/lib/recurly/webhook/subscription_resumed_notification.rb +0 -6
  192. data/lib/recurly/webhook/successful_payment_notification.rb +0 -6
  193. data/lib/recurly/webhook/successful_refund_notification.rb +0 -6
  194. data/lib/recurly/webhook/transaction_authorized_notification.rb +0 -6
  195. data/lib/recurly/webhook/transaction_notification.rb +0 -12
  196. data/lib/recurly/webhook/transaction_status_updated_notification.rb +0 -6
  197. data/lib/recurly/webhook/updated_account_notification.rb +0 -6
  198. data/lib/recurly/webhook/updated_balance_gift_card_notification.rb +0 -7
  199. data/lib/recurly/webhook/updated_gift_card_notification.rb +0 -6
  200. data/lib/recurly/webhook/updated_invoice_notification.rb +0 -6
  201. data/lib/recurly/webhook/updated_item_notification.rb +0 -6
  202. data/lib/recurly/webhook/updated_shipping_address_notification.rb +0 -6
  203. data/lib/recurly/webhook/updated_subscription_notification.rb +0 -6
  204. data/lib/recurly/webhook/void_payment_notification.rb +0 -6
  205. data/lib/recurly/webhook/voided_credit_invoice_notification.rb +0 -6
  206. data/lib/recurly/webhook/voided_credit_payment_notification.rb +0 -6
  207. data/lib/recurly/xml.rb +0 -122
  208. data/lib/recurly/xml/nokogiri.rb +0 -60
  209. data/lib/recurly/xml/rexml.rb +0 -52
@@ -0,0 +1,58 @@
1
+ module Recurly
2
+ module Requests
3
+ class BillingInfoCreate < Request
4
+
5
+ # @!attribute address
6
+ # @return [Address]
7
+ define_attribute :address, :Address
8
+
9
+ # @!attribute amazon_billing_agreement_id
10
+ # @return [String] Amazon billing agreement ID
11
+ define_attribute :amazon_billing_agreement_id, String
12
+
13
+ # @!attribute company
14
+ # @return [String] Company name
15
+ define_attribute :company, String
16
+
17
+ # @!attribute cvv
18
+ # @return [String] *STRONGLY RECOMMENDED*
19
+ define_attribute :cvv, String
20
+
21
+ # @!attribute first_name
22
+ # @return [String] First name
23
+ define_attribute :first_name, String
24
+
25
+ # @!attribute ip_address
26
+ # @return [String] *STRONGLY RECOMMENDED* Customer's IP address when updating their billing information.
27
+ define_attribute :ip_address, String
28
+
29
+ # @!attribute last_name
30
+ # @return [String] Last name
31
+ define_attribute :last_name, String
32
+
33
+ # @!attribute month
34
+ # @return [String] Expiration month
35
+ define_attribute :month, String
36
+
37
+ # @!attribute number
38
+ # @return [String] Credit card number, spaces and dashes are accepted.
39
+ define_attribute :number, String
40
+
41
+ # @!attribute paypal_billing_agreement_id
42
+ # @return [String] PayPal billing agreement ID
43
+ define_attribute :paypal_billing_agreement_id, String
44
+
45
+ # @!attribute token_id
46
+ # @return [String] A token [generated by Recurly.js](https://docs.recurly.com/js/#getting-a-token).
47
+ define_attribute :token_id, String
48
+
49
+ # @!attribute vat_number
50
+ # @return [String] VAT number
51
+ define_attribute :vat_number, String
52
+
53
+ # @!attribute year
54
+ # @return [String] Expiration year
55
+ define_attribute :year, String
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,66 @@
1
+ module Recurly
2
+ module Requests
3
+ class CouponCreateOnly < Request
4
+
5
+ # @!attribute applies_to_all_plans
6
+ # @return [Boolean] The coupon is valid for all plans if true. If false then `plans` and `plans_names` will list the applicable plans.
7
+ define_attribute :applies_to_all_plans, :Boolean
8
+
9
+ # @!attribute applies_to_non_plan_charges
10
+ # @return [Boolean] The coupon is valid for one-time, non-plan charges if true.
11
+ define_attribute :applies_to_non_plan_charges, :Boolean
12
+
13
+ # @!attribute code
14
+ # @return [String] The code the customer enters to redeem the coupon.
15
+ define_attribute :code, String
16
+
17
+ # @!attribute coupon_type
18
+ # @return [String] Whether the coupon is "single_code" or "bulk". Bulk coupons will require a `unique_code_template` and will generate unique codes through the `/generate` endpoint.
19
+ define_attribute :coupon_type, String, {:enum => ["single_code", "bulk"]}
20
+
21
+ # @!attribute currencies
22
+ # @return [Array[String]] Fixed discount currencies by currency. Required if the coupon type is `fixed`. This parameter should contain the coupon discount values
23
+ define_attribute :currencies, Array, {:item_type => String}
24
+
25
+ # @!attribute discount_percent
26
+ # @return [Integer] The percent of the price discounted by the coupon. Required if `discount_type` is `percent`.
27
+ define_attribute :discount_percent, Integer
28
+
29
+ # @!attribute discount_type
30
+ # @return [String] The type of discount provided by the coupon (how the amount discounted is calculated)
31
+ define_attribute :discount_type, String, {:enum => ["percent", "fixed", "free_trial"]}
32
+
33
+ # @!attribute duration
34
+ # @return [String] This field does not apply when the discount_type is `free_trial`. - "single_use" coupons applies to the first invoice only. - "temporal" coupons will apply to invoices for the duration determined by the `temporal_unit` and `temporal_amount` attributes. - "forever" coupons will apply to invoices forever.
35
+ define_attribute :duration, String, {:enum => ["forever", "single_use", "temporal"]}
36
+
37
+ # @!attribute free_trial_amount
38
+ # @return [Integer] Sets the duration of time the `free_trial_unit` is for. Required if `discount_type` is `free_trial`.
39
+ define_attribute :free_trial_amount, Integer
40
+
41
+ # @!attribute free_trial_unit
42
+ # @return [String] Description of the unit of time the coupon is for. Used with `free_trial_amount` to determine the duration of time the coupon is for. Required if `discount_type` is `free_trial`.
43
+ define_attribute :free_trial_unit, String, {:enum => ["day", "week", "month"]}
44
+
45
+ # @!attribute plan_codes
46
+ # @return [Array[String]] List of plan codes to which this coupon applies. See `applies_to_all_plans`
47
+ define_attribute :plan_codes, Array, {:item_type => String}
48
+
49
+ # @!attribute redemption_resource
50
+ # @return [String] Whether the discount is for all eligible charges on the account, or only a specific subscription.
51
+ define_attribute :redemption_resource, String, {:enum => ["account", "subscription"]}
52
+
53
+ # @!attribute temporal_amount
54
+ # @return [Integer] If `duration` is "temporal" than `temporal_amount` is an integer which is multiplied by `temporal_unit` to define the duration that the coupon will be applied to invoices for.
55
+ define_attribute :temporal_amount, Integer
56
+
57
+ # @!attribute temporal_unit
58
+ # @return [String] If `duration` is "temporal" than `temporal_unit` is multiplied by `temporal_amount` to define the duration that the coupon will be applied to invoices for.
59
+ define_attribute :temporal_unit, String, {:enum => ["day", "week", "month", "year"]}
60
+
61
+ # @!attribute unique_code_template
62
+ # @return [String] On a bulk coupon, the template from which unique coupon codes are generated. - You must start the template with your coupon_code wrapped in single quotes. - Outside of single quotes, use a 9 for a character that you want to be a random number. - Outside of single quotes, use an "x" for a character that you want to be a random letter. - Outside of single quotes, use an * for a character that you want to be a random number or letter. - Use single quotes ' ' for characters that you want to remain static. These strings can be alphanumeric and may contain a - _ or +. For example: "'abc-'****'-def'"
63
+ define_attribute :unique_code_template, String
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,30 @@
1
+ module Recurly
2
+ module Requests
3
+ class CouponUpdatable < Request
4
+
5
+ # @!attribute hosted_description
6
+ # @return [String] This description will show up when a customer redeems a coupon on your Hosted Payment Pages, or if you choose to show the description on your own checkout page.
7
+ define_attribute :hosted_description, String
8
+
9
+ # @!attribute invoice_description
10
+ # @return [String] Description of the coupon on the invoice.
11
+ define_attribute :invoice_description, String
12
+
13
+ # @!attribute max_redemptions
14
+ # @return [Integer] A maximum number of redemptions for the coupon. The coupon will expire when it hits its maximum redemptions.
15
+ define_attribute :max_redemptions, Integer
16
+
17
+ # @!attribute max_redemptions_per_account
18
+ # @return [Integer] Redemptions per account is the number of times a specific account can redeem the coupon. Set redemptions per account to `1` if you want to keep customers from gaming the system and getting more than one discount from the coupon campaign.
19
+ define_attribute :max_redemptions_per_account, Integer
20
+
21
+ # @!attribute name
22
+ # @return [String] The internal name for the coupon.
23
+ define_attribute :name, String
24
+
25
+ # @!attribute redeem_by_date
26
+ # @return [String] The date and time the coupon will expire and can no longer be redeemed. Time is always 11:59:59, the end-of-day Pacific time.
27
+ define_attribute :redeem_by_date, String
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,62 @@
1
+ module Recurly
2
+ module Requests
3
+ class CreateAccount < Request
4
+
5
+ # @!attribute acquisition
6
+ # @return [AccountAcquisitionUpdatable]
7
+ define_attribute :acquisition, :AccountAcquisitionUpdatable
8
+
9
+ # @!attribute address
10
+ # @return [Address]
11
+ define_attribute :address, :Address
12
+
13
+ # @!attribute billing_info
14
+ # @return [BillingInfoCreate]
15
+ define_attribute :billing_info, :BillingInfoCreate
16
+
17
+ # @!attribute cc_emails
18
+ # @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.
19
+ define_attribute :cc_emails, String
20
+
21
+ # @!attribute code
22
+ # @return [String] The unique identifier of the account. This cannot be changed once the account is created.
23
+ define_attribute :code, String
24
+
25
+ # @!attribute company
26
+ # @return [String]
27
+ define_attribute :company, String
28
+
29
+ # @!attribute email
30
+ # @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.
31
+ define_attribute :email, String
32
+
33
+ # @!attribute first_name
34
+ # @return [String]
35
+ define_attribute :first_name, String
36
+
37
+ # @!attribute last_name
38
+ # @return [String]
39
+ define_attribute :last_name, String
40
+
41
+ # @!attribute preferred_locale
42
+ # @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.
43
+ define_attribute :preferred_locale, String, {:enum => ["da-DK", "de-CH", "de-DE", "en-AU", "en-CA", "en-GB", "en-NZ", "en-US", "es-ES", "es-MX", "es-US", "fr-CA", "fr-FR", "hi-IN", "ja-JP", "nl-BE", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "tr-TR", "zh-CN"]}
44
+
45
+ # @!attribute shipping_addresses
46
+ # @return [Array[ShippingAddressCreate]]
47
+ define_attribute :shipping_addresses, Array, {:item_type => :ShippingAddressCreate}
48
+
49
+ # @!attribute tax_exempt
50
+ # @return [Boolean] The tax status of the account. `true` exempts tax on the account, `false` applies tax on the account.
51
+ define_attribute :tax_exempt, :Boolean
52
+
53
+ # @!attribute username
54
+ # @return [String] A secondary value for the account.
55
+ define_attribute :username, String
56
+
57
+ # @!attribute vat_number
58
+ # @return [String] The VAT number of the account (to avoid having the VAT applied). This is only used for manually collected invoices.
59
+ define_attribute :vat_number, String
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,90 @@
1
+ module Recurly
2
+ module Requests
3
+ class CreateCoupon < Request
4
+
5
+ # @!attribute applies_to_all_plans
6
+ # @return [Boolean] The coupon is valid for all plans if true. If false then `plans` and `plans_names` will list the applicable plans.
7
+ define_attribute :applies_to_all_plans, :Boolean
8
+
9
+ # @!attribute applies_to_non_plan_charges
10
+ # @return [Boolean] The coupon is valid for one-time, non-plan charges if true.
11
+ define_attribute :applies_to_non_plan_charges, :Boolean
12
+
13
+ # @!attribute code
14
+ # @return [String] The code the customer enters to redeem the coupon.
15
+ define_attribute :code, String
16
+
17
+ # @!attribute coupon_type
18
+ # @return [String] Whether the coupon is "single_code" or "bulk". Bulk coupons will require a `unique_code_template` and will generate unique codes through the `/generate` endpoint.
19
+ define_attribute :coupon_type, String, {:enum => ["single_code", "bulk"]}
20
+
21
+ # @!attribute currencies
22
+ # @return [Array[String]] Fixed discount currencies by currency. Required if the coupon type is `fixed`. This parameter should contain the coupon discount values
23
+ define_attribute :currencies, Array, {:item_type => String}
24
+
25
+ # @!attribute discount_percent
26
+ # @return [Integer] The percent of the price discounted by the coupon. Required if `discount_type` is `percent`.
27
+ define_attribute :discount_percent, Integer
28
+
29
+ # @!attribute discount_type
30
+ # @return [String] The type of discount provided by the coupon (how the amount discounted is calculated)
31
+ define_attribute :discount_type, String, {:enum => ["percent", "fixed", "free_trial"]}
32
+
33
+ # @!attribute duration
34
+ # @return [String] This field does not apply when the discount_type is `free_trial`. - "single_use" coupons applies to the first invoice only. - "temporal" coupons will apply to invoices for the duration determined by the `temporal_unit` and `temporal_amount` attributes. - "forever" coupons will apply to invoices forever.
35
+ define_attribute :duration, String, {:enum => ["forever", "single_use", "temporal"]}
36
+
37
+ # @!attribute free_trial_amount
38
+ # @return [Integer] Sets the duration of time the `free_trial_unit` is for. Required if `discount_type` is `free_trial`.
39
+ define_attribute :free_trial_amount, Integer
40
+
41
+ # @!attribute free_trial_unit
42
+ # @return [String] Description of the unit of time the coupon is for. Used with `free_trial_amount` to determine the duration of time the coupon is for. Required if `discount_type` is `free_trial`.
43
+ define_attribute :free_trial_unit, String, {:enum => ["day", "week", "month"]}
44
+
45
+ # @!attribute hosted_description
46
+ # @return [String] This description will show up when a customer redeems a coupon on your Hosted Payment Pages, or if you choose to show the description on your own checkout page.
47
+ define_attribute :hosted_description, String
48
+
49
+ # @!attribute invoice_description
50
+ # @return [String] Description of the coupon on the invoice.
51
+ define_attribute :invoice_description, String
52
+
53
+ # @!attribute max_redemptions
54
+ # @return [Integer] A maximum number of redemptions for the coupon. The coupon will expire when it hits its maximum redemptions.
55
+ define_attribute :max_redemptions, Integer
56
+
57
+ # @!attribute max_redemptions_per_account
58
+ # @return [Integer] Redemptions per account is the number of times a specific account can redeem the coupon. Set redemptions per account to `1` if you want to keep customers from gaming the system and getting more than one discount from the coupon campaign.
59
+ define_attribute :max_redemptions_per_account, Integer
60
+
61
+ # @!attribute name
62
+ # @return [String] The internal name for the coupon.
63
+ define_attribute :name, String
64
+
65
+ # @!attribute plan_codes
66
+ # @return [Array[String]] List of plan codes to which this coupon applies. See `applies_to_all_plans`
67
+ define_attribute :plan_codes, Array, {:item_type => String}
68
+
69
+ # @!attribute redeem_by_date
70
+ # @return [String] The date and time the coupon will expire and can no longer be redeemed. Time is always 11:59:59, the end-of-day Pacific time.
71
+ define_attribute :redeem_by_date, String
72
+
73
+ # @!attribute redemption_resource
74
+ # @return [String] Whether the discount is for all eligible charges on the account, or only a specific subscription.
75
+ define_attribute :redemption_resource, String, {:enum => ["account", "subscription"]}
76
+
77
+ # @!attribute temporal_amount
78
+ # @return [Integer] If `duration` is "temporal" than `temporal_amount` is an integer which is multiplied by `temporal_unit` to define the duration that the coupon will be applied to invoices for.
79
+ define_attribute :temporal_amount, Integer
80
+
81
+ # @!attribute temporal_unit
82
+ # @return [String] If `duration` is "temporal" than `temporal_unit` is multiplied by `temporal_amount` to define the duration that the coupon will be applied to invoices for.
83
+ define_attribute :temporal_unit, String, {:enum => ["day", "week", "month", "year"]}
84
+
85
+ # @!attribute unique_code_template
86
+ # @return [String] On a bulk coupon, the template from which unique coupon codes are generated. - You must start the template with your coupon_code wrapped in single quotes. - Outside of single quotes, use a 9 for a character that you want to be a random number. - Outside of single quotes, use an "x" for a character that you want to be a random letter. - Outside of single quotes, use an * for a character that you want to be a random number or letter. - Use single quotes ' ' for characters that you want to remain static. These strings can be alphanumeric and may contain a - _ or +. For example: "'abc-'****'-def'"
87
+ define_attribute :unique_code_template, String
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,42 @@
1
+ module Recurly
2
+ module Requests
3
+ class InvoiceCreate < Request
4
+
5
+ # @!attribute charge_customer_notes
6
+ # @return [String] This will default to the Customer Notes text specified on the Invoice Settings for charge invoices. Specify custom notes to add or override Customer Notes on charge invoices.
7
+ define_attribute :charge_customer_notes, String
8
+
9
+ # @!attribute collection_method
10
+ # @return [String] An automatic invoice means a corresponding transaction is run using the account's billing information at the same time the invoice is created. Manual invoices are created without a corresponding transaction. The merchant must enter a manual payment transaction or have the customer pay the invoice with an automatic method, like credit card, PayPal, Amazon, or ACH bank payment.
11
+ define_attribute :collection_method, String, {:enum => ["automatic", "manual"]}
12
+
13
+ # @!attribute credit_customer_notes
14
+ # @return [String] This will default to the Customer Notes text specified on the Invoice Settings for credit invoices. Specify customer notes to add or override Customer Notes on credit invoices.
15
+ define_attribute :credit_customer_notes, String
16
+
17
+ # @!attribute currency
18
+ # @return [String] 3-letter ISO 4217 currency code.
19
+ define_attribute :currency, String
20
+
21
+ # @!attribute net_terms
22
+ # @return [Integer] Integer representing the number of days after an invoice's creation that the invoice will become past due. If an invoice's net terms are set to '0', it is due 'On Receipt' and will become past due 24 hours after it’s created. If an invoice is due net 30, it will become past due at 31 days exactly.
23
+ define_attribute :net_terms, Integer
24
+
25
+ # @!attribute po_number
26
+ # @return [String] For manual invoicing, this identifies the PO number associated with the subscription.
27
+ define_attribute :po_number, String
28
+
29
+ # @!attribute terms_and_conditions
30
+ # @return [String] This will default to the Terms and Conditions text specified on the Invoice Settings page in your Recurly admin. Specify custom notes to add or override Terms and Conditions.
31
+ define_attribute :terms_and_conditions, String
32
+
33
+ # @!attribute type
34
+ # @return [String] Specify a type to limit the type of line items that will be invoiced.
35
+ define_attribute :type, String, {:enum => ["charge", "credit"]}
36
+
37
+ # @!attribute vat_reverse_charge_notes
38
+ # @return [String] VAT Reverse Charge Notes only appear if you have EU VAT enabled or are using your own Avalara AvaTax account and the customer is in the EU, has a VAT number, and is in a different country than your own. This will default to the VAT Reverse Charge Notes text specified on the Tax Settings page in your Recurly admin, unless custom notes were created with the original subscription.
39
+ define_attribute :vat_reverse_charge_notes, String
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,30 @@
1
+ module Recurly
2
+ module Requests
3
+ class InvoiceRefund < Request
4
+
5
+ # @!attribute amount
6
+ # @return [Integer] The amount to be refunded. The amount will be split between the line items. If no amount is specified, it will default to refunding the total refundable amount on the invoice.
7
+ define_attribute :amount, Integer
8
+
9
+ # @!attribute credit_customer_notes
10
+ # @return [String] Used as the Customer Notes on the credit invoice. This field can only be include when the Credit Invoices feature is enabled.
11
+ define_attribute :credit_customer_notes, String
12
+
13
+ # @!attribute external_refund
14
+ # @return [Hash] Indicates that the refund was settled outside of Recurly, and a manual transaction should be created to track it in Recurly. Required when: - refunding a manually collected charge invoice, and `refund_method` is not `all_credit` - refunding a credit invoice that refunded manually collecting invoices - refunding a credit invoice for a partial amount This field can only be included when the Credit Invoices feature is enabled.
15
+ define_attribute :external_refund, Hash
16
+
17
+ # @!attribute line_items
18
+ # @return [Array[String]] The line items to be refunded. This is required when `type=line_items`.
19
+ define_attribute :line_items, Array, {:item_type => String}
20
+
21
+ # @!attribute refund_method
22
+ # @return [String] Indicates how the invoice should be refunded when both a credit and transaction are present on the invoice: - `transaction_first` – Refunds the transaction first, then any amount is issued as credit back to the account. Default value when Credit Invoices feature is enabled. - `credit_first` – Issues credit back to the account first, then refunds any remaining amount back to the transaction. Default value when Credit Invoices feature is not enabled. - `all_credit` – Issues credit to the account for the entire amount of the refund. Only available when the Credit Invoices feature is enabled. - `all_transaction` – Refunds the entire amount back to transactions, using transactions from previous invoices if necessary. Only available when the Credit Invoices feature is enabled.
23
+ define_attribute :refund_method, String, {:enum => ["transaction_first", "credit_first", "all_credit", "all_transaction"]}
24
+
25
+ # @!attribute type
26
+ # @return [String] The type of refund. Amount and line items cannot both be specified in the request.
27
+ define_attribute :type, String, {:enum => ["amount", "line_items"]}
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,46 @@
1
+ module Recurly
2
+ module Requests
3
+ class LineItemCreate < Request
4
+
5
+ # @!attribute credit_reason_code
6
+ # @return [String] The reason the credit was given when line item is `type=credit`. When the Credit Invoices feature is enabled, the value can be set and will default to `general`. When the Credit Invoices feature is not enabled, the value will always be `null`.
7
+ define_attribute :credit_reason_code, String, {:enum => ["general", "service", "promotional"]}
8
+
9
+ # @!attribute currency
10
+ # @return [String] 3-letter ISO 4217 currency code.
11
+ define_attribute :currency, String
12
+
13
+ # @!attribute description
14
+ # @return [String] Description that appears on the invoice.
15
+ define_attribute :description, String
16
+
17
+ # @!attribute end_date
18
+ # @return [DateTime] If this date is provided, it indicates the end of a time range.
19
+ define_attribute :end_date, DateTime
20
+
21
+ # @!attribute quantity
22
+ # @return [Integer] This number will be multiplied by the unit amount to compute the subtotal before any discounts or taxes.
23
+ define_attribute :quantity, Integer
24
+
25
+ # @!attribute start_date
26
+ # @return [DateTime] If an end date is present, this is value indicates the beginning of a billing time range. If no end date is present it indicates billing for a specific date. Defaults to the current date-time.
27
+ define_attribute :start_date, DateTime
28
+
29
+ # @!attribute tax_code
30
+ # @return [String] Optional field for EU VAT merchants and Avalara AvaTax Pro merchants. If you are using Recurly's EU VAT feature, you can use values of unknown, physical, or digital. If you have your own AvaTax account configured, you can use Avalara tax codes to assign custom tax rules.
31
+ define_attribute :tax_code, String
32
+
33
+ # @!attribute tax_exempt
34
+ # @return [Boolean] `true` exempts tax on charges, `false` applies tax on charges. If not defined, then defaults to the Plan and Site settings. This attribute does not work for credits (negative line items). Credits are always applied post-tax. Pre-tax discounts should use the Coupons feature.
35
+ define_attribute :tax_exempt, :Boolean
36
+
37
+ # @!attribute type
38
+ # @return [String] Line item type.
39
+ define_attribute :type, String, {:enum => ["charge", "credit"]}
40
+
41
+ # @!attribute unit_amount
42
+ # @return [Float] A positive or negative amount with `type=charge` will result in a positive `unit_amount`. A positive or negative amount with `type=credit` will result in a negative `unit_amount`.
43
+ define_attribute :unit_amount, Float
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,66 @@
1
+ module Recurly
2
+ module Requests
3
+ class PlanCreate < Request
4
+
5
+ # @!attribute accounting_code
6
+ # @return [String] Accounting code for invoice line items for the plan. If no value is provided, it defaults to plan's code.
7
+ define_attribute :accounting_code, String
8
+
9
+ # @!attribute add_ons
10
+ # @return [Array[String]] Add Ons
11
+ define_attribute :add_ons, Array, {:item_type => String}
12
+
13
+ # @!attribute code
14
+ # @return [String] Unique code to identify the plan. This is used in Hosted Payment Page URLs and in the invoice exports.
15
+ define_attribute :code, String
16
+
17
+ # @!attribute currencies
18
+ # @return [Array[String]] Pricing
19
+ define_attribute :currencies, Array, {:item_type => String}
20
+
21
+ # @!attribute description
22
+ # @return [String] Optional description, not displayed.
23
+ define_attribute :description, String
24
+
25
+ # @!attribute hosted_pages
26
+ # @return [Hash] Hosted pages settings
27
+ define_attribute :hosted_pages, Hash
28
+
29
+ # @!attribute interval_length
30
+ # @return [Integer] Length of the plan's billing interval in `interval_unit`.
31
+ define_attribute :interval_length, Integer
32
+
33
+ # @!attribute interval_unit
34
+ # @return [String] Unit for the plan's billing interval.
35
+ define_attribute :interval_unit, String, {:enum => ["days", "months"]}
36
+
37
+ # @!attribute name
38
+ # @return [String] This name describes your plan and will appear on the Hosted Payment Page and the subscriber's invoice.
39
+ define_attribute :name, String
40
+
41
+ # @!attribute setup_fee_accounting_code
42
+ # @return [String] Accounting code for invoice line items for the plan's setup fee. If no value is provided, it defaults to plan's accounting code.
43
+ define_attribute :setup_fee_accounting_code, String
44
+
45
+ # @!attribute tax_code
46
+ # @return [String] Optional field for EU VAT merchants and Avalara AvaTax Pro merchants. If you are using Recurly's EU VAT feature, you can use values of 'unknown', 'physical', or 'digital'. If you have your own AvaTax account configured, you can use Avalara tax codes to assign custom tax rules.
47
+ define_attribute :tax_code, String
48
+
49
+ # @!attribute tax_exempt
50
+ # @return [Boolean] `true` exempts tax on the plan, `false` applies tax on the plan.
51
+ define_attribute :tax_exempt, :Boolean
52
+
53
+ # @!attribute total_billing_cycles
54
+ # @return [Integer] Automatically terminate plans after a defined number of billing cycles.
55
+ define_attribute :total_billing_cycles, Integer
56
+
57
+ # @!attribute trial_length
58
+ # @return [Integer] Length of plan's trial period in `trial_units`. `0` means `no trial`.
59
+ define_attribute :trial_length, Integer
60
+
61
+ # @!attribute trial_unit
62
+ # @return [String] Units for the plan's trial period.
63
+ define_attribute :trial_unit, String, {:enum => ["days", "months"]}
64
+ end
65
+ end
66
+ end