recurly 4.76.0 → 4.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 291cd81b722143bec2a0b2b57499e482c895d81036cda7bda1d7b6d3a808f373
4
- data.tar.gz: d1e78b56aa492134c873a2cda000596bf54f8b3da6ff44168d676e2ca3a129dd
3
+ metadata.gz: 39f517bfc1451d42ff2d1b8b7bcf5b2f0c6deff2ddeaf36a28e60b433b7bf166
4
+ data.tar.gz: 9fc9d18297e06fba3d530cd421e684ed601695beeb1bfb3865f9e9daf5b2f9ae
5
5
  SHA512:
6
- metadata.gz: 1fbe21003f2a2f0dcf4d5fb94a0795fab7664df5755f6c6085823ca76ca96a5ea4541700f970002cbefbbdcb380cedaa9b4b29409088d34df807dc501fe50434
7
- data.tar.gz: a57e93f4e9eed80b4fa7428b8287f89b314b7c86f7949f3bd8ec0f96ac86ac018f6033b6d7a38c6ab5efe03fa189c36afad1cac78e47891a031027a90fe15e82
6
+ metadata.gz: 193603f1ee150a01897ea7d40956874e4e0a208e6e6363a1cd5a89fdedb67e0f2f54a441dbdaaefe4b8444888cfaf50c1e7fa22be2c01a02931aade952d402c0
7
+ data.tar.gz: ac3eb127e95472768420ba6bf751ab8bdc37b770be64475e7f476f5ac725ca72a57d6cb46973286e1f6e0f76cea95533254248d10d937d0bfcb5603f77087f7f
data/.bumpversion.cfg CHANGED
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 4.76.0
2
+ current_version = 4.77.0
3
3
  parse = (?P<major>\d+)
4
4
  \.(?P<minor>\d+)
5
5
  \.(?P<patch>\d+)
@@ -11,7 +11,7 @@ jobs:
11
11
  matrix:
12
12
  ruby: [2.4, 2.5, 2.6, 2.7, 3.0]
13
13
  steps:
14
- - uses: actions/checkout@v3
14
+ - uses: actions/checkout@v6.0.3
15
15
  - name: Setup ruby
16
16
  uses: ruby/setup-ruby@v1
17
17
  with:
@@ -8,7 +8,7 @@ jobs:
8
8
  name: Publish
9
9
  runs-on: ubuntu-latest
10
10
  steps:
11
- - uses: actions/checkout@v2
11
+ - uses: actions/checkout@v6.0.3
12
12
 
13
13
  - uses: ruby/setup-ruby@v1
14
14
  with:
@@ -19,7 +19,7 @@ jobs:
19
19
 
20
20
  - name: Deploy
21
21
  if: success()
22
- uses: crazy-max/ghaction-github-pages@v1
22
+ uses: crazy-max/ghaction-github-pages@v5.0.0
23
23
  with:
24
24
  target_branch: gh-pages
25
25
  build_dir: ./doc
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.77.0](https://github.com/recurly/recurly-client-ruby/tree/4.77.0) (2026-06-10)
4
+
5
+ [Full Changelog](https://github.com/recurly/recurly-client-ruby/compare/4.76.0...4.77.0)
6
+
7
+
8
+ **Merged Pull Requests**
9
+
10
+ - Generated Latest Changes for v2021-02-25 [#958](https://github.com/recurly/recurly-client-ruby/pull/958) ([recurly-integrations](https://github.com/recurly-integrations))
11
+ - ci: Remediate Node.js 20 deprecation in GitHub Actions workflows [#957](https://github.com/recurly/recurly-client-ruby/pull/957) ([jparrabedoya](https://github.com/jparrabedoya))
12
+
13
+
14
+
3
15
  ## [4.76.0](https://github.com/recurly/recurly-client-ruby/tree/4.76.0) (2026-05-20)
4
16
 
5
17
  [Full Changelog](https://github.com/recurly/recurly-client-ruby/compare/4.75.0...4.76.0)
data/GETTING_STARTED.md CHANGED
@@ -5,7 +5,7 @@ This repository houses the official ruby client for Recurly's V3 API.
5
5
  In your Gemfile, add `recurly` as a dependency.
6
6
 
7
7
  ```ruby
8
- gem 'recurly', '~> 4.76'
8
+ gem 'recurly', '~> 4.77'
9
9
  ```
10
10
 
11
11
  > *Note*: We try to follow [semantic versioning](https://semver.org/) and will only apply breaking changes to major versions.
@@ -3037,6 +3037,20 @@ module Recurly
3037
3037
  post(path, body, Requests::InvoiceRefund, **options)
3038
3038
  end
3039
3039
 
3040
+ # Create an invoice for revenue recovery
3041
+ #
3042
+ # {https://developers.recurly.com/api/v2021-02-25#operation/create_invoice_retry create_invoice_retry api documentation}
3043
+ #
3044
+ # @param body [Requests::RecoveryInvoiceCreate] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::RecoveryInvoiceCreate}
3045
+ # @param params [Hash] Optional query string parameters:
3046
+ #
3047
+ # @return [Resources::InvoiceCollection] Returns the new invoices.
3048
+ #
3049
+ def create_invoice_retry(body:, **options)
3050
+ path = "/invoices/recovery"
3051
+ post(path, body, Requests::RecoveryInvoiceCreate, **options)
3052
+ end
3053
+
3040
3054
  # List a site's line items
3041
3055
  #
3042
3056
  # {https://developers.recurly.com/api/v2021-02-25#operation/list_line_items list_line_items api documentation}
@@ -47,7 +47,7 @@ module Recurly
47
47
  define_attribute :free_trial_amount, Integer
48
48
 
49
49
  # @!attribute free_trial_unit
50
- # @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`.
50
+ # @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`. Use `billing_period` to grant a free trial for a number of billing cycles.
51
51
  define_attribute :free_trial_unit, String
52
52
 
53
53
  # @!attribute hosted_description
@@ -91,7 +91,7 @@ module Recurly
91
91
  define_attribute :temporal_amount, Integer
92
92
 
93
93
  # @!attribute temporal_unit
94
- # @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. Use "billing_period" to apply the coupon for a fixed number of billing cycles. Requires `redemption_resource=subscription`.
94
+ # @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. Use "billing_period" to apply the coupon for a fixed number of billing cycles. Requires `redemption_resource=subscription`. Not compatible with `discount_type=free_trial`; use `free_trial_unit=billing_period` and `free_trial_amount` instead.
95
95
  define_attribute :temporal_unit, String
96
96
 
97
97
  # @!attribute unique_code_template
@@ -0,0 +1,34 @@
1
+ # This file is automatically created by Recurly's OpenAPI generation process
2
+ # and thus any edits you make by hand will be lost. If you wish to make a
3
+ # change to this file, please create a Github issue explaining the changes you
4
+ # need and we will usher them to the appropriate places.
5
+ module Recurly
6
+ module Requests
7
+ class RecoveryAccountCreate < Request
8
+
9
+ # @!attribute address
10
+ # @return [RecoveryAddress]
11
+ define_attribute :address, :RecoveryAddress
12
+
13
+ # @!attribute billing_infos
14
+ # @return [Array[RecoveryBillingInfoCreate]] If the premium Wallet feature is enabled, more than one payment method can be associated with an account, and one can be designated as a primary and one as a backup. Without the Wallet feature, only one payment method will be accepted.
15
+ define_attribute :billing_infos, Array, { :item_type => :RecoveryBillingInfoCreate }
16
+
17
+ # @!attribute code
18
+ # @return [String] The unique identifier of the account. This cannot be changed once the account is created.
19
+ define_attribute :code, String
20
+
21
+ # @!attribute custom_fields
22
+ # @return [Array[CustomField]] The custom fields will only be altered when they are included in a request. Sending an empty array will not remove any existing values. To remove a field send the name with a null or empty value.
23
+ define_attribute :custom_fields, Array, { :item_type => :CustomField }
24
+
25
+ # @!attribute dunning_campaign_id
26
+ # @return [String] Unique ID to identify a dunning campaign. Used to specify if a non-default dunning campaign should be assigned to this account. For sites without multiple dunning campaigns enabled, the default dunning campaign will always be used.
27
+ define_attribute :dunning_campaign_id, String
28
+
29
+ # @!attribute email
30
+ # @return [String] The email address used for communicating with this customer.
31
+ define_attribute :email, String
32
+ end
33
+ end
34
+ 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 Requests
7
+ class RecoveryAddress < Request
8
+
9
+ # @!attribute city
10
+ # @return [String] City
11
+ define_attribute :city, String
12
+
13
+ # @!attribute country
14
+ # @return [String] Country, 2-letter ISO 3166-1 alpha-2 code.
15
+ define_attribute :country, String
16
+
17
+ # @!attribute phone
18
+ # @return [String] Phone number
19
+ define_attribute :phone, String
20
+
21
+ # @!attribute postal_code
22
+ # @return [String] Zip or postal code.
23
+ define_attribute :postal_code, String
24
+
25
+ # @!attribute region
26
+ # @return [String] State or province.
27
+ define_attribute :region, String
28
+
29
+ # @!attribute street1
30
+ # @return [String] Street 1
31
+ define_attribute :street1, String
32
+
33
+ # @!attribute street2
34
+ # @return [String] Street 2
35
+ define_attribute :street2, String
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,54 @@
1
+ # This file is automatically created by Recurly's OpenAPI generation process
2
+ # and thus any edits you make by hand will be lost. If you wish to make a
3
+ # change to this file, please create a Github issue explaining the changes you
4
+ # need and we will usher them to the appropriate places.
5
+ module Recurly
6
+ module Requests
7
+ class RecoveryBillingInfoCreate < Request
8
+
9
+ # @!attribute address
10
+ # @return [RecoveryAddress]
11
+ define_attribute :address, :RecoveryAddress
12
+
13
+ # @!attribute backup_payment_method
14
+ # @return [Boolean] The `backup_payment_method` field is used to designate a billing info as a backup on the account that will be tried if the initial billing info used for an invoice is declined. All payment methods, including the billing info marked `primary_payment_method` can be set as a backup. An account can have a maximum of 1 backup, if a user sets a different payment method as a backup, the existing backup will no longer be marked as such.
15
+ define_attribute :backup_payment_method, :Boolean
16
+
17
+ # @!attribute company
18
+ # @return [String] Company name
19
+ define_attribute :company, String
20
+
21
+ # @!attribute first_name
22
+ # @return [String] First name
23
+ define_attribute :first_name, String
24
+
25
+ # @!attribute gateway_code
26
+ # @return [String] An identifier for a specific payment gateway.
27
+ define_attribute :gateway_code, String
28
+
29
+ # @!attribute ip_address
30
+ # @return [String] *STRONGLY RECOMMENDED* Customer's IP address when updating their billing information.
31
+ define_attribute :ip_address, String
32
+
33
+ # @!attribute last_name
34
+ # @return [String] Last name
35
+ define_attribute :last_name, String
36
+
37
+ # @!attribute network_transaction_id
38
+ # @return [String] Network transaction ID from the previous customer-in-session subscription signup or billing info storage. - 10-15 alphanumeric characters for Mastercard - 14-15 alphanumeric for Visa - 15 digits for all other brands - 16 alphanumeric characters for Cartes Bancaires, which are processed as Visa or Mastercard
39
+ define_attribute :network_transaction_id, String
40
+
41
+ # @!attribute payment_gateway_references
42
+ # @return [Array[PaymentGatewayReferences]] Array of Payment Gateway References, each a reference to a third-party gateway object of varying types.
43
+ define_attribute :payment_gateway_references, Array, { :item_type => :PaymentGatewayReferences }
44
+
45
+ # @!attribute primary_payment_method
46
+ # @return [Boolean] The `primary_payment_method` field is used to designate the primary billing info on the account. An account can have a maximum of 1 primary. If a user sets a different payment method as a primary, then the existing primary will no longer be marked as such.
47
+ define_attribute :primary_payment_method, :Boolean
48
+
49
+ # @!attribute transactions
50
+ # @return [Array[RecoveryTransactionCreate]] Transactions from previous collection attempts for this payment method.
51
+ define_attribute :transactions, Array, { :item_type => :RecoveryTransactionCreate }
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,34 @@
1
+ # This file is automatically created by Recurly's OpenAPI generation process
2
+ # and thus any edits you make by hand will be lost. If you wish to make a
3
+ # change to this file, please create a Github issue explaining the changes you
4
+ # need and we will usher them to the appropriate places.
5
+ module Recurly
6
+ module Requests
7
+ class RecoveryInvoiceCreate < Request
8
+
9
+ # @!attribute account
10
+ # @return [RecoveryAccountCreate]
11
+ define_attribute :account, :RecoveryAccountCreate
12
+
13
+ # @!attribute currency
14
+ # @return [String] 3-letter ISO 4217 currency code.
15
+ define_attribute :currency, String
16
+
17
+ # @!attribute due_at
18
+ # @return [DateTime] Date invoice was originally due. Must be in the past.
19
+ define_attribute :due_at, DateTime
20
+
21
+ # @!attribute external_recovery_eligible
22
+ # @return [Boolean] Must be set to `true` to acknowledge that the invoice is eligible for external recovery. Requests with `false`, omitted, or non-boolean values will be rejected.
23
+ define_attribute :external_recovery_eligible, :Boolean
24
+
25
+ # @!attribute line_items
26
+ # @return [Array[RecoveryLineItemCreate]] Line items to include on the invoice. Currency is specified at the root level and must not be included in individual line items.
27
+ define_attribute :line_items, Array, { :item_type => :RecoveryLineItemCreate }
28
+
29
+ # @!attribute po_number
30
+ # @return [String] This identifies the PO number associated with the subscription.
31
+ define_attribute :po_number, String
32
+ end
33
+ end
34
+ 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 Requests
7
+ class RecoveryLineItemCreate < Request
8
+
9
+ # @!attribute custom_fields
10
+ # @return [Array[CustomField]] The custom fields will only be altered when they are included in a request. Sending an empty array will not remove any existing values. To remove a field send the name with a null or empty value.
11
+ define_attribute :custom_fields, Array, { :item_type => :CustomField }
12
+
13
+ # @!attribute description
14
+ # @return [String] Description that appears on the invoice.
15
+ define_attribute :description, String
16
+
17
+ # @!attribute harmonized_system_code
18
+ # @return [String] The Harmonized System (HS) code is an internationally standardized system of names and numbers to classify traded products. The HS code, sometimes called Commodity Code, is used by customs authorities around the world to identify products when assessing duties and taxes. The HS code may also be referred to as the tariff code or customs code. Values should contain only digits and decimals.
19
+ define_attribute :harmonized_system_code, String
20
+
21
+ # @!attribute product_code
22
+ # @return [String] Optional field to track a product code or SKU for the line item. This can be used to later reporting on product purchases.
23
+ define_attribute :product_code, String
24
+
25
+ # @!attribute quantity
26
+ # @return [Integer] This number will be multiplied by the unit amount to compute the subtotal before any discounts or taxes.
27
+ define_attribute :quantity, Integer
28
+
29
+ # @!attribute tax
30
+ # @return [Float] The tax amount for the line item.
31
+ define_attribute :tax, Float
32
+
33
+ # @!attribute unit_amount
34
+ # @return [Float] A positive or negative amount will result in a positive `unit_amount`.
35
+ define_attribute :unit_amount, Float
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,22 @@
1
+ # This file is automatically created by Recurly's OpenAPI generation process
2
+ # and thus any edits you make by hand will be lost. If you wish to make a
3
+ # change to this file, please create a Github issue explaining the changes you
4
+ # need and we will usher them to the appropriate places.
5
+ module Recurly
6
+ module Requests
7
+ class RecoveryTransactionCreate < Request
8
+
9
+ # @!attribute attempted_collection_date
10
+ # @return [DateTime] The date the original payment collection was attempted.
11
+ define_attribute :attempted_collection_date, DateTime
12
+
13
+ # @!attribute gateway_error_code
14
+ # @return [String] The error code returned by the payment gateway for the original payment collection attempt.
15
+ define_attribute :gateway_error_code, String
16
+
17
+ # @!attribute merchant_advice_code
18
+ # @return [String] The advice code returned by the payment gateway for the original payment collection attempt. This field is only applicable for certain gateways.
19
+ define_attribute :merchant_advice_code, String
20
+ end
21
+ end
22
+ end
@@ -11,7 +11,7 @@ module Recurly
11
11
  define_attribute :length, Integer
12
12
 
13
13
  # @!attribute unit
14
- # @return [String] Temporal unit of the free trial
14
+ # @return [String] Temporal unit of the free trial. When `billing_period`, `length` represents the number of billing cycles.
15
15
  define_attribute :unit, String
16
16
  end
17
17
  end
@@ -34,6 +34,10 @@ module Recurly
34
34
  # @return [String] Will always be `coupon`.
35
35
  define_attribute :object, String
36
36
 
37
+ # @!attribute remaining_duration
38
+ # @return [CouponRedemptionRemainingDuration]
39
+ define_attribute :remaining_duration, :CouponRedemptionRemainingDuration
40
+
37
41
  # @!attribute removed_at
38
42
  # @return [DateTime] The date and time the redemption was removed from the account (un-redeemed).
39
43
  define_attribute :removed_at, DateTime
@@ -26,8 +26,12 @@ module Recurly
26
26
  # @return [String] Will always be `coupon`.
27
27
  define_attribute :object, String
28
28
 
29
+ # @!attribute remaining_duration
30
+ # @return [CouponRedemptionRemainingDuration]
31
+ define_attribute :remaining_duration, :CouponRedemptionRemainingDuration
32
+
29
33
  # @!attribute state
30
- # @return [String] Invoice state
34
+ # @return [String] Coupon Redemption state
31
35
  define_attribute :state, String
32
36
  end
33
37
  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 CouponRedemptionRemainingDuration < Resource
8
+
9
+ # @!attribute expires_at
10
+ # @return [DateTime] Present when `type` is `temporal`. The datetime after which this redemption will no longer apply.
11
+ define_attribute :expires_at, DateTime
12
+
13
+ # @!attribute type
14
+ # @return [String] The coupon's duration type. `temporal` includes an `expires_at` timestamp. `forever` and `single_use` have no additional fields.
15
+ define_attribute :type, String
16
+ end
17
+ end
18
+ end
@@ -34,6 +34,10 @@ module Recurly
34
34
  # @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.
35
35
  define_attribute :collection_method, String
36
36
 
37
+ # @!attribute coupon_redemptions
38
+ # @return [Array[CouponRedemptionMini]] The coupon redemptions applied to this invoice.
39
+ define_attribute :coupon_redemptions, Array, { :item_type => :CouponRedemptionMini }
40
+
37
41
  # @!attribute created_at
38
42
  # @return [DateTime] Created at
39
43
  define_attribute :created_at, DateTime
@@ -67,9 +67,13 @@ module Recurly
67
67
  define_attribute :destination_tax_address_source, String
68
68
 
69
69
  # @!attribute discount
70
- # @return [Float] The discount applied to the line item.
70
+ # @return [Float] The sum of all discounts applied to the line item.
71
71
  define_attribute :discount, Float
72
72
 
73
+ # @!attribute discounts
74
+ # @return [Array[LineItemDiscount]] The breakdown of discounts applied to the line item by coupon redemption.
75
+ define_attribute :discounts, Array, { :item_type => :LineItemDiscount }
76
+
73
77
  # @!attribute end_date
74
78
  # @return [DateTime] If this date is provided, it indicates the end of a time range.
75
79
  define_attribute :end_date, DateTime
@@ -0,0 +1,34 @@
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 LineItemDiscount < Resource
8
+
9
+ # @!attribute coupon_id
10
+ # @return [String] The ID of the coupon that generated this discount.
11
+ define_attribute :coupon_id, String
12
+
13
+ # @!attribute coupon_redemption_id
14
+ # @return [String] The ID of the coupon redemption that generated this discount.
15
+ define_attribute :coupon_redemption_id, String
16
+
17
+ # @!attribute currency
18
+ # @return [String] 3-letter ISO 4217 currency code.
19
+ define_attribute :currency, String
20
+
21
+ # @!attribute discount_amount
22
+ # @return [Float] The amount discounted on this line item by this coupon redemption.
23
+ define_attribute :discount_amount, Float
24
+
25
+ # @!attribute object
26
+ # @return [String] Will always be `line_item_discount`.
27
+ define_attribute :object, String
28
+
29
+ # @!attribute order_applied
30
+ # @return [Integer] The order in which this discount was applied when multiple coupons were redeemed.
31
+ define_attribute :order_applied, Integer
32
+ end
33
+ end
34
+ end
@@ -1,3 +1,3 @@
1
1
  module Recurly
2
- VERSION = "4.76.0"
2
+ VERSION = "4.77.0"
3
3
  end
data/openapi/api.yaml CHANGED
@@ -206,6 +206,7 @@ x-tagGroups:
206
206
  - line_item
207
207
  - credit_payment
208
208
  - transaction
209
+ - revenue_recovery
209
210
  - name: Products and Promotions
210
211
  tags:
211
212
  - item
@@ -310,6 +311,9 @@ tags:
310
311
  subscription is created or renewed or a charge is created on the account, Recurly
311
312
  will sum the charges, discount or tax as appropriate, and send the invoice out
312
313
  for collection.
314
+ - name: revenue_recovery
315
+ x-displayName: Revenue Recovery
316
+ description: Revenue recovery
313
317
  - name: line_item
314
318
  x-displayName: Line Item
315
319
  description: Line items are the charges and credits on your customer's invoices.
@@ -10505,6 +10509,51 @@ paths:
10505
10509
  {\n\t\tfmt.Printf(\"Failed validation: %v\", e)\n\t\treturn nil, err\n\t}\n\tfmt.Printf(\"Unexpected
10506
10510
  Recurly error: %v\", e)\n\treturn nil, err\n}\n\nfmt.Printf(\"Refunded Invoice:
10507
10511
  %v\", invoice)"
10512
+ "/invoices/recovery":
10513
+ post:
10514
+ tags:
10515
+ - revenue_recovery
10516
+ operationId: create_invoice_retry
10517
+ summary: Create an invoice for revenue recovery
10518
+ requestBody:
10519
+ content:
10520
+ application/json:
10521
+ schema:
10522
+ "$ref": "#/components/schemas/RecoveryInvoiceCreate"
10523
+ required: true
10524
+ responses:
10525
+ '201':
10526
+ description: Returns the new invoices.
10527
+ content:
10528
+ application/json:
10529
+ schema:
10530
+ "$ref": "#/components/schemas/InvoiceCollection"
10531
+ '400':
10532
+ description: Bad request, perhaps invalid JSON?
10533
+ content:
10534
+ application/json:
10535
+ schema:
10536
+ "$ref": "#/components/schemas/Error"
10537
+ '404':
10538
+ description: Incorrect site ID.
10539
+ content:
10540
+ application/json:
10541
+ schema:
10542
+ "$ref": "#/components/schemas/Error"
10543
+ '422':
10544
+ description: Invalid parameters, no pending line items, or error running
10545
+ the transaction.
10546
+ content:
10547
+ application/json:
10548
+ schema:
10549
+ "$ref": "#/components/schemas/ErrorMayHaveTransaction"
10550
+ default:
10551
+ description: Unexpected error.
10552
+ content:
10553
+ application/json:
10554
+ schema:
10555
+ "$ref": "#/components/schemas/Error"
10556
+ x-code-samples: []
10508
10557
  "/line_items":
10509
10558
  get:
10510
10559
  tags:
@@ -18621,6 +18670,251 @@ components:
18621
18670
  maxLength: 20
18622
18671
  description: Code that represents a geographic entity (location or object).
18623
18672
  Only returned when Vertex or Avalara for Communications is enabled.
18673
+ RecoveryAddress:
18674
+ type: object
18675
+ properties:
18676
+ phone:
18677
+ type: string
18678
+ title: Phone number
18679
+ street1:
18680
+ type: string
18681
+ title: Street 1
18682
+ maxLength: 50
18683
+ street2:
18684
+ type: string
18685
+ title: Street 2
18686
+ maxLength: 50
18687
+ city:
18688
+ type: string
18689
+ title: City
18690
+ region:
18691
+ type: string
18692
+ title: State/Province
18693
+ description: State or province.
18694
+ postal_code:
18695
+ type: string
18696
+ title: Zip/Postal code
18697
+ description: Zip or postal code.
18698
+ country:
18699
+ type: string
18700
+ title: Country
18701
+ description: Country, 2-letter ISO 3166-1 alpha-2 code.
18702
+ RecoveryInvoiceCreate:
18703
+ type: object
18704
+ properties:
18705
+ currency:
18706
+ type: string
18707
+ title: Currency
18708
+ description: 3-letter ISO 4217 currency code.
18709
+ maxLength: 3
18710
+ due_at:
18711
+ type: string
18712
+ format: date-time
18713
+ title: Due at
18714
+ description: Date invoice was originally due. Must be in the past.
18715
+ po_number:
18716
+ type: string
18717
+ title: Purchase order number
18718
+ description: This identifies the PO number associated with the subscription.
18719
+ maxLength: 50
18720
+ external_recovery_eligible:
18721
+ type: boolean
18722
+ title: External recovery eligible
18723
+ description: Must be set to `true` to acknowledge that the invoice is eligible
18724
+ for external recovery. Requests with `false`, omitted, or non-boolean
18725
+ values will be rejected.
18726
+ account:
18727
+ "$ref": "#/components/schemas/RecoveryAccountCreate"
18728
+ line_items:
18729
+ type: array
18730
+ title: Line items
18731
+ description: Line items to include on the invoice. Currency is specified
18732
+ at the root level and must not be included in individual line items.
18733
+ items:
18734
+ "$ref": "#/components/schemas/RecoveryLineItemCreate"
18735
+ required:
18736
+ - currency
18737
+ - due_at
18738
+ - external_recovery_eligible
18739
+ - account
18740
+ - line_items
18741
+ RecoveryBillingInfoCreate:
18742
+ type: object
18743
+ title: Recovery billing info
18744
+ properties:
18745
+ first_name:
18746
+ type: string
18747
+ title: First name
18748
+ maxLength: 50
18749
+ last_name:
18750
+ type: string
18751
+ title: Last name
18752
+ maxLength: 50
18753
+ company:
18754
+ type: string
18755
+ title: Company name
18756
+ maxLength: 100
18757
+ address:
18758
+ "$ref": "#/components/schemas/RecoveryAddress"
18759
+ ip_address:
18760
+ type: string
18761
+ title: IP address
18762
+ description: "*STRONGLY RECOMMENDED* Customer's IP address when updating
18763
+ their billing information."
18764
+ maxLength: 20
18765
+ gateway_code:
18766
+ type: string
18767
+ title: An identifier for a specific payment gateway.
18768
+ maxLength: 12
18769
+ primary_payment_method:
18770
+ type: boolean
18771
+ title: Primary Payment Method
18772
+ description: The `primary_payment_method` field is used to designate the
18773
+ primary billing info on the account. An account can have a maximum of
18774
+ 1 primary. If a user sets a different payment method as a primary, then
18775
+ the existing primary will no longer be marked as such.
18776
+ backup_payment_method:
18777
+ type: boolean
18778
+ description: The `backup_payment_method` field is used to designate a billing
18779
+ info as a backup on the account that will be tried if the initial billing
18780
+ info used for an invoice is declined. All payment methods, including the
18781
+ billing info marked `primary_payment_method` can be set as a backup. An
18782
+ account can have a maximum of 1 backup, if a user sets a different payment
18783
+ method as a backup, the existing backup will no longer be marked as such.
18784
+ payment_gateway_references:
18785
+ type: array
18786
+ description: Array of Payment Gateway References, each a reference to a
18787
+ third-party gateway object of varying types.
18788
+ items:
18789
+ "$ref": "#/components/schemas/PaymentGatewayReferences"
18790
+ network_transaction_id:
18791
+ type: string
18792
+ title: Network Transaction ID
18793
+ description: |
18794
+ Network transaction ID from the previous customer-in-session subscription signup or billing info storage.
18795
+
18796
+ - 10-15 alphanumeric characters for Mastercard
18797
+ - 14-15 alphanumeric for Visa
18798
+ - 15 digits for all other brands
18799
+ - 16 alphanumeric characters for Cartes Bancaires, which are processed as Visa or Mastercard
18800
+ maxLength: 16
18801
+ transactions:
18802
+ type: array
18803
+ title: Transactions
18804
+ description: Transactions from previous collection attempts for this payment
18805
+ method.
18806
+ items:
18807
+ "$ref": "#/components/schemas/RecoveryTransactionCreate"
18808
+ required:
18809
+ - gateway_code
18810
+ - payment_gateway_references
18811
+ - transactions
18812
+ RecoveryAccountCreate:
18813
+ type: object
18814
+ properties:
18815
+ address:
18816
+ "$ref": "#/components/schemas/RecoveryAddress"
18817
+ billing_infos:
18818
+ type: array
18819
+ title: Billing Infos
18820
+ description: If the premium Wallet feature is enabled, more than one payment
18821
+ method can be associated with an account, and one can be designated as
18822
+ a primary and one as a backup. Without the Wallet feature, only one payment
18823
+ method will be accepted.
18824
+ items:
18825
+ "$ref": "#/components/schemas/RecoveryBillingInfoCreate"
18826
+ code:
18827
+ type: string
18828
+ description: The unique identifier of the account. This cannot be changed
18829
+ once the account is created.
18830
+ maxLength: 50
18831
+ email:
18832
+ type: string
18833
+ format: email
18834
+ description: The email address used for communicating with this customer.
18835
+ maxLength: 255
18836
+ custom_fields:
18837
+ "$ref": "#/components/schemas/CustomFields"
18838
+ dunning_campaign_id:
18839
+ type: string
18840
+ title: Dunning Campaign ID
18841
+ description: Unique ID to identify a dunning campaign. Used to specify if
18842
+ a non-default dunning campaign should be assigned to this account. For
18843
+ sites without multiple dunning campaigns enabled, the default dunning
18844
+ campaign will always be used.
18845
+ required:
18846
+ - code
18847
+ - billing_infos
18848
+ RecoveryLineItemCreate:
18849
+ required:
18850
+ - unit_amount
18851
+ type: object
18852
+ title: Recovery line item
18853
+ properties:
18854
+ tax:
18855
+ type: number
18856
+ format: float
18857
+ title: Tax
18858
+ description: The tax amount for the line item.
18859
+ custom_fields:
18860
+ "$ref": "#/components/schemas/CustomFields"
18861
+ harmonized_system_code:
18862
+ type: string
18863
+ title: Harmonized System Code
18864
+ description: The Harmonized System (HS) code is an internationally standardized
18865
+ system of names and numbers to classify traded products. The HS code,
18866
+ sometimes called Commodity Code, is used by customs authorities around
18867
+ the world to identify products when assessing duties and taxes. The HS
18868
+ code may also be referred to as the tariff code or customs code. Values
18869
+ should contain only digits and decimals.
18870
+ maxLength: 25
18871
+ pattern: "^\\d+(\\.\\d+)*$"
18872
+ product_code:
18873
+ type: string
18874
+ title: Product code
18875
+ description: Optional field to track a product code or SKU for the line
18876
+ item. This can be used to later reporting on product purchases.
18877
+ maxLength: 50
18878
+ quantity:
18879
+ type: integer
18880
+ title: Quantity
18881
+ description: This number will be multiplied by the unit amount to compute
18882
+ the subtotal before any discounts or taxes.
18883
+ default: 1
18884
+ description:
18885
+ type: string
18886
+ title: Description
18887
+ description: Description that appears on the invoice.
18888
+ maxLength: 255
18889
+ unit_amount:
18890
+ type: number
18891
+ format: float
18892
+ title: Unit amount
18893
+ description: A positive or negative amount will result in a positive `unit_amount`.
18894
+ RecoveryTransactionCreate:
18895
+ required:
18896
+ - gateway_error_code
18897
+ - attempted_collection_date
18898
+ type: object
18899
+ properties:
18900
+ gateway_error_code:
18901
+ type: string
18902
+ title: Gateway error code
18903
+ description: The error code returned by the payment gateway for the original
18904
+ payment collection attempt.
18905
+ maxLength: 50
18906
+ merchant_advice_code:
18907
+ type: string
18908
+ title: Merchant advice code
18909
+ description: The advice code returned by the payment gateway for the original
18910
+ payment collection attempt. This field is only applicable for certain
18911
+ gateways.
18912
+ maxLength: 2
18913
+ attempted_collection_date:
18914
+ type: string
18915
+ format: date-time
18916
+ title: Attempted collection date
18917
+ description: The date the original payment collection was attempted.
18624
18918
  AddressWithName:
18625
18919
  allOf:
18626
18920
  - "$ref": "#/components/schemas/Address"
@@ -19579,6 +19873,44 @@ components:
19579
19873
  token_id:
19580
19874
  type: string
19581
19875
  description: A token [generated by Recurly.js](https://recurly.com/developers/reference/recurly-js/#getting-a-token).
19876
+ LineItemDiscount:
19877
+ type: object
19878
+ title: Line item discount
19879
+ description: A discount applied to a line item charge by a coupon redemption.
19880
+ properties:
19881
+ object:
19882
+ type: string
19883
+ title: Object type
19884
+ description: Will always be `line_item_discount`.
19885
+ readOnly: true
19886
+ coupon_id:
19887
+ type: string
19888
+ title: Coupon ID
19889
+ description: The ID of the coupon that generated this discount.
19890
+ readOnly: true
19891
+ coupon_redemption_id:
19892
+ type: string
19893
+ title: Coupon Redemption ID
19894
+ description: The ID of the coupon redemption that generated this discount.
19895
+ readOnly: true
19896
+ order_applied:
19897
+ type: integer
19898
+ title: Order applied
19899
+ description: The order in which this discount was applied when multiple
19900
+ coupons were redeemed.
19901
+ readOnly: true
19902
+ discount_amount:
19903
+ type: number
19904
+ format: float
19905
+ title: Discount amount
19906
+ description: The amount discounted on this line item by this coupon redemption.
19907
+ readOnly: true
19908
+ currency:
19909
+ type: string
19910
+ title: Currency
19911
+ description: 3-letter ISO 4217 currency code.
19912
+ maxLength: 3
19913
+ readOnly: true
19582
19914
  Coupon:
19583
19915
  type: object
19584
19916
  properties:
@@ -19764,7 +20096,8 @@ components:
19764
20096
  title: Free trial unit
19765
20097
  description: Description of the unit of time the coupon is for. Used with
19766
20098
  `free_trial_amount` to determine the duration of time the coupon is
19767
- for. Required if `discount_type` is `free_trial`.
20099
+ for. Required if `discount_type` is `free_trial`. Use `billing_period`
20100
+ to grant a free trial for a number of billing cycles.
19768
20101
  "$ref": "#/components/schemas/FreeTrialUnitEnum"
19769
20102
  free_trial_amount:
19770
20103
  type: integer
@@ -19842,6 +20175,8 @@ components:
19842
20175
  by `temporal_amount` to define the duration that the coupon will be
19843
20176
  applied to invoices for. Use "billing_period" to apply the coupon for
19844
20177
  a fixed number of billing cycles. Requires `redemption_resource=subscription`.
20178
+ Not compatible with `discount_type=free_trial`; use `free_trial_unit=billing_period`
20179
+ and `free_trial_amount` instead.
19845
20180
  "$ref": "#/components/schemas/TemporalUnitEnum"
19846
20181
  coupon_type:
19847
20182
  title: Coupon type
@@ -19903,7 +20238,8 @@ components:
19903
20238
  properties:
19904
20239
  unit:
19905
20240
  title: Trial unit
19906
- description: Temporal unit of the free trial
20241
+ description: Temporal unit of the free trial. When `billing_period`,
20242
+ `length` represents the number of billing cycles.
19907
20243
  "$ref": "#/components/schemas/FreeTrialUnitEnum"
19908
20244
  length:
19909
20245
  type: integer
@@ -20016,6 +20352,9 @@ components:
20016
20352
  title: Coupon Redemption state
20017
20353
  default: active
20018
20354
  "$ref": "#/components/schemas/ActiveStateEnum"
20355
+ remaining_duration:
20356
+ readOnly: true
20357
+ "$ref": "#/components/schemas/CouponRedemptionRemainingDuration"
20019
20358
  currency:
20020
20359
  type: string
20021
20360
  title: Currency
@@ -20043,6 +20382,23 @@ components:
20043
20382
  description: The date and time the redemption was removed from the account
20044
20383
  (un-redeemed).
20045
20384
  format: date-time
20385
+ CouponRedemptionRemainingDuration:
20386
+ type: object
20387
+ properties:
20388
+ type:
20389
+ type: string
20390
+ title: Duration Type
20391
+ description: The coupon's duration type. `temporal` includes an `expires_at`
20392
+ timestamp. `forever` and `single_use` have no additional fields.
20393
+ "$ref": "#/components/schemas/CouponDurationEnum"
20394
+ readOnly: true
20395
+ expires_at:
20396
+ type: string
20397
+ title: Expires at
20398
+ format: date-time
20399
+ description: Present when `type` is `temporal`. The datetime after which
20400
+ this redemption will no longer apply.
20401
+ readOnly: true
20046
20402
  CouponRedemptionCreate:
20047
20403
  type: object
20048
20404
  properties:
@@ -20074,8 +20430,11 @@ components:
20074
20430
  coupon:
20075
20431
  "$ref": "#/components/schemas/CouponMini"
20076
20432
  state:
20077
- title: Invoice state
20433
+ title: Coupon Redemption state
20078
20434
  "$ref": "#/components/schemas/ActiveStateEnum"
20435
+ remaining_duration:
20436
+ readOnly: true
20437
+ "$ref": "#/components/schemas/CouponRedemptionRemainingDuration"
20079
20438
  discounted:
20080
20439
  type: number
20081
20440
  format: float
@@ -20972,6 +21331,12 @@ components:
20972
21331
  format: float
20973
21332
  title: Discount
20974
21333
  description: Total discounts applied to this invoice.
21334
+ coupon_redemptions:
21335
+ type: array
21336
+ title: Coupon Redemptions
21337
+ description: The coupon redemptions applied to this invoice.
21338
+ items:
21339
+ "$ref": "#/components/schemas/CouponRedemptionMini"
20975
21340
  subtotal:
20976
21341
  type: number
20977
21342
  format: float
@@ -21684,7 +22049,14 @@ components:
21684
22049
  type: number
21685
22050
  format: float
21686
22051
  title: Discount
21687
- description: The discount applied to the line item.
22052
+ description: The sum of all discounts applied to the line item.
22053
+ discounts:
22054
+ type: array
22055
+ title: Discounts
22056
+ description: The breakdown of discounts applied to the line item by coupon
22057
+ redemption.
22058
+ items:
22059
+ "$ref": "#/components/schemas/LineItemDiscount"
21688
22060
  liability_gl_account_code:
21689
22061
  type: string
21690
22062
  title: Accounting code for the ledger account.
@@ -27239,6 +27611,7 @@ components:
27239
27611
  - day
27240
27612
  - month
27241
27613
  - week
27614
+ - billing_period
27242
27615
  RedemptionResourceEnum:
27243
27616
  type: string
27244
27617
  enum:
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: 4.76.0
4
+ version: 4.77.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Recurly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-05-20 00:00:00.000000000 Z
11
+ date: 2026-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -231,6 +231,12 @@ files:
231
231
  - lib/recurly/requests/pricing.rb
232
232
  - lib/recurly/requests/proration_settings.rb
233
233
  - lib/recurly/requests/purchase_create.rb
234
+ - lib/recurly/requests/recovery_account_create.rb
235
+ - lib/recurly/requests/recovery_address.rb
236
+ - lib/recurly/requests/recovery_billing_info_create.rb
237
+ - lib/recurly/requests/recovery_invoice_create.rb
238
+ - lib/recurly/requests/recovery_line_item_create.rb
239
+ - lib/recurly/requests/recovery_transaction_create.rb
234
240
  - lib/recurly/requests/shipping_address_create.rb
235
241
  - lib/recurly/requests/shipping_address_update.rb
236
242
  - lib/recurly/requests/shipping_fee_create.rb
@@ -283,6 +289,7 @@ files:
283
289
  - lib/recurly/resources/coupon_mini.rb
284
290
  - lib/recurly/resources/coupon_redemption.rb
285
291
  - lib/recurly/resources/coupon_redemption_mini.rb
292
+ - lib/recurly/resources/coupon_redemption_remaining_duration.rb
286
293
  - lib/recurly/resources/credit_application_policy.rb
287
294
  - lib/recurly/resources/credit_payment.rb
288
295
  - lib/recurly/resources/custom_field.rb
@@ -322,6 +329,7 @@ files:
322
329
  - lib/recurly/resources/item.rb
323
330
  - lib/recurly/resources/item_mini.rb
324
331
  - lib/recurly/resources/line_item.rb
332
+ - lib/recurly/resources/line_item_discount.rb
325
333
  - lib/recurly/resources/measured_unit.rb
326
334
  - lib/recurly/resources/payment_gateway_references.rb
327
335
  - lib/recurly/resources/payment_method.rb
@@ -390,7 +398,7 @@ metadata:
390
398
  changelog_uri: https://github.com/recurly/recurly-client-ruby/blob/master/CHANGELOG.md
391
399
  documentation_uri: https://recurly.github.io/recurly-client-ruby/
392
400
  homepage_uri: https://github.com/recurly/recurly-client-ruby
393
- source_code_uri: https://github.com/recurly/recurly-client-ruby/tree/4.76.0
401
+ source_code_uri: https://github.com/recurly/recurly-client-ruby/tree/4.77.0
394
402
  post_install_message:
395
403
  rdoc_options: []
396
404
  require_paths: