recurly 4.74.0 → 4.76.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: 102506b8750880c90ece0a8be6fcf079413029f395d698f426cd0fa2442fb0d2
4
- data.tar.gz: b41e85114dd87196be6bbe912fdcc824faa0b7f3303fe8c276ca1f5af5a801bb
3
+ metadata.gz: 291cd81b722143bec2a0b2b57499e482c895d81036cda7bda1d7b6d3a808f373
4
+ data.tar.gz: d1e78b56aa492134c873a2cda000596bf54f8b3da6ff44168d676e2ca3a129dd
5
5
  SHA512:
6
- metadata.gz: 38e68a485325b060e98cce456d7ebc917947194740d188bb122afc2816b90bbc54016a79bc560a4f09f9fde8eb1f8a3945a6a470b0fd32b5fe304519355aeab3
7
- data.tar.gz: d79a02707dac98ab6fc36d8b6950abcab4369d04c91f4772d94246b8cefa54ce880b16f1aaa5a80e290404173de0e869d1a84cb1a0b622618ba121008df8b867
6
+ metadata.gz: 1fbe21003f2a2f0dcf4d5fb94a0795fab7664df5755f6c6085823ca76ca96a5ea4541700f970002cbefbbdcb380cedaa9b4b29409088d34df807dc501fe50434
7
+ data.tar.gz: a57e93f4e9eed80b4fa7428b8287f89b314b7c86f7949f3bd8ec0f96ac86ac018f6033b6d7a38c6ab5efe03fa189c36afad1cac78e47891a031027a90fe15e82
data/.bumpversion.cfg CHANGED
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 4.74.0
2
+ current_version = 4.76.0
3
3
  parse = (?P<major>\d+)
4
4
  \.(?P<minor>\d+)
5
5
  \.(?P<patch>\d+)
data/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.76.0](https://github.com/recurly/recurly-client-ruby/tree/4.76.0) (2026-05-20)
4
+
5
+ [Full Changelog](https://github.com/recurly/recurly-client-ruby/compare/4.75.0...4.76.0)
6
+
7
+
8
+ **Merged Pull Requests**
9
+
10
+ - Generated Latest Changes for v2021-02-25 [#956](https://github.com/recurly/recurly-client-ruby/pull/956) ([recurly-integrations](https://github.com/recurly-integrations))
11
+
12
+
13
+
14
+ ## [4.75.0](https://github.com/recurly/recurly-client-ruby/tree/4.75.0) (2026-04-15)
15
+
16
+ [Full Changelog](https://github.com/recurly/recurly-client-ruby/compare/4.74.0...4.75.0)
17
+
18
+
19
+ **Merged Pull Requests**
20
+
21
+ - Generated Latest Changes for v2021-02-25 [#954](https://github.com/recurly/recurly-client-ruby/pull/954) ([recurly-integrations](https://github.com/recurly-integrations))
22
+ - Generated Latest Changes for v2021-02-25 [#951](https://github.com/recurly/recurly-client-ruby/pull/951) ([recurly-integrations](https://github.com/recurly-integrations))
23
+
24
+
25
+
3
26
  ## [4.74.0](https://github.com/recurly/recurly-client-ruby/tree/4.74.0) (2026-02-06)
4
27
 
5
28
  [Full Changelog](https://github.com/recurly/recurly-client-ruby/compare/4.73.0...4.74.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.74'
8
+ gem 'recurly', '~> 4.76'
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.
@@ -248,6 +248,20 @@ module Recurly
248
248
  delete(path, **options)
249
249
  end
250
250
 
251
+ # Redact an account (GDPR Right to Erasure)
252
+ #
253
+ # {https://developers.recurly.com/api/v2021-02-25#operation/redact_account redact_account api documentation}
254
+ #
255
+ # @param account_id [String] Account ID or code. For ID no prefix is used e.g. +e28zov4fw0v2+. For code use prefix +code-+, e.g. +code-bob+.
256
+ # @param params [Hash] Optional query string parameters:
257
+ #
258
+ # @return [Resources::Account] Account has been accepted for redaction and will be processed asynchronously.
259
+ #
260
+ def redact_account(account_id:, **options)
261
+ path = interpolate_path("/accounts/{account_id}/redact", account_id: account_id)
262
+ put(path, **options)
263
+ end
264
+
251
265
  # Fetch an account's acquisition data
252
266
  #
253
267
  # {https://developers.recurly.com/api/v2021-02-25#operation/get_account_acquisition get_account_acquisition api documentation}
@@ -1745,6 +1759,21 @@ module Recurly
1745
1759
  post(path, body, Requests::CouponBulkCreate, **options)
1746
1760
  end
1747
1761
 
1762
+ # Generate unique coupon codes synchronously
1763
+ #
1764
+ # {https://developers.recurly.com/api/v2021-02-25#operation/generate_unique_coupon_codes_sync generate_unique_coupon_codes_sync api documentation}
1765
+ #
1766
+ # @param coupon_id [String] Coupon ID or code. For ID no prefix is used e.g. +e28zov4fw0v2+. For code use prefix +code-+, e.g. +code-10off+.
1767
+ # @param body [Requests::CouponBulkCreateSync] The Hash representing the JSON request to send to the server. It should conform to the schema of {Requests::CouponBulkCreateSync}
1768
+ # @param params [Hash] Optional query string parameters:
1769
+ #
1770
+ # @return [Resources::UniqueCouponCodeGenerationResponse] The newly generated unique coupon codes.
1771
+ #
1772
+ def generate_unique_coupon_codes_sync(coupon_id:, body:, **options)
1773
+ path = interpolate_path("/coupons/{coupon_id}/generate_sync", coupon_id: coupon_id)
1774
+ post(path, body, Requests::CouponBulkCreateSync, **options)
1775
+ end
1776
+
1748
1777
  # Restore an inactive coupon
1749
1778
  #
1750
1779
  # {https://developers.recurly.com/api/v2021-02-25#operation/restore_coupon restore_coupon api documentation}
@@ -2705,7 +2734,6 @@ module Recurly
2705
2734
  #
2706
2735
  # @param invoice_id [String] Invoice ID or number. For ID no prefix is used e.g. +e28zov4fw0v2+. For number use prefix +number-+, e.g. +number-1000+. For number with prefix or country code, use +number-+ and +prefix+, e.g. +number-TEST-FR1001+
2707
2736
  # @param params [Hash] Optional query string parameters:
2708
- # :site_id [String] Site ID or subdomain. For ID no prefix is used e.g. +e28zov4fw0v2+. For subdomain use prefix +subdomain-+, e.g. +subdomain-recurly+.
2709
2737
  #
2710
2738
  # @return [Resources::Invoice] The updated invoice.
2711
2739
  # @example
@@ -15,7 +15,7 @@ module Recurly
15
15
  define_attribute :country, String
16
16
 
17
17
  # @!attribute geo_code
18
- # @return [String] Code that represents a geographic entity (location or object). Only returned for Sling Vertex Integration
18
+ # @return [String] Code that represents a geographic entity (location or object). Only returned when Vertex or Avalara for Communications is enabled.
19
19
  define_attribute :geo_code, String
20
20
 
21
21
  # @!attribute phone
@@ -0,0 +1,14 @@
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 CouponBulkCreateSync < Request
8
+
9
+ # @!attribute number_of_unique_codes
10
+ # @return [Integer] The quantity of unique coupon codes to generate. A bulk coupon can have up to 100,000 unique codes (or your site's configured limit).
11
+ define_attribute :number_of_unique_codes, Integer
12
+ end
13
+ end
14
+ end
@@ -87,11 +87,11 @@ module Recurly
87
87
  define_attribute :redemption_resource, String
88
88
 
89
89
  # @!attribute temporal_amount
90
- # @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.
90
+ # @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. When `temporal_unit` is "billing_period", this is the number of complete billing cycles.
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.
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`.
95
95
  define_attribute :temporal_unit, String
96
96
 
97
97
  # @!attribute unique_code_template
@@ -10,6 +10,14 @@ module Recurly
10
10
  # @return [String] Fields must be created in the UI before values can be assigned to them.
11
11
  define_attribute :name, String
12
12
 
13
+ # @!attribute source_record_id
14
+ # @return [String] The UUID of the record this custom field was automatically copied from. Only present when the field was copied from another record.
15
+ define_attribute :source_record_id, String
16
+
17
+ # @!attribute source_record_type
18
+ # @return [String] The type of record this custom field was automatically copied from. Only present when the field was copied from another record.
19
+ define_attribute :source_record_type, String
20
+
13
21
  # @!attribute value
14
22
  # @return [String] Any values that resemble a credit card number or security code (CVV/CVC) will be rejected.
15
23
  define_attribute :value, String
@@ -23,7 +23,7 @@ module Recurly
23
23
  define_attribute :first_name, String
24
24
 
25
25
  # @!attribute geo_code
26
- # @return [String] Code that represents a geographic entity (location or object). Only returned for Sling Vertex Integration
26
+ # @return [String] Code that represents a geographic entity (location or object). Only returned when Vertex or Avalara for Communications is enabled.
27
27
  define_attribute :geo_code, String
28
28
 
29
29
  # @!attribute last_name
@@ -27,7 +27,7 @@ module Recurly
27
27
  define_attribute :first_name, String
28
28
 
29
29
  # @!attribute geo_code
30
- # @return [String] Code that represents a geographic entity (location or object). Only returned for Sling Vertex Integration
30
+ # @return [String] Code that represents a geographic entity (location or object). Only returned when Vertex or Avalara for Communications is enabled.
31
31
  define_attribute :geo_code, String
32
32
 
33
33
  # @!attribute last_name
@@ -27,7 +27,7 @@ module Recurly
27
27
  define_attribute :first_name, String
28
28
 
29
29
  # @!attribute geo_code
30
- # @return [String] Code that represents a geographic entity (location or object). Only returned for Sling Vertex Integration
30
+ # @return [String] Code that represents a geographic entity (location or object). Only returned when Vertex or Avalara for Communications is enabled.
31
31
  define_attribute :geo_code, String
32
32
 
33
33
  # @!attribute id
@@ -15,7 +15,7 @@ module Recurly
15
15
  define_attribute :country, String
16
16
 
17
17
  # @!attribute geo_code
18
- # @return [String] Code that represents a geographic entity (location or object). Only returned for Sling Vertex Integration
18
+ # @return [String] Code that represents a geographic entity (location or object). Only returned when Vertex or Avalara for Communications is enabled.
19
19
  define_attribute :geo_code, String
20
20
 
21
21
  # @!attribute phone
@@ -19,7 +19,7 @@ module Recurly
19
19
  define_attribute :first_name, String
20
20
 
21
21
  # @!attribute geo_code
22
- # @return [String] Code that represents a geographic entity (location or object). Only returned for Sling Vertex Integration
22
+ # @return [String] Code that represents a geographic entity (location or object). Only returned when Vertex or Avalara for Communications is enabled.
23
23
  define_attribute :geo_code, String
24
24
 
25
25
  # @!attribute last_name
@@ -99,11 +99,11 @@ module Recurly
99
99
  define_attribute :state, String
100
100
 
101
101
  # @!attribute temporal_amount
102
- # @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.
102
+ # @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. When `temporal_unit` is "billing_period", this is the number of complete billing cycles.
103
103
  define_attribute :temporal_amount, Integer
104
104
 
105
105
  # @!attribute temporal_unit
106
- # @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.
106
+ # @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`.
107
107
  define_attribute :temporal_unit, String
108
108
 
109
109
  # @!attribute unique_code_template
@@ -10,6 +10,14 @@ module Recurly
10
10
  # @return [String] Fields must be created in the UI before values can be assigned to them.
11
11
  define_attribute :name, String
12
12
 
13
+ # @!attribute source_record_id
14
+ # @return [String] The UUID of the record this custom field was automatically copied from. Only present when the field was copied from another record.
15
+ define_attribute :source_record_id, String
16
+
17
+ # @!attribute source_record_type
18
+ # @return [String] The type of record this custom field was automatically copied from. Only present when the field was copied from another record.
19
+ define_attribute :source_record_type, String
20
+
13
21
  # @!attribute value
14
22
  # @return [String] Any values that resemble a credit card number or security code (CVV/CVC) will be rejected.
15
23
  define_attribute :value, String
@@ -46,6 +46,10 @@ module Recurly
46
46
  # @return [String] 3-letter ISO 4217 currency code.
47
47
  define_attribute :currency, String
48
48
 
49
+ # @!attribute custom_fields
50
+ # @return [Array[CustomField]] A list of custom fields that were on the account at the time of invoice creation and were marked to be displayed on invoices. Read-only; cannot be set directly on the invoice.
51
+ define_attribute :custom_fields, Array, { :item_type => :CustomField }
52
+
49
53
  # @!attribute customer_notes
50
54
  # @return [String] This will default to the Customer Notes text specified on the Invoice Settings. Specify custom notes to add or override Customer Notes.
51
55
  define_attribute :customer_notes, String
@@ -23,7 +23,7 @@ module Recurly
23
23
  define_attribute :first_name, String
24
24
 
25
25
  # @!attribute geo_code
26
- # @return [String] Code that represents a geographic entity (location or object). Only returned for Sling Vertex Integration
26
+ # @return [String] Code that represents a geographic entity (location or object). Only returned when Vertex or Avalara for Communications is enabled.
27
27
  define_attribute :geo_code, String
28
28
 
29
29
  # @!attribute last_name
@@ -35,7 +35,7 @@ module Recurly
35
35
  define_attribute :first_name, String
36
36
 
37
37
  # @!attribute geo_code
38
- # @return [String] Code that represents a geographic entity (location or object). Only returned for Sling Vertex Integration
38
+ # @return [String] Code that represents a geographic entity (location or object). Only returned when Vertex or Avalara for Communications is enabled.
39
39
  define_attribute :geo_code, String
40
40
 
41
41
  # @!attribute id
@@ -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 UniqueCouponCodeGenerationResponse < Resource
8
+
9
+ # @!attribute object
10
+ # @return [String] Object type
11
+ define_attribute :object, String
12
+
13
+ # @!attribute unique_coupon_codes
14
+ # @return [Array[UniqueCouponCode]] An array containing the newly generated unique coupon codes.
15
+ define_attribute :unique_coupon_codes, Array, { :item_type => :UniqueCouponCode }
16
+ end
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  module Recurly
2
- VERSION = "4.74.0"
2
+ VERSION = "4.76.0"
3
3
  end
data/openapi/api.yaml CHANGED
@@ -200,14 +200,12 @@ x-tagGroups:
200
200
  - usage
201
201
  - automated_exports
202
202
  - gift_cards
203
- - name: App Management
203
+ - name: Invoices and Payments
204
204
  tags:
205
- - external_subscriptions
206
- - external_invoices
207
- - external_products
208
- - external_accounts
209
- - external_product_references
210
- - external_payment_phases
205
+ - invoice
206
+ - line_item
207
+ - credit_payment
208
+ - transaction
211
209
  - name: Products and Promotions
212
210
  tags:
213
211
  - item
@@ -218,12 +216,6 @@ x-tagGroups:
218
216
  - coupon_redemption
219
217
  - unique_coupon_code
220
218
  - price_segment
221
- - name: Invoices and Payments
222
- tags:
223
- - invoice
224
- - line_item
225
- - credit_payment
226
- - transaction
227
219
  - name: Configuration
228
220
  tags:
229
221
  - site
@@ -233,6 +225,14 @@ x-tagGroups:
233
225
  - business_entities
234
226
  - general_ledger_account
235
227
  - performance_obligations
228
+ - name: App Management
229
+ tags:
230
+ - external_subscriptions
231
+ - external_invoices
232
+ - external_products
233
+ - external_accounts
234
+ - external_product_references
235
+ - external_payment_phases
236
236
  tags:
237
237
  - name: site
238
238
  x-displayName: Site
@@ -1404,6 +1404,45 @@ paths:
1404
1404
  not found: %v\", e)\n\t\treturn nil, err\n\t}\n\tfmt.Printf(\"Unexpected
1405
1405
  Recurly error: %v\", e)\n\treturn nil, err\n}\nfmt.Printf(\"Deactivated
1406
1406
  Account: %s\", account.Id)"
1407
+ "/accounts/{account_id}/redact":
1408
+ parameters:
1409
+ - "$ref": "#/components/parameters/account_id"
1410
+ put:
1411
+ tags:
1412
+ - account
1413
+ operationId: redact_account
1414
+ summary: Redact an account (GDPR Right to Erasure)
1415
+ description: Permanently and irreversibly removes all personally identifiable
1416
+ information (PII) from an account to fulfill a data subject's right to erasure
1417
+ under GDPR and similar privacy regulations (e.g. CCPA). This includes billing
1418
+ information, shipping addresses, and transaction details such as names, email
1419
+ addresses, and payment card data. The underlying account and transaction records
1420
+ are retained for financial and audit purposes, but all personal data fields
1421
+ are cleared. The account must have no active subscriptions, uninvoiced charges,
1422
+ or partially paid invoices before it can be redacted. Redaction is processed
1423
+ asynchronously and cannot be undone.
1424
+ responses:
1425
+ '200':
1426
+ description: Account has been accepted for redaction and will be processed
1427
+ asynchronously.
1428
+ content:
1429
+ application/json:
1430
+ schema:
1431
+ "$ref": "#/components/schemas/Account"
1432
+ '422':
1433
+ description: Account cannot be redacted. Common reasons include active subscriptions,
1434
+ uninvoiced charges, or partially paid invoices.
1435
+ content:
1436
+ application/json:
1437
+ schema:
1438
+ "$ref": "#/components/schemas/Error"
1439
+ default:
1440
+ description: Unexpected error.
1441
+ content:
1442
+ application/json:
1443
+ schema:
1444
+ "$ref": "#/components/schemas/Error"
1445
+ x-code-samples: []
1407
1446
  "/accounts/{account_id}/acquisition":
1408
1447
  parameters:
1409
1448
  - "$ref": "#/components/parameters/account_id"
@@ -6505,6 +6544,55 @@ paths:
6505
6544
  schema:
6506
6545
  "$ref": "#/components/schemas/Error"
6507
6546
  x-code-samples: []
6547
+ "/coupons/{coupon_id}/generate_sync":
6548
+ post:
6549
+ tags:
6550
+ - unique_coupon_code
6551
+ operationId: generate_unique_coupon_codes_sync
6552
+ summary: Generate unique coupon codes synchronously
6553
+ description: Generates up to 200 unique coupon codes for a bulk coupon and returns
6554
+ them directly in the response. For larger batches, use the asynchronous generate
6555
+ endpoint instead.
6556
+ parameters:
6557
+ - "$ref": "#/components/parameters/coupon_id"
6558
+ requestBody:
6559
+ content:
6560
+ application/json:
6561
+ schema:
6562
+ "$ref": "#/components/schemas/CouponBulkCreateSync"
6563
+ required: true
6564
+ responses:
6565
+ '200':
6566
+ description: The newly generated unique coupon codes.
6567
+ content:
6568
+ application/json:
6569
+ schema:
6570
+ "$ref": "#/components/schemas/UniqueCouponCodeGenerationResponse"
6571
+ '400':
6572
+ description: Invalid or unpermitted parameter.
6573
+ content:
6574
+ application/json:
6575
+ schema:
6576
+ "$ref": "#/components/schemas/Error"
6577
+ '404':
6578
+ description: Incorrect site or coupon ID.
6579
+ content:
6580
+ application/json:
6581
+ schema:
6582
+ "$ref": "#/components/schemas/Error"
6583
+ '422':
6584
+ description: Unprocessable entity.
6585
+ content:
6586
+ application/json:
6587
+ schema:
6588
+ "$ref": "#/components/schemas/Error"
6589
+ default:
6590
+ description: Unexpected error.
6591
+ content:
6592
+ application/json:
6593
+ schema:
6594
+ "$ref": "#/components/schemas/Error"
6595
+ x-code-samples: []
6508
6596
  "/coupons/{coupon_id}/restore":
6509
6597
  put:
6510
6598
  tags:
@@ -9157,7 +9245,6 @@ paths:
9157
9245
  description: Apply credit payment to the outstanding balance on an existing
9158
9246
  charge invoice from an account’s available balance from existing credit invoices.
9159
9247
  parameters:
9160
- - "$ref": "#/components/parameters/site_id"
9161
9248
  - "$ref": "#/components/parameters/invoice_id"
9162
9249
  responses:
9163
9250
  '200':
@@ -18533,7 +18620,7 @@ components:
18533
18620
  type: string
18534
18621
  maxLength: 20
18535
18622
  description: Code that represents a geographic entity (location or object).
18536
- Only returned for Sling Vertex Integration
18623
+ Only returned when Vertex or Avalara for Communications is enabled.
18537
18624
  AddressWithName:
18538
18625
  allOf:
18539
18626
  - "$ref": "#/components/schemas/Address"
@@ -19554,12 +19641,14 @@ components:
19554
19641
  title: Temporal amount
19555
19642
  description: If `duration` is "temporal" than `temporal_amount` is an integer
19556
19643
  which is multiplied by `temporal_unit` to define the duration that the
19557
- coupon will be applied to invoices for.
19644
+ coupon will be applied to invoices for. When `temporal_unit` is "billing_period",
19645
+ this is the number of complete billing cycles.
19558
19646
  temporal_unit:
19559
19647
  title: Temporal unit
19560
19648
  description: If `duration` is "temporal" than `temporal_unit` is multiplied
19561
19649
  by `temporal_amount` to define the duration that the coupon will be applied
19562
- to invoices for.
19650
+ to invoices for. Use "billing_period" to apply the coupon for a fixed
19651
+ number of billing cycles. Requires `redemption_resource=subscription`.
19563
19652
  "$ref": "#/components/schemas/TemporalUnitEnum"
19564
19653
  free_trial_unit:
19565
19654
  title: Free trial unit
@@ -19745,12 +19834,14 @@ components:
19745
19834
  title: Temporal amount
19746
19835
  description: If `duration` is "temporal" than `temporal_amount` is an
19747
19836
  integer which is multiplied by `temporal_unit` to define the duration
19748
- that the coupon will be applied to invoices for.
19837
+ that the coupon will be applied to invoices for. When `temporal_unit`
19838
+ is "billing_period", this is the number of complete billing cycles.
19749
19839
  temporal_unit:
19750
19840
  title: Temporal unit
19751
19841
  description: If `duration` is "temporal" than `temporal_unit` is multiplied
19752
19842
  by `temporal_amount` to define the duration that the coupon will be
19753
- applied to invoices for.
19843
+ applied to invoices for. Use "billing_period" to apply the coupon for
19844
+ a fixed number of billing cycles. Requires `redemption_resource=subscription`.
19754
19845
  "$ref": "#/components/schemas/TemporalUnitEnum"
19755
19846
  coupon_type:
19756
19847
  title: Coupon type
@@ -19841,6 +19932,18 @@ components:
19841
19932
  description: The quantity of unique coupon codes to generate. A bulk coupon
19842
19933
  can have up to 100,000 unique codes (or your site's configured limit).
19843
19934
  minimum: 1
19935
+ CouponBulkCreateSync:
19936
+ type: object
19937
+ properties:
19938
+ number_of_unique_codes:
19939
+ type: integer
19940
+ title: Number of unique codes
19941
+ description: The quantity of unique coupon codes to generate. A bulk coupon
19942
+ can have up to 100,000 unique codes (or your site's configured limit).
19943
+ minimum: 1
19944
+ maximum: 200
19945
+ required:
19946
+ - number_of_unique_codes
19844
19947
  CouponMini:
19845
19948
  type: object
19846
19949
  properties:
@@ -20095,6 +20198,19 @@ components:
20095
20198
  description: Any values that resemble a credit card number or security code
20096
20199
  (CVV/CVC) will be rejected.
20097
20200
  maxLength: 255
20201
+ source_record_type:
20202
+ type: string
20203
+ title: Source record type
20204
+ description: The type of record this custom field was automatically copied
20205
+ from. Only present when the field was copied from another record.
20206
+ readOnly: true
20207
+ "$ref": "#/components/schemas/SourceRecordTypeEnum"
20208
+ source_record_id:
20209
+ type: string
20210
+ title: Source record ID
20211
+ description: The UUID of the record this custom field was automatically
20212
+ copied from. Only present when the field was copied from another record.
20213
+ readOnly: true
20098
20214
  required:
20099
20215
  - name
20100
20216
  - value
@@ -20106,6 +20222,15 @@ components:
20106
20222
  remove a field send the name with a null or empty value.
20107
20223
  items:
20108
20224
  "$ref": "#/components/schemas/CustomField"
20225
+ InvoiceCustomFields:
20226
+ type: array
20227
+ title: Custom fields
20228
+ description: A list of custom fields that were on the account at the time of
20229
+ invoice creation and were marked to be displayed on invoices. Read-only; cannot
20230
+ be set directly on the invoice.
20231
+ readOnly: true
20232
+ items:
20233
+ "$ref": "#/components/schemas/CustomField"
20109
20234
  CustomFieldDefinition:
20110
20235
  type: object
20111
20236
  title: Custom field definition
@@ -20984,6 +21109,8 @@ components:
20984
21109
  title: Business Entity ID
20985
21110
  description: Unique ID to identify the business entity assigned to the invoice.
20986
21111
  Available when the `Multiple Business Entities` feature is enabled.
21112
+ custom_fields:
21113
+ "$ref": "#/components/schemas/InvoiceCustomFields"
20987
21114
  InvoiceCreate:
20988
21115
  type: object
20989
21116
  properties:
@@ -22635,7 +22762,7 @@ components:
22635
22762
  type: string
22636
22763
  maxLength: 20
22637
22764
  description: Code that represents a geographic entity (location or object).
22638
- Only returned for Sling Vertex Integration
22765
+ Only returned when Vertex or Avalara for Communications is enabled.
22639
22766
  created_at:
22640
22767
  type: string
22641
22768
  title: Created at
@@ -22723,7 +22850,7 @@ components:
22723
22850
  type: string
22724
22851
  maxLength: 20
22725
22852
  description: Code that represents a geographic entity (location or object).
22726
- Only returned for Sling Vertex Integration
22853
+ Only returned when Vertex or Avalara for Communications is enabled.
22727
22854
  country:
22728
22855
  type: string
22729
22856
  maxLength: 50
@@ -23054,7 +23181,7 @@ components:
23054
23181
  type: string
23055
23182
  maxLength: 20
23056
23183
  description: Code that represents a geographic entity (location or object).
23057
- Only returned for Sling Vertex Integration
23184
+ Only returned when Vertex or Avalara for Communications is enabled.
23058
23185
  Site:
23059
23186
  type: object
23060
23187
  properties:
@@ -25243,6 +25370,28 @@ components:
25243
25370
  "$ref": "#/components/schemas/Transaction/properties/initiator"
25244
25371
  merchant_reason_code:
25245
25372
  "$ref": "#/components/schemas/Transaction/properties/merchant_reason_code"
25373
+ skip_gateway_fraud:
25374
+ type: boolean
25375
+ title: Skip Gateway Fraud
25376
+ description: When set to `true`, instructs the payment gateway to
25377
+ skip fraud checks for this transaction. This is useful for recurring
25378
+ transactions where fraud checks have already been performed on the
25379
+ initial transaction. Note that not all gateways support this feature.
25380
+ For Stripe, this skips Radar fraud rules; for Adyen, this skips
25381
+ skip_recurly_fraud:
25382
+ type: boolean
25383
+ title: Skip Recurly Fraud
25384
+ description: When set to `true`, skips Recurly's fraud detection checks
25385
+ for this transaction, including Kount and IP-based fraud screening.
25386
+ Does not affect gateway-level fraud checks. Use `skip_all_fraud`
25387
+ to skip all fraud checks.
25388
+ skip_all_fraud:
25389
+ type: boolean
25390
+ title: Skip All Fraud
25391
+ description: When set to `true`, skips all fraud checks for this transaction,
25392
+ including both gateway-level fraud checks and Recurly's fraud detection
25393
+ services. This is useful for trusted transactions where fraud screening
25394
+ is not required.
25246
25395
  customer_notes:
25247
25396
  type: string
25248
25397
  title: Customer notes
@@ -25830,6 +25979,20 @@ components:
25830
25979
  type: string
25831
25980
  format: date-time
25832
25981
  description: When the external product was updated in Recurly.
25982
+ UniqueCouponCodeGenerationResponse:
25983
+ type: object
25984
+ properties:
25985
+ object:
25986
+ type: string
25987
+ title: Object type
25988
+ readOnly: true
25989
+ unique_coupon_codes:
25990
+ type: array
25991
+ title: Unique coupon codes
25992
+ description: An array containing the newly generated unique coupon codes.
25993
+ maxItems: 200
25994
+ items:
25995
+ "$ref": "#/components/schemas/UniqueCouponCode"
25833
25996
  ExternalSubscription:
25834
25997
  type: object
25835
25998
  description: Subscription from an external resource such as Apple App Store
@@ -27060,11 +27223,16 @@ components:
27060
27223
  - temporal
27061
27224
  TemporalUnitEnum:
27062
27225
  type: string
27226
+ description: The temporal unit for the coupon's duration. Used with temporal_amount
27227
+ to define how long the coupon applies. When temporal_unit is billing_period,
27228
+ the coupon applies for temporal_amount complete billing cycles rather than
27229
+ a fixed calendar duration. billing_period requires redemption_resource=subscription.
27063
27230
  enum:
27064
27231
  - day
27065
27232
  - month
27066
27233
  - week
27067
27234
  - year
27235
+ - billing_period
27068
27236
  FreeTrialUnitEnum:
27069
27237
  type: string
27070
27238
  enum:
@@ -27241,9 +27409,13 @@ components:
27241
27409
  default: all
27242
27410
  enum:
27243
27411
  - pending
27412
+ - processing
27244
27413
  - past_due
27245
27414
  - paid
27246
27415
  - failed
27416
+ - open
27417
+ - closed
27418
+ - voided
27247
27419
  CollectionMethodEnum:
27248
27420
  type: string
27249
27421
  enum:
@@ -27551,6 +27723,7 @@ components:
27551
27723
  - pix_automatico
27552
27724
  - mercadopago
27553
27725
  - klarna
27726
+ - braintree_google_pay
27554
27727
  CardTypeEnum:
27555
27728
  type: string
27556
27729
  enum:
@@ -27963,3 +28136,11 @@ components:
27963
28136
  enum:
27964
28137
  - customer
27965
28138
  - merchant
28139
+ SourceRecordTypeEnum:
28140
+ type: string
28141
+ description: The type of record a custom field was automatically copied from.
28142
+ enum:
28143
+ - account
28144
+ - plan
28145
+ - product
28146
+ - subscription
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.74.0
4
+ version: 4.76.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-02-06 00:00:00.000000000 Z
11
+ date: 2026-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -178,6 +178,7 @@ files:
178
178
  - lib/recurly/requests/billing_info_verify.rb
179
179
  - lib/recurly/requests/billing_info_verify_cvv.rb
180
180
  - lib/recurly/requests/coupon_bulk_create.rb
181
+ - lib/recurly/requests/coupon_bulk_create_sync.rb
181
182
  - lib/recurly/requests/coupon_create.rb
182
183
  - lib/recurly/requests/coupon_pricing.rb
183
184
  - lib/recurly/requests/coupon_redemption_create.rb
@@ -360,6 +361,7 @@ files:
360
361
  - lib/recurly/resources/transaction_next_action.rb
361
362
  - lib/recurly/resources/transaction_payment_gateway.rb
362
363
  - lib/recurly/resources/unique_coupon_code.rb
364
+ - lib/recurly/resources/unique_coupon_code_generation_response.rb
363
365
  - lib/recurly/resources/unique_coupon_code_params.rb
364
366
  - lib/recurly/resources/usage.rb
365
367
  - lib/recurly/resources/user.rb
@@ -388,7 +390,7 @@ metadata:
388
390
  changelog_uri: https://github.com/recurly/recurly-client-ruby/blob/master/CHANGELOG.md
389
391
  documentation_uri: https://recurly.github.io/recurly-client-ruby/
390
392
  homepage_uri: https://github.com/recurly/recurly-client-ruby
391
- source_code_uri: https://github.com/recurly/recurly-client-ruby/tree/4.74.0
393
+ source_code_uri: https://github.com/recurly/recurly-client-ruby/tree/4.76.0
392
394
  post_install_message:
393
395
  rdoc_options: []
394
396
  require_paths: