recurly 3.0.0.beta.1 → 3.0.0.beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4560816624b25f0c01b6403a22f7b6425c9b7dde31ef860544d4eb3b7bc36fc5
4
- data.tar.gz: 154f6697035218babd3b843c820e17fd7650cc275ce1f931eb0800204b67b9ea
3
+ metadata.gz: 2eff2defc3b440056f3a6fde80b0d8a7f2ec6e514e317666fe28f9f0d7f7a10b
4
+ data.tar.gz: 540a0e4f98a3a366974e650471e93e4fc70e2e54f2c9004905a6633cc066c4fc
5
5
  SHA512:
6
- metadata.gz: e1c15b8a70794c06a3d064c4d4b830975d6f5c4aeddfa14a7d5387294d2ecb1ea42f8e96070cf6adb4742a606ed36b2e8fd3e97c96b39688da2099ab72a5159d
7
- data.tar.gz: bc16dd1d21814913aa3cb3e23d85bf745a14f47a4fe22ec1931171eef20adae9333f1ad990deacc27857f53a6941b361452123e97a32c697a05c19530e2d920b
6
+ metadata.gz: 503ebf6c95d9195f90fc221d1ff125d99626c5608648a913f8480c02c57a9229141cedd86004394db94fa1fe69f2549b740934d91eca85d5da86d666cec51d1d
7
+ data.tar.gz: d77e6d6c319e9a16007f470300f4358be1048673c9783cf92b06347043c0db1609c2f2eb0c6d991a7f2856749be3f15407595e6d0d39796f26522c3fa4fcd2d8
@@ -1,5 +1,8 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.4.0
4
+ - 2.3
5
+ - 2.4
6
+ - 2.5
7
+ - 2.6
5
8
  before_install: gem install bundler -v 1.14.6
@@ -103,7 +103,7 @@ module Recurly
103
103
  end
104
104
 
105
105
  def get(path, **options)
106
- response = run_request(:get, path, options.compact, headers)
106
+ response = run_request(:get, path, nil, headers)
107
107
  raise_api_error!(response) if response.status != 200
108
108
  JSONParser.parse(self, response.body)
109
109
  rescue Faraday::ClientError => ex
@@ -42,7 +42,7 @@ module Recurly
42
42
 
43
43
  # Create an account
44
44
  #
45
- # @param body [Requests::CreateAccount] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::CreateAccount}
45
+ # @param body [Requests::CreateAccount] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::CreateAccount}
46
46
  # @return [Resources::Account] An account.
47
47
  def create_account(body:)
48
48
  path = interpolate_path("/sites/{site_id}/accounts", site_id: site_id)
@@ -74,7 +74,7 @@ module Recurly
74
74
  # Modify an account
75
75
  #
76
76
  # @param account_id [String] Account ID or code (use prefix: `code-`, e.g. `code-bob`).
77
- # @param body [Requests::AccountUpdatable] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::AccountUpdatable}
77
+ # @param body [Requests::AccountUpdatable] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::AccountUpdatable}
78
78
  # @return [Resources::Account] An account.
79
79
  def update_account(account_id:, body:)
80
80
  path = interpolate_path("/sites/{site_id}/accounts/{account_id}", site_id: site_id, account_id: account_id)
@@ -102,7 +102,7 @@ module Recurly
102
102
  # Update an account's acquisition data
103
103
  #
104
104
  # @param account_id [String] Account ID or code (use prefix: `code-`, e.g. `code-bob`).
105
- # @param body [Requests::AccountAcquisitionUpdatable] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::AccountAcquisitionUpdatable}
105
+ # @param body [Requests::AccountAcquisitionUpdatable] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::AccountAcquisitionUpdatable}
106
106
  # @return [Resources::AccountAcquisition] An account's updated acquisition data.
107
107
  def update_account_acquisition(account_id:, body:)
108
108
  path = interpolate_path("/sites/{site_id}/accounts/{account_id}/acquisition", site_id: site_id, account_id: account_id)
@@ -147,7 +147,7 @@ module Recurly
147
147
  # Set an account's billing information
148
148
  #
149
149
  # @param account_id [String] Account ID or code (use prefix: `code-`, e.g. `code-bob`).
150
- # @param body [Requests::BillingInfoCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::BillingInfoCreate}
150
+ # @param body [Requests::BillingInfoCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::BillingInfoCreate}
151
151
  # @return [Resources::BillingInfo] Updated billing information.
152
152
  def update_billing_info(account_id:, body:)
153
153
  path = interpolate_path("/sites/{site_id}/accounts/{account_id}/billing_info", site_id: site_id, account_id: account_id)
@@ -184,7 +184,7 @@ module Recurly
184
184
  # Generate an active coupon redemption on an account
185
185
  #
186
186
  # @param account_id [String] Account ID or code (use prefix: `code-`, e.g. `code-bob`).
187
- # @param body [Requests::CreateCouponRedemption] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::CreateCouponRedemption}
187
+ # @param body [Requests::CreateCouponRedemption] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::CreateCouponRedemption}
188
188
  # @return [Resources::CouponRedemption] Returns the new coupon redemption.
189
189
  def create_coupon_redemption(account_id:, body:)
190
190
  path = interpolate_path("/sites/{site_id}/accounts/{account_id}/coupon_redemptions/active", site_id: site_id, account_id: account_id)
@@ -233,7 +233,7 @@ module Recurly
233
233
  # Create an invoice for pending line items
234
234
  #
235
235
  # @param account_id [String] Account ID or code (use prefix: `code-`, e.g. `code-bob`).
236
- # @param body [Requests::InvoiceCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::InvoiceCreate}
236
+ # @param body [Requests::InvoiceCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::InvoiceCreate}
237
237
  # @return [Resources::InvoiceCollection] Returns the new invoices.
238
238
  def create_invoice(account_id:, body:)
239
239
  path = interpolate_path("/sites/{site_id}/accounts/{account_id}/invoices", site_id: site_id, account_id: account_id)
@@ -243,7 +243,7 @@ module Recurly
243
243
  # Preview new invoice for pending line items
244
244
  #
245
245
  # @param account_id [String] Account ID or code (use prefix: `code-`, e.g. `code-bob`).
246
- # @param body [Requests::InvoiceCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::InvoiceCreate}
246
+ # @param body [Requests::InvoiceCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::InvoiceCreate}
247
247
  # @return [Resources::InvoiceCollection] Returns the invoice previews.
248
248
  def preview_invoice(account_id:, body:)
249
249
  path = interpolate_path("/sites/{site_id}/accounts/{account_id}/invoices/preview", site_id: site_id, account_id: account_id)
@@ -271,7 +271,7 @@ module Recurly
271
271
  # Create a new line item for the account
272
272
  #
273
273
  # @param account_id [String] Account ID or code (use prefix: `code-`, e.g. `code-bob`).
274
- # @param body [Requests::LineItemCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::LineItemCreate}
274
+ # @param body [Requests::LineItemCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::LineItemCreate}
275
275
  # @return [Resources::LineItem] Returns the new line item.
276
276
  def create_line_item(account_id:, body:)
277
277
  path = interpolate_path("/sites/{site_id}/accounts/{account_id}/line_items", site_id: site_id, account_id: account_id)
@@ -316,7 +316,7 @@ module Recurly
316
316
  # Create a new shipping address for the account
317
317
  #
318
318
  # @param account_id [String] Account ID or code (use prefix: `code-`, e.g. `code-bob`).
319
- # @param body [Requests::ShippingAddressCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::ShippingAddressCreate}
319
+ # @param body [Requests::ShippingAddressCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::ShippingAddressCreate}
320
320
  # @return [Resources::ShippingAddress] Returns the new shipping address.
321
321
  def create_shipping_address(account_id:, body:)
322
322
  path = interpolate_path("/sites/{site_id}/accounts/{account_id}/shipping_addresses", site_id: site_id, account_id: account_id)
@@ -337,7 +337,7 @@ module Recurly
337
337
  #
338
338
  # @param account_id [String] Account ID or code (use prefix: `code-`, e.g. `code-bob`).
339
339
  # @param shipping_address_id [String] Shipping Address ID.
340
- # @param body [Requests::ShippingAddressUpdate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::ShippingAddressUpdate}
340
+ # @param body [Requests::ShippingAddressUpdate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::ShippingAddressUpdate}
341
341
  # @return [Resources::ShippingAddress] The updated shipping address.
342
342
  def update_shipping_address(account_id:, shipping_address_id:, body:)
343
343
  path = interpolate_path("/sites/{site_id}/accounts/{account_id}/shipping_addresses/{shipping_address_id}", site_id: site_id, account_id: account_id, shipping_address_id: shipping_address_id)
@@ -416,7 +416,7 @@ module Recurly
416
416
 
417
417
  # Create a new coupon
418
418
  #
419
- # @param body [Requests::CreateCoupon] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::CreateCoupon}
419
+ # @param body [Requests::CreateCoupon] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::CreateCoupon}
420
420
  # @return [Resources::Coupon] A new coupon.
421
421
  def create_coupon(body:)
422
422
  path = interpolate_path("/sites/{site_id}/coupons", site_id: site_id)
@@ -435,7 +435,7 @@ module Recurly
435
435
  # Update an active coupon
436
436
  #
437
437
  # @param coupon_id [String] Coupon ID or code (use prefix: `code-`, e.g. `code-10off`).
438
- # @param body [Requests::UpdateCoupon] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::UpdateCoupon}
438
+ # @param body [Requests::UpdateCoupon] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::UpdateCoupon}
439
439
  # @return [Resources::Coupon] The updated coupon.
440
440
  def update_coupon(coupon_id:, body:)
441
441
  path = interpolate_path("/sites/{site_id}/coupons/{coupon_id}", site_id: site_id, coupon_id: coupon_id)
@@ -579,7 +579,7 @@ module Recurly
579
579
  # Refund an invoice
580
580
  #
581
581
  # @param invoice_id [String] Invoice ID or number (use prefix: `number-`, e.g. `number-1000`).
582
- # @param body [Requests::InvoiceRefund] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::InvoiceRefund}
582
+ # @param body [Requests::InvoiceRefund] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::InvoiceRefund}
583
583
  # @return [Resources::Invoice] Returns the new credit invoice.
584
584
  def refund_invoice(invoice_id:, body:)
585
585
  path = interpolate_path("/sites/{site_id}/invoices/{invoice_id}/refund", site_id: site_id, invoice_id: invoice_id)
@@ -637,7 +637,7 @@ module Recurly
637
637
 
638
638
  # Create a plan
639
639
  #
640
- # @param body [Requests::PlanCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::PlanCreate}
640
+ # @param body [Requests::PlanCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::PlanCreate}
641
641
  # @return [Resources::Plan] A plan.
642
642
  def create_plan(body:)
643
643
  path = interpolate_path("/sites/{site_id}/plans", site_id: site_id)
@@ -656,7 +656,7 @@ module Recurly
656
656
  # Update a plan
657
657
  #
658
658
  # @param plan_id [String] Plan ID or code (use prefix: `code-`, e.g. `code-gold`).
659
- # @param body [Requests::PlanUpdate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::PlanUpdate}
659
+ # @param body [Requests::PlanUpdate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::PlanUpdate}
660
660
  # @return [Resources::Plan] A plan.
661
661
  def update_plan(plan_id:, body:)
662
662
  path = interpolate_path("/sites/{site_id}/plans/{plan_id}", site_id: site_id, plan_id: plan_id)
@@ -691,7 +691,7 @@ module Recurly
691
691
  # Create an add-on
692
692
  #
693
693
  # @param plan_id [String] Plan ID or code (use prefix: `code-`, e.g. `code-gold`).
694
- # @param body [Requests::AddOnCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::AddOnCreate}
694
+ # @param body [Requests::AddOnCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::AddOnCreate}
695
695
  # @return [Resources::AddOn] An add-on.
696
696
  def create_plan_add_on(plan_id:, body:)
697
697
  path = interpolate_path("/sites/{site_id}/plans/{plan_id}/add_ons", site_id: site_id, plan_id: plan_id)
@@ -712,7 +712,7 @@ module Recurly
712
712
  #
713
713
  # @param add_on_id [String] Add-on ID or code (use prefix: `code-`, e.g. `code-gold`).
714
714
  # @param plan_id [String] Plan ID or code (use prefix: `code-`, e.g. `code-gold`).
715
- # @param body [Requests::AddOnUpdate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::AddOnUpdate}
715
+ # @param body [Requests::AddOnUpdate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::AddOnUpdate}
716
716
  # @return [Resources::AddOn] An add-on.
717
717
  def update_plan_add_on(add_on_id:, plan_id:, body:)
718
718
  path = interpolate_path("/sites/{site_id}/plans/{plan_id}/add_ons/{add_on_id}", site_id: site_id, add_on_id: add_on_id, plan_id: plan_id)
@@ -770,7 +770,7 @@ module Recurly
770
770
 
771
771
  # Create a new subscription
772
772
  #
773
- # @param body [Requests::SubscriptionCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::SubscriptionCreate}
773
+ # @param body [Requests::SubscriptionCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::SubscriptionCreate}
774
774
  # @return [Resources::Subscription] A subscription.
775
775
  def create_subscription(body:)
776
776
  path = interpolate_path("/sites/{site_id}/subscriptions", site_id: site_id)
@@ -802,7 +802,7 @@ module Recurly
802
802
  # Modify a subscription
803
803
  #
804
804
  # @param subscription_id [String] Subscription ID or UUID (use prefix: `uuid-`, e.g. `uuid-123457890`).
805
- # @param body [Requests::SubscriptionUpdate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::SubscriptionUpdate}
805
+ # @param body [Requests::SubscriptionUpdate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::SubscriptionUpdate}
806
806
  # @return [Resources::Subscription] A subscription.
807
807
  def modify_subscription(subscription_id:, body:)
808
808
  path = interpolate_path("/sites/{site_id}/subscriptions/{subscription_id}", site_id: site_id, subscription_id: subscription_id)
@@ -849,7 +849,7 @@ module Recurly
849
849
  # Create a new subscription change
850
850
  #
851
851
  # @param subscription_id [String] Subscription ID or UUID (use prefix: `uuid-`, e.g. `uuid-123457890`).
852
- # @param body [Requests::SubscriptionChangeCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::Requests::SubscriptionChangeCreate}
852
+ # @param body [Requests::SubscriptionChangeCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::SubscriptionChangeCreate}
853
853
  # @return [Resources::SubscriptionChange] A subscription change.
854
854
  def create_subscription_change(subscription_id:, body:)
855
855
  path = interpolate_path("/sites/{site_id}/subscriptions/{subscription_id}/change", site_id: site_id, subscription_id: subscription_id)
@@ -5,6 +5,7 @@ module Recurly
5
5
  class Request
6
6
  extend Schema::SchemaFactory
7
7
  extend Schema::RequestCaster
8
+ extend Schema::JsonDeserializer
8
9
  include Schema::SchemaValidator
9
10
 
10
11
  attr_reader :attributes
@@ -3,8 +3,8 @@ module Recurly
3
3
  class AccountAcquisition < Resource
4
4
 
5
5
  # @!attribute account
6
- # @return [AccountMini]
7
- define_attribute :account, :AccountMini
6
+ # @return [Account]
7
+ define_attribute :account, :Account
8
8
 
9
9
  # @!attribute campaign
10
10
  # @return [String] An arbitrary identifier for the marketing campaign that led to the acquisition of this account.
@@ -3,8 +3,8 @@ module Recurly
3
3
  class AccountBalance < Resource
4
4
 
5
5
  # @!attribute account
6
- # @return [AccountMini]
7
- define_attribute :account, :AccountMini
6
+ # @return [Account]
7
+ define_attribute :account, :Account
8
8
 
9
9
  # @!attribute balances
10
10
  # @return [Hash] Account balance
@@ -0,0 +1,30 @@
1
+ module Recurly
2
+ module Resources
3
+ class AccountMini < Resource
4
+
5
+ # @!attribute code
6
+ # @return [String] The unique identifier of the account.
7
+ define_attribute :code, String
8
+
9
+ # @!attribute email
10
+ # @return [String] The email address used for communicating with this customer.
11
+ define_attribute :email, String
12
+
13
+ # @!attribute first_name
14
+ # @return [String]
15
+ define_attribute :first_name, String
16
+
17
+ # @!attribute [r] id
18
+ # @return [String]
19
+ define_attribute :id, String, {:read_only => true}
20
+
21
+ # @!attribute last_name
22
+ # @return [String]
23
+ define_attribute :last_name, String
24
+
25
+ # @!attribute [r] object
26
+ # @return [String] Object type
27
+ define_attribute :object, String, {:read_only => true}
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,26 @@
1
+ module Recurly
2
+ module Resources
3
+ class AddOnMini < Resource
4
+
5
+ # @!attribute accounting_code
6
+ # @return [String] Accounting code for invoice line items for this add-on. If no value is provided, it defaults to add-on's code.
7
+ define_attribute :accounting_code, String
8
+
9
+ # @!attribute code
10
+ # @return [String] The unique identifier for the add-on within its plan.
11
+ define_attribute :code, String
12
+
13
+ # @!attribute [r] id
14
+ # @return [String] Add-on ID
15
+ define_attribute :id, String, {:read_only => true}
16
+
17
+ # @!attribute name
18
+ # @return [String] Describes your add-on and will appear in subscribers' invoices.
19
+ define_attribute :name, String
20
+
21
+ # @!attribute [r] object
22
+ # @return [String] Object type
23
+ define_attribute :object, String, {:read_only => true}
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,38 @@
1
+ module Recurly
2
+ module Resources
3
+ class CouponMini < Resource
4
+
5
+ # @!attribute code
6
+ # @return [String] The code the customer enters to redeem the coupon.
7
+ define_attribute :code, String
8
+
9
+ # @!attribute coupon_type
10
+ # @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.
11
+ define_attribute :coupon_type, String, {:enum => ["single_code", "bulk"]}
12
+
13
+ # @!attribute discount
14
+ # @return [CouponDiscount]
15
+ define_attribute :discount, :CouponDiscount
16
+
17
+ # @!attribute expired_at
18
+ # @return [DateTime] The date and time the coupon was expired early or reached its `max_redemptions`.
19
+ define_attribute :expired_at, DateTime
20
+
21
+ # @!attribute [r] id
22
+ # @return [String] Coupon ID
23
+ define_attribute :id, String, {:read_only => true}
24
+
25
+ # @!attribute name
26
+ # @return [String] The internal name for the coupon.
27
+ define_attribute :name, String
28
+
29
+ # @!attribute [r] object
30
+ # @return [String] Object type
31
+ define_attribute :object, String, {:read_only => true}
32
+
33
+ # @!attribute state
34
+ # @return [String] Indicates if the coupon is redeemable, and if it is not, why.
35
+ define_attribute :state, String, {:enum => ["redeemable", "maxed_out", "expired"]}
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,30 @@
1
+ module Recurly
2
+ module Resources
3
+ class CouponRedemptionMini < Resource
4
+
5
+ # @!attribute coupon
6
+ # @return [Coupon]
7
+ define_attribute :coupon, :Coupon
8
+
9
+ # @!attribute [r] created_at
10
+ # @return [DateTime] Created at
11
+ define_attribute :created_at, DateTime, {:read_only => true}
12
+
13
+ # @!attribute discounted
14
+ # @return [String] The amount that was discounted upon the application of the coupon, formatted with the currency.
15
+ define_attribute :discounted, String
16
+
17
+ # @!attribute [r] id
18
+ # @return [String] Coupon Redemption ID
19
+ define_attribute :id, String, {:read_only => true}
20
+
21
+ # @!attribute [r] object
22
+ # @return [String] Will always be `coupon`.
23
+ define_attribute :object, String, {:read_only => true}
24
+
25
+ # @!attribute state
26
+ # @return [String] Invoice state
27
+ define_attribute :state, String, {:enum => ["active", "inactive"]}
28
+ end
29
+ end
30
+ end
@@ -3,8 +3,8 @@ module Recurly
3
3
  class CreditPayment < Resource
4
4
 
5
5
  # @!attribute account
6
- # @return [AccountMini]
7
- define_attribute :account, :AccountMini
6
+ # @return [Account]
7
+ define_attribute :account, :Account
8
8
 
9
9
  # @!attribute action
10
10
  # @return [String] The action for which the credit was created.
@@ -15,8 +15,8 @@ module Recurly
15
15
  define_attribute :amount, Float
16
16
 
17
17
  # @!attribute applied_to_invoice
18
- # @return [InvoiceMini]
19
- define_attribute :applied_to_invoice, :InvoiceMini
18
+ # @return [Invoice]
19
+ define_attribute :applied_to_invoice, :Invoice
20
20
 
21
21
  # @!attribute [r] created_at
22
22
  # @return [DateTime] Created at
@@ -39,8 +39,8 @@ module Recurly
39
39
  define_attribute :original_credit_payment_id, String
40
40
 
41
41
  # @!attribute original_invoice
42
- # @return [InvoiceMini]
43
- define_attribute :original_invoice, :InvoiceMini
42
+ # @return [Invoice]
43
+ define_attribute :original_invoice, :Invoice
44
44
 
45
45
  # @!attribute refund_transaction
46
46
  # @return [Transaction]
@@ -3,8 +3,8 @@ module Recurly
3
3
  class Invoice < Resource
4
4
 
5
5
  # @!attribute account
6
- # @return [AccountMini]
7
- define_attribute :account, :AccountMini
6
+ # @return [Account]
7
+ define_attribute :account, :Account
8
8
 
9
9
  # @!attribute address
10
10
  # @return [Address]
@@ -0,0 +1,26 @@
1
+ module Recurly
2
+ module Resources
3
+ class InvoiceMini < Resource
4
+
5
+ # @!attribute id
6
+ # @return [String] Invoice ID
7
+ define_attribute :id, String
8
+
9
+ # @!attribute number
10
+ # @return [String] Invoice number
11
+ define_attribute :number, String
12
+
13
+ # @!attribute object
14
+ # @return [String] Object type
15
+ define_attribute :object, String
16
+
17
+ # @!attribute state
18
+ # @return [String] Invoice state
19
+ define_attribute :state, String, {:enum => ["pending", "processing", "past_due", "paid", "failed"]}
20
+
21
+ # @!attribute type
22
+ # @return [String] Invoice type
23
+ define_attribute :type, String, {:enum => ["charge", "credit", "legacy"]}
24
+ end
25
+ end
26
+ end
@@ -3,8 +3,8 @@ module Recurly
3
3
  class LineItem < Resource
4
4
 
5
5
  # @!attribute account
6
- # @return [AccountMini]
7
- define_attribute :account, :AccountMini
6
+ # @return [Account]
7
+ define_attribute :account, :Account
8
8
 
9
9
  # @!attribute accounting_code
10
10
  # @return [String] Internal accounting code to help you reconcile your revenue to the correct ledger. Line items created as part of a subscription invoice will use the plan or add-on's accounting code, otherwise the value will only be present if you define an accounting code when creating the line item.
@@ -0,0 +1,22 @@
1
+ module Recurly
2
+ module Resources
3
+ class PlanMini < Resource
4
+
5
+ # @!attribute code
6
+ # @return [String] Unique code to identify the plan. This is used in Hosted Payment Page URLs and in the invoice exports.
7
+ define_attribute :code, String
8
+
9
+ # @!attribute [r] id
10
+ # @return [String] Plan ID
11
+ define_attribute :id, String, {:read_only => true}
12
+
13
+ # @!attribute name
14
+ # @return [String] This name describes your plan and will appear on the Hosted Payment Page and the subscriber's invoice.
15
+ define_attribute :name, String
16
+
17
+ # @!attribute [r] object
18
+ # @return [String] Object type
19
+ define_attribute :object, String, {:read_only => true}
20
+ end
21
+ end
22
+ end
@@ -3,8 +3,8 @@ module Recurly
3
3
  class Subscription < Resource
4
4
 
5
5
  # @!attribute account
6
- # @return [AccountMini]
7
- define_attribute :account, :AccountMini
6
+ # @return [Account]
7
+ define_attribute :account, :Account
8
8
 
9
9
  # @!attribute activated_at
10
10
  # @return [DateTime] Activated at
@@ -79,8 +79,8 @@ module Recurly
79
79
  define_attribute :pending_change, :SubscriptionChange
80
80
 
81
81
  # @!attribute plan
82
- # @return [PlanMini]
83
- define_attribute :plan, :PlanMini
82
+ # @return [Plan]
83
+ define_attribute :plan, :Plan
84
84
 
85
85
  # @!attribute po_number
86
86
  # @return [String] For manual invoicing, this identifies the PO number associated with the subscription.
@@ -3,8 +3,8 @@ module Recurly
3
3
  class SubscriptionAddOn < Resource
4
4
 
5
5
  # @!attribute add_on
6
- # @return [AddOnMini]
7
- define_attribute :add_on, :AddOnMini
6
+ # @return [AddOn]
7
+ define_attribute :add_on, :AddOn
8
8
 
9
9
  # @!attribute created_at
10
10
  # @return [DateTime] Created at
@@ -31,8 +31,8 @@ module Recurly
31
31
  define_attribute :object, String
32
32
 
33
33
  # @!attribute plan
34
- # @return [PlanMini]
35
- define_attribute :plan, :PlanMini
34
+ # @return [Plan]
35
+ define_attribute :plan, :Plan
36
36
 
37
37
  # @!attribute quantity
38
38
  # @return [Integer] Subscription quantity
@@ -3,8 +3,8 @@ module Recurly
3
3
  class Transaction < Resource
4
4
 
5
5
  # @!attribute account
6
- # @return [AccountMini]
7
- define_attribute :account, :AccountMini
6
+ # @return [Account]
7
+ define_attribute :account, :Account
8
8
 
9
9
  # @!attribute amount
10
10
  # @return [Float] Total transaction amount sent to the payment gateway.
@@ -71,8 +71,8 @@ module Recurly
71
71
  define_attribute :id, String
72
72
 
73
73
  # @!attribute invoice
74
- # @return [InvoiceMini]
75
- define_attribute :invoice, :InvoiceMini
74
+ # @return [Invoice]
75
+ define_attribute :invoice, :Invoice
76
76
 
77
77
  # @!attribute ip_address_country
78
78
  # @return [String] IP address's country
@@ -139,8 +139,8 @@ module Recurly
139
139
  define_attribute :voided_at, DateTime
140
140
 
141
141
  # @!attribute voided_by_invoice
142
- # @return [InvoiceMini]
143
- define_attribute :voided_by_invoice, :InvoiceMini
142
+ # @return [Invoice]
143
+ define_attribute :voided_by_invoice, :Invoice
144
144
  end
145
145
  end
146
146
  end
@@ -42,7 +42,9 @@ module Recurly
42
42
  def self.get_recurly_class(type)
43
43
  raise ArgumentError, "#{type.inspect} must be a symbol but is a #{type.class}" unless type.is_a?(Symbol)
44
44
 
45
- if Requests.const_defined?(type)
45
+ if type == :Address
46
+ Resources::Address
47
+ elsif Requests.const_defined?(type)
46
48
  Requests.const_get(type)
47
49
  elsif Resources.const_defined?(type)
48
50
  Resources.const_get(type)
@@ -100,6 +102,11 @@ module Recurly
100
102
  def recurly_class
101
103
  Schema.get_recurly_class(type == Array ? options[:item_type] : type)
102
104
  end
105
+
106
+ def is_primitive?
107
+ t = type == Array ? options[:item_type] : type
108
+ t.is_a?(Class) || t == :Boolean
109
+ end
103
110
  end
104
111
 
105
112
  private_constant :List
@@ -20,21 +20,25 @@ module Recurly
20
20
  attributes.each do |attr_name, val|
21
21
  next if attr_name == 'object'
22
22
 
23
+ schema_attr = self.schema.get_attribute(attr_name)
24
+
23
25
  # if the Hash val is a recurly type, parse it into a Resource
24
- if val.is_a?(Hash) && klazz = JSONParser.recurly_class(val['object'])
25
- val = klazz.from_json(val)
26
- elsif val.is_a?(Array)
27
- val = val.map do |e|
28
- if e.is_a?(Hash) && klazz = JSONParser.recurly_class(e['object'])
29
- klazz.from_json(e)
30
- else
31
- e
32
- end
33
- end
34
- elsif attr_name.end_with?("_at") && val && val.is_a?(String)
35
- # TODO should use the schema to determine this probably
36
- val = DateTime.parse(val)
37
- end
26
+ val = if val.is_a?(Hash) && !schema_attr.is_primitive?
27
+ schema_attr.recurly_class.from_json(val)
28
+ elsif val.is_a?(Array)
29
+ val.map do |e|
30
+ if e.is_a?(Hash) && !schema_attr.is_primitive?
31
+ schema_attr.recurly_class.from_json(e)
32
+ else
33
+ e
34
+ end
35
+ end
36
+ elsif attr_name.end_with?("_at") && val && val.is_a?(String)
37
+ # TODO should use the schema to determine this probably
38
+ DateTime.parse(val)
39
+ else
40
+ val
41
+ end
38
42
 
39
43
  writer = "#{attr_name}="
40
44
 
@@ -36,7 +36,7 @@ module Recurly
36
36
 
37
37
  # Validates an individual attribute
38
38
  def validate_attribute!(schema_attr, val)
39
- if !schema_attr.type.is_a?(Symbol) && val.class != schema_attr.type
39
+ unless schema_attr.type.is_a?(Symbol) || val.is_a?(schema_attr.type)
40
40
  expected = case schema_attr.type
41
41
  when Array
42
42
  "Array of #{schema_attr.type.item_type}s"
@@ -1,3 +1,3 @@
1
1
  module Recurly
2
- VERSION = "3.0.0.beta.1"
2
+ VERSION = "3.0.0.beta.2"
3
3
  end
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  # spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.add_dependency "faraday", "~> 0.13"
24
+ spec.add_dependency "faraday", "~> 0.12"
25
25
 
26
26
  spec.add_development_dependency "bundler", "~> 1.14"
27
27
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recurly
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta.1
4
+ version: 3.0.0.beta.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Recurly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-13 00:00:00.000000000 Z
11
+ date: 2018-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.13'
19
+ version: '0.12'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.13'
26
+ version: '0.12'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -170,20 +170,26 @@ files:
170
170
  - lib/recurly/resources/account.rb
171
171
  - lib/recurly/resources/account_acquisition.rb
172
172
  - lib/recurly/resources/account_balance.rb
173
+ - lib/recurly/resources/account_mini.rb
173
174
  - lib/recurly/resources/account_note.rb
174
175
  - lib/recurly/resources/add_on.rb
176
+ - lib/recurly/resources/add_on_mini.rb
175
177
  - lib/recurly/resources/address.rb
176
178
  - lib/recurly/resources/billing_info.rb
177
179
  - lib/recurly/resources/coupon.rb
178
180
  - lib/recurly/resources/coupon_discount.rb
181
+ - lib/recurly/resources/coupon_mini.rb
179
182
  - lib/recurly/resources/coupon_redemption.rb
183
+ - lib/recurly/resources/coupon_redemption_mini.rb
180
184
  - lib/recurly/resources/credit_payment.rb
181
185
  - lib/recurly/resources/error.rb
182
186
  - lib/recurly/resources/error_may_have_transaction.rb
183
187
  - lib/recurly/resources/invoice.rb
184
188
  - lib/recurly/resources/invoice_collection.rb
189
+ - lib/recurly/resources/invoice_mini.rb
185
190
  - lib/recurly/resources/line_item.rb
186
191
  - lib/recurly/resources/plan.rb
192
+ - lib/recurly/resources/plan_mini.rb
187
193
  - lib/recurly/resources/settings.rb
188
194
  - lib/recurly/resources/shipping_address.rb
189
195
  - lib/recurly/resources/site.rb