recurly 4.73.0 → 4.75.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: 6d67e16b9e2fb16358c1e8fba96f2dfb63e63a0ea5ef57543b83539b57391704
4
- data.tar.gz: f6ec667d0d8d89698429de03d87bd45f11aded56edce3b8fe6b652e3bd031299
3
+ metadata.gz: 620411c58288a2895fc1edffdf688f3f0b6ecfd4aabc648c867b45f76d9cb7ba
4
+ data.tar.gz: a68e9d658aeda3673feaea79a5d3dfdd03b0c38092bb4d424fd1bab1b8a571a8
5
5
  SHA512:
6
- metadata.gz: bc9e879c1373b37ff7484ec8b75ff8325d28e77251c0bee3dae35942d3eba613f26a3c82187b902e0277d878a45366b704623c53e5e85f2a6bade5d4e664c45d
7
- data.tar.gz: 93d47f1cbb87eb15007e04e72cf594b68080f4e8c3837f922f56fe2ab3653ca7b3623b522256a50ec4adf082c2ab79c1eb0c0a300d08698d7410f0345defbbd1
6
+ metadata.gz: 6d21ea0b716136ad05ecd1400f5744a5de7dc866b64fca446b3b3725973a5e8dadfe0d0a2f801e0f7928486823351ea6222cf4356c693c778ec38a3df4fa5f7d
7
+ data.tar.gz: ef3216cb66e8af64e95d37bd6611cb27a6f45173308fb8e9fe1796947ff465180e32b805bc86ee212e9cb5432b9b070bd48157d1623fd95170e7a67d305a1305
data/.bumpversion.cfg CHANGED
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 4.73.0
2
+ current_version = 4.75.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.75.0](https://github.com/recurly/recurly-client-ruby/tree/4.75.0) (2026-04-15)
4
+
5
+ [Full Changelog](https://github.com/recurly/recurly-client-ruby/compare/4.74.0...4.75.0)
6
+
7
+
8
+ **Merged Pull Requests**
9
+
10
+ - Generated Latest Changes for v2021-02-25 [#954](https://github.com/recurly/recurly-client-ruby/pull/954) ([recurly-integrations](https://github.com/recurly-integrations))
11
+ - Generated Latest Changes for v2021-02-25 [#951](https://github.com/recurly/recurly-client-ruby/pull/951) ([recurly-integrations](https://github.com/recurly-integrations))
12
+
13
+
14
+
15
+ ## [4.74.0](https://github.com/recurly/recurly-client-ruby/tree/4.74.0) (2026-02-06)
16
+
17
+ [Full Changelog](https://github.com/recurly/recurly-client-ruby/compare/4.73.0...4.74.0)
18
+
19
+
20
+ **Merged Pull Requests**
21
+
22
+ - Generated Latest Changes for v2021-02-25 [#947](https://github.com/recurly/recurly-client-ruby/pull/947) ([recurly-integrations](https://github.com/recurly-integrations))
23
+
24
+
25
+
3
26
  ## [4.73.0](https://github.com/recurly/recurly-client-ruby/tree/4.73.0) (2025-12-12)
4
27
 
5
28
  [Full Changelog](https://github.com/recurly/recurly-client-ruby/compare/4.72.0...4.73.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.73'
8
+ gem 'recurly', '~> 4.75'
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}
@@ -745,6 +759,36 @@ module Recurly
745
759
  delete(path, **options)
746
760
  end
747
761
 
762
+ # Show the coupon redemption
763
+ #
764
+ # {https://developers.recurly.com/api/v2021-02-25#operation/get_coupon_redemption get_coupon_redemption api documentation}
765
+ #
766
+ # @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+.
767
+ # @param coupon_redemption_id [String] Coupon Redemption ID or UUID. For ID no prefix is used e.g. +e28zov4fw0v2+. For UUID use prefix +uuid-+, e.g. +uuid-123457890+.
768
+ # @param params [Hash] Optional query string parameters:
769
+ #
770
+ # @return [Resources::CouponRedemption] A coupon redemption.
771
+ #
772
+ def get_coupon_redemption(account_id:, coupon_redemption_id:, **options)
773
+ path = interpolate_path("/accounts/{account_id}/coupon_redemptions/{coupon_redemption_id}", account_id: account_id, coupon_redemption_id: coupon_redemption_id)
774
+ get(path, **options)
775
+ end
776
+
777
+ # Delete the coupon redemption
778
+ #
779
+ # {https://developers.recurly.com/api/v2021-02-25#operation/remove_coupon_redemption_by_id remove_coupon_redemption_by_id api documentation}
780
+ #
781
+ # @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+.
782
+ # @param coupon_redemption_id [String] Coupon Redemption ID or UUID. For ID no prefix is used e.g. +e28zov4fw0v2+. For UUID use prefix +uuid-+, e.g. +uuid-123457890+.
783
+ # @param params [Hash] Optional query string parameters:
784
+ #
785
+ # @return [Resources::CouponRedemption] Coupon redemption deleted.
786
+ #
787
+ def remove_coupon_redemption_by_id(account_id:, coupon_redemption_id:, **options)
788
+ path = interpolate_path("/accounts/{account_id}/coupon_redemptions/{coupon_redemption_id}", account_id: account_id, coupon_redemption_id: coupon_redemption_id)
789
+ delete(path, **options)
790
+ end
791
+
748
792
  # List an account's credit payments
749
793
  #
750
794
  # {https://developers.recurly.com/api/v2021-02-25#operation/list_account_credit_payments list_account_credit_payments api documentation}
@@ -1715,6 +1759,21 @@ module Recurly
1715
1759
  post(path, body, Requests::CouponBulkCreate, **options)
1716
1760
  end
1717
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
+
1718
1777
  # Restore an inactive coupon
1719
1778
  #
1720
1779
  # {https://developers.recurly.com/api/v2021-02-25#operation/restore_coupon restore_coupon api documentation}
@@ -4194,6 +4253,36 @@ module Recurly
4194
4253
  pager(path, **options)
4195
4254
  end
4196
4255
 
4256
+ # Show the coupon redemption for a subscription
4257
+ #
4258
+ # {https://developers.recurly.com/api/v2021-02-25#operation/get_subscription_coupon_redemption get_subscription_coupon_redemption api documentation}
4259
+ #
4260
+ # @param subscription_id [String] Subscription ID or UUID. For ID no prefix is used e.g. +e28zov4fw0v2+. For UUID use prefix +uuid-+, e.g. +uuid-123457890+.
4261
+ # @param coupon_redemption_id [String] Coupon Redemption ID or UUID. For ID no prefix is used e.g. +e28zov4fw0v2+. For UUID use prefix +uuid-+, e.g. +uuid-123457890+.
4262
+ # @param params [Hash] Optional query string parameters:
4263
+ #
4264
+ # @return [Resources::CouponRedemption] The coupon redemption on a subscription.
4265
+ #
4266
+ def get_subscription_coupon_redemption(subscription_id:, coupon_redemption_id:, **options)
4267
+ path = interpolate_path("/subscriptions/{subscription_id}/coupon_redemptions/{coupon_redemption_id}", subscription_id: subscription_id, coupon_redemption_id: coupon_redemption_id)
4268
+ get(path, **options)
4269
+ end
4270
+
4271
+ # Delete the coupon redemption from a subscription
4272
+ #
4273
+ # {https://developers.recurly.com/api/v2021-02-25#operation/remove_subscription_coupon_redemption remove_subscription_coupon_redemption api documentation}
4274
+ #
4275
+ # @param subscription_id [String] Subscription ID or UUID. For ID no prefix is used e.g. +e28zov4fw0v2+. For UUID use prefix +uuid-+, e.g. +uuid-123457890+.
4276
+ # @param coupon_redemption_id [String] Coupon Redemption ID or UUID. For ID no prefix is used e.g. +e28zov4fw0v2+. For UUID use prefix +uuid-+, e.g. +uuid-123457890+.
4277
+ # @param params [Hash] Optional query string parameters:
4278
+ #
4279
+ # @return [Resources::CouponRedemption] Coupon redemption deleted.
4280
+ #
4281
+ def remove_subscription_coupon_redemption(subscription_id:, coupon_redemption_id:, **options)
4282
+ path = interpolate_path("/subscriptions/{subscription_id}/coupon_redemptions/{coupon_redemption_id}", subscription_id: subscription_id, coupon_redemption_id: coupon_redemption_id)
4283
+ delete(path, **options)
4284
+ end
4285
+
4197
4286
  # List a subscription add-on's usage records
4198
4287
  #
4199
4288
  # {https://developers.recurly.com/api/v2021-02-25#operation/list_usage list_usage api documentation}
@@ -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
@@ -6,6 +6,10 @@ module Recurly
6
6
  module Requests
7
7
  class CreditApplicationPolicy < Request
8
8
 
9
+ # @!attribute allowed_origins
10
+ # @return [Array[String]] Optional array of credit invoice origin types to allow when mode is `all`. If not specified when mode is `all`, credits from all origins are applied. Only valid when mode is `all`.
11
+ define_attribute :allowed_origins, Array, { :item_type => String }
12
+
9
13
  # @!attribute mode
10
14
  # @return [String] Determines which credit invoices are applied to invoices: - `all`: All available credit invoices are applied (default) - `none`: No credit invoices are applied automatically
11
15
  define_attribute :mode, String
@@ -23,7 +23,7 @@ module Recurly
23
23
  define_attribute :collection_method, String
24
24
 
25
25
  # @!attribute credit_application_policy
26
- # @return [CreditApplicationPolicy] Controls whether credit invoices are automatically applied to new invoices. The `mode` field determines the application behavior.
26
+ # @return [CreditApplicationPolicy] Controls whether credit invoices are automatically applied to new invoices. The `mode` field determines the application behavior. When mode is `all`, the optional `allowed_origins` array can restrict which credit invoice origins are applied.
27
27
  define_attribute :credit_application_policy, :CreditApplicationPolicy
28
28
 
29
29
  # @!attribute credit_customer_notes
@@ -31,7 +31,7 @@ module Recurly
31
31
  define_attribute :coupon_codes, Array, { :item_type => String }
32
32
 
33
33
  # @!attribute credit_application_policy_override
34
- # @return [CreditApplicationPolicy] Controls whether credit invoices are automatically applied to new invoices. The `mode` field determines the application behavior.
34
+ # @return [CreditApplicationPolicy] Controls whether credit invoices are automatically applied to new invoices. The `mode` field determines the application behavior. When mode is `all`, the optional `allowed_origins` array can restrict which credit invoice origins are applied.
35
35
  define_attribute :credit_application_policy_override, :CreditApplicationPolicy
36
36
 
37
37
  # @!attribute credit_customer_notes
@@ -43,7 +43,7 @@ module Recurly
43
43
  define_attribute :coupon_codes, Array, { :item_type => String }
44
44
 
45
45
  # @!attribute credit_application_policy
46
- # @return [CreditApplicationPolicy] Controls whether credit invoices are automatically applied to new invoices. The `mode` field determines the application behavior.
46
+ # @return [CreditApplicationPolicy] Controls whether credit invoices are automatically applied to new invoices. The `mode` field determines the application behavior. When mode is `all`, the optional `allowed_origins` array can restrict which credit invoice origins are applied.
47
47
  define_attribute :credit_application_policy, :CreditApplicationPolicy
48
48
 
49
49
  # @!attribute credit_customer_notes
@@ -19,7 +19,7 @@ module Recurly
19
19
  define_attribute :bulk, :Boolean
20
20
 
21
21
  # @!attribute credit_application_policy
22
- # @return [CreditApplicationPolicy] Controls whether credit invoices are automatically applied to new invoices. The `mode` field determines the application behavior.
22
+ # @return [CreditApplicationPolicy] Controls whether credit invoices are automatically applied to new invoices. The `mode` field determines the application behavior. When mode is `all`, the optional `allowed_origins` array can restrict which credit invoice origins are applied.
23
23
  define_attribute :credit_application_policy, :CreditApplicationPolicy
24
24
 
25
25
  # @!attribute custom_fields
@@ -19,7 +19,7 @@ module Recurly
19
19
  define_attribute :collection_method, String
20
20
 
21
21
  # @!attribute credit_application_policy
22
- # @return [CreditApplicationPolicy] Controls whether credit invoices are automatically applied to new invoices. The `mode` field determines the application behavior.
22
+ # @return [CreditApplicationPolicy] Controls whether credit invoices are automatically applied to new invoices. The `mode` field determines the application behavior. When mode is `all`, the optional `allowed_origins` array can restrict which credit invoice origins are applied.
23
23
  define_attribute :credit_application_policy, :CreditApplicationPolicy
24
24
 
25
25
  # @!attribute custom_fields
@@ -49,6 +49,10 @@ module Recurly
49
49
  # @!attribute updated_at
50
50
  # @return [DateTime] Last updated at
51
51
  define_attribute :updated_at, DateTime
52
+
53
+ # @!attribute uuid
54
+ # @return [String] The UUID is useful for matching data with the CSV exports and building URLs into Recurly's UI.
55
+ define_attribute :uuid, String
52
56
  end
53
57
  end
54
58
  end
@@ -6,6 +6,10 @@ module Recurly
6
6
  module Resources
7
7
  class CreditApplicationPolicy < Resource
8
8
 
9
+ # @!attribute allowed_origins
10
+ # @return [Array[String]] Optional array of credit invoice origin types to allow when mode is `all`. If not specified when mode is `all`, credits from all origins are applied. Only valid when mode is `all`.
11
+ define_attribute :allowed_origins, Array, { :item_type => String }
12
+
9
13
  # @!attribute mode
10
14
  # @return [String] Determines which credit invoices are applied to invoices: - `all`: All available credit invoices are applied (default) - `none`: No credit invoices are applied automatically
11
15
  define_attribute :mode, String
@@ -17,6 +17,10 @@ module Recurly
17
17
  # @!attribute object
18
18
  # @return [String] Object type
19
19
  define_attribute :object, String
20
+
21
+ # @!attribute verification_transactions
22
+ # @return [Array[Transaction]] Verification transactions (used for free trial payment method validation)
23
+ define_attribute :verification_transactions, Array, { :item_type => :Transaction }
20
24
  end
21
25
  end
22
26
  end
@@ -67,7 +67,7 @@ module Recurly
67
67
  define_attribute :created_at, DateTime
68
68
 
69
69
  # @!attribute credit_application_policy
70
- # @return [CreditApplicationPolicy] Controls whether credit invoices are automatically applied to new invoices. The `mode` field determines the application behavior.
70
+ # @return [CreditApplicationPolicy] Controls whether credit invoices are automatically applied to new invoices. The `mode` field determines the application behavior. When mode is `all`, the optional `allowed_origins` array can restrict which credit invoice origins are applied.
71
71
  define_attribute :credit_application_policy, :CreditApplicationPolicy
72
72
 
73
73
  # @!attribute currency
@@ -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.73.0"
2
+ VERSION = "4.75.0"
3
3
  end
data/openapi/api.yaml CHANGED
@@ -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"
@@ -3312,6 +3351,70 @@ paths:
3312
3351
  {\n\t\tfmt.Printf(\"Resource not found: %v\", e)\n\t\treturn nil, err\n\t}\n\tfmt.Printf(\"Unexpected
3313
3352
  Recurly error: %v\", e)\n\treturn nil, err\n}\n\nfmt.Printf(\"Removed Coupon
3314
3353
  Redemption: %v\", couponRedemption.Id)"
3354
+ "/accounts/{account_id}/coupon_redemptions/{coupon_redemption_id}":
3355
+ get:
3356
+ tags:
3357
+ - coupon_redemption
3358
+ operationId: get_coupon_redemption
3359
+ summary: Show the coupon redemption
3360
+ parameters:
3361
+ - "$ref": "#/components/parameters/account_id"
3362
+ - "$ref": "#/components/parameters/coupon_redemption_id"
3363
+ responses:
3364
+ '200':
3365
+ description: A coupon redemption.
3366
+ content:
3367
+ application/json:
3368
+ schema:
3369
+ "$ref": "#/components/schemas/CouponRedemption"
3370
+ '404':
3371
+ description: Incorrect site, account ID, or coupon redemption ID.
3372
+ content:
3373
+ application/json:
3374
+ schema:
3375
+ "$ref": "#/components/schemas/Error"
3376
+ default:
3377
+ description: Unexpected error.
3378
+ content:
3379
+ application/json:
3380
+ schema:
3381
+ "$ref": "#/components/schemas/Error"
3382
+ x-code-samples: []
3383
+ delete:
3384
+ tags:
3385
+ - coupon_redemption
3386
+ operationId: remove_coupon_redemption_by_id
3387
+ summary: Delete the coupon redemption
3388
+ description: Deactivate the coupon redemption on an account.
3389
+ parameters:
3390
+ - "$ref": "#/components/parameters/account_id"
3391
+ - "$ref": "#/components/parameters/coupon_redemption_id"
3392
+ responses:
3393
+ '200':
3394
+ description: Coupon redemption deleted.
3395
+ content:
3396
+ application/json:
3397
+ schema:
3398
+ "$ref": "#/components/schemas/CouponRedemption"
3399
+ '404':
3400
+ description: Incorrect site, account ID, or coupon redemption ID.
3401
+ content:
3402
+ application/json:
3403
+ schema:
3404
+ "$ref": "#/components/schemas/Error"
3405
+ '422':
3406
+ description: The coupon redemption is already expired or inactive.
3407
+ content:
3408
+ application/json:
3409
+ schema:
3410
+ "$ref": "#/components/schemas/Error"
3411
+ default:
3412
+ description: Unexpected error.
3413
+ content:
3414
+ application/json:
3415
+ schema:
3416
+ "$ref": "#/components/schemas/Error"
3417
+ x-code-samples: []
3315
3418
  "/accounts/{account_id}/credit_payments":
3316
3419
  get:
3317
3420
  tags:
@@ -6441,6 +6544,55 @@ paths:
6441
6544
  schema:
6442
6545
  "$ref": "#/components/schemas/Error"
6443
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: []
6444
6596
  "/coupons/{coupon_id}/restore":
6445
6597
  put:
6446
6598
  tags:
@@ -14749,6 +14901,70 @@ paths:
14749
14901
  e, ok := err.(*recurly.Error); ok {\n\t\tfmt.Printf(\"Failed to retrieve
14750
14902
  next page: %v\", e)\n\t\tbreak\n\t}\n\tfor i, redemption := range subCouponRedemptions.Data()
14751
14903
  {\n\t\tfmt.Printf(\"Subscription Coupon Redemption %3d: %s\\n\",\n\t\t\ti,\n\t\t\tredemption.Id,\n\t\t)\n\t}\n}"
14904
+ "/subscriptions/{subscription_id}/coupon_redemptions/{coupon_redemption_id}":
14905
+ get:
14906
+ tags:
14907
+ - coupon_redemption
14908
+ operationId: get_subscription_coupon_redemption
14909
+ summary: Show the coupon redemption for a subscription
14910
+ parameters:
14911
+ - "$ref": "#/components/parameters/subscription_id"
14912
+ - "$ref": "#/components/parameters/coupon_redemption_id"
14913
+ responses:
14914
+ '200':
14915
+ description: The coupon redemption on a subscription.
14916
+ content:
14917
+ application/json:
14918
+ schema:
14919
+ "$ref": "#/components/schemas/CouponRedemption"
14920
+ '404':
14921
+ description: Incorrect site, subscription ID, or coupon redemption ID.
14922
+ content:
14923
+ application/json:
14924
+ schema:
14925
+ "$ref": "#/components/schemas/Error"
14926
+ default:
14927
+ description: Unexpected error.
14928
+ content:
14929
+ application/json:
14930
+ schema:
14931
+ "$ref": "#/components/schemas/Error"
14932
+ x-code-samples: []
14933
+ delete:
14934
+ tags:
14935
+ - coupon_redemption
14936
+ operationId: remove_subscription_coupon_redemption
14937
+ summary: Delete the coupon redemption from a subscription
14938
+ description: Deactivate the coupon redemption on a subscription.
14939
+ parameters:
14940
+ - "$ref": "#/components/parameters/subscription_id"
14941
+ - "$ref": "#/components/parameters/coupon_redemption_id"
14942
+ responses:
14943
+ '200':
14944
+ description: Coupon redemption deleted.
14945
+ content:
14946
+ application/json:
14947
+ schema:
14948
+ "$ref": "#/components/schemas/CouponRedemption"
14949
+ '404':
14950
+ description: Incorrect site, subscription ID, or coupon redemption ID.
14951
+ content:
14952
+ application/json:
14953
+ schema:
14954
+ "$ref": "#/components/schemas/Error"
14955
+ '422':
14956
+ description: The coupon redemption is already expired or inactive.
14957
+ content:
14958
+ application/json:
14959
+ schema:
14960
+ "$ref": "#/components/schemas/Error"
14961
+ default:
14962
+ description: Unexpected error.
14963
+ content:
14964
+ application/json:
14965
+ schema:
14966
+ "$ref": "#/components/schemas/Error"
14967
+ x-code-samples: []
14752
14968
  "/subscriptions/{subscription_id}/add_ons/{add_on_id}/usage":
14753
14969
  get:
14754
14970
  tags:
@@ -17051,6 +17267,14 @@ components:
17051
17267
  required: true
17052
17268
  schema:
17053
17269
  type: string
17270
+ coupon_redemption_id:
17271
+ name: coupon_redemption_id
17272
+ in: path
17273
+ description: Coupon Redemption ID or UUID. For ID no prefix is used e.g. `e28zov4fw0v2`.
17274
+ For UUID use prefix `uuid-`, e.g. `uuid-123457890`.
17275
+ required: true
17276
+ schema:
17277
+ type: string
17054
17278
  credit_payment_id:
17055
17279
  name: credit_payment_id
17056
17280
  in: path
@@ -19705,6 +19929,18 @@ components:
19705
19929
  description: The quantity of unique coupon codes to generate. A bulk coupon
19706
19930
  can have up to 100,000 unique codes (or your site's configured limit).
19707
19931
  minimum: 1
19932
+ CouponBulkCreateSync:
19933
+ type: object
19934
+ properties:
19935
+ number_of_unique_codes:
19936
+ type: integer
19937
+ title: Number of unique codes
19938
+ description: The quantity of unique coupon codes to generate. A bulk coupon
19939
+ can have up to 100,000 unique codes (or your site's configured limit).
19940
+ minimum: 1
19941
+ maximum: 200
19942
+ required:
19943
+ - number_of_unique_codes
19708
19944
  CouponMini:
19709
19945
  type: object
19710
19946
  properties:
@@ -19754,6 +19990,13 @@ components:
19754
19990
  title: Object type
19755
19991
  description: Will always be `coupon`.
19756
19992
  readOnly: true
19993
+ uuid:
19994
+ type: string
19995
+ title: Recurly UUID
19996
+ description: The UUID is useful for matching data with the CSV exports and
19997
+ building URLs into Recurly's UI.
19998
+ maxLength: 32
19999
+ readOnly: true
19757
20000
  account:
19758
20001
  type: object
19759
20002
  title: Account
@@ -20974,6 +21217,13 @@ components:
20974
21217
  title: Credit invoices
20975
21218
  items:
20976
21219
  "$ref": "#/components/schemas/Invoice"
21220
+ verification_transactions:
21221
+ type: array
21222
+ title: Verification transactions
21223
+ description: Verification transactions (used for free trial payment method
21224
+ validation)
21225
+ items:
21226
+ "$ref": "#/components/schemas/Transaction"
20977
21227
  InvoiceUpdate:
20978
21228
  type: object
20979
21229
  properties:
@@ -25093,6 +25343,28 @@ components:
25093
25343
  "$ref": "#/components/schemas/Transaction/properties/initiator"
25094
25344
  merchant_reason_code:
25095
25345
  "$ref": "#/components/schemas/Transaction/properties/merchant_reason_code"
25346
+ skip_gateway_fraud:
25347
+ type: boolean
25348
+ title: Skip Gateway Fraud
25349
+ description: When set to `true`, instructs the payment gateway to
25350
+ skip fraud checks for this transaction. This is useful for recurring
25351
+ transactions where fraud checks have already been performed on the
25352
+ initial transaction. Note that not all gateways support this feature.
25353
+ For Stripe, this skips Radar fraud rules; for Adyen, this skips
25354
+ skip_recurly_fraud:
25355
+ type: boolean
25356
+ title: Skip Recurly Fraud
25357
+ description: When set to `true`, skips Recurly's fraud detection checks
25358
+ for this transaction, including Kount and IP-based fraud screening.
25359
+ Does not affect gateway-level fraud checks. Use `skip_all_fraud`
25360
+ to skip all fraud checks.
25361
+ skip_all_fraud:
25362
+ type: boolean
25363
+ title: Skip All Fraud
25364
+ description: When set to `true`, skips all fraud checks for this transaction,
25365
+ including both gateway-level fraud checks and Recurly's fraud detection
25366
+ services. This is useful for trusted transactions where fraud screening
25367
+ is not required.
25096
25368
  customer_notes:
25097
25369
  type: string
25098
25370
  title: Customer notes
@@ -25680,6 +25952,20 @@ components:
25680
25952
  type: string
25681
25953
  format: date-time
25682
25954
  description: When the external product was updated in Recurly.
25955
+ UniqueCouponCodeGenerationResponse:
25956
+ type: object
25957
+ properties:
25958
+ object:
25959
+ type: string
25960
+ title: Object type
25961
+ readOnly: true
25962
+ unique_coupon_codes:
25963
+ type: array
25964
+ title: Unique coupon codes
25965
+ description: An array containing the newly generated unique coupon codes.
25966
+ maxItems: 200
25967
+ items:
25968
+ "$ref": "#/components/schemas/UniqueCouponCode"
25683
25969
  ExternalSubscription:
25684
25970
  type: object
25685
25971
  description: Subscription from an external resource such as Apple App Store
@@ -27091,9 +27377,13 @@ components:
27091
27377
  default: all
27092
27378
  enum:
27093
27379
  - pending
27380
+ - processing
27094
27381
  - past_due
27095
27382
  - paid
27096
27383
  - failed
27384
+ - open
27385
+ - closed
27386
+ - voided
27097
27387
  CollectionMethodEnum:
27098
27388
  type: string
27099
27389
  enum:
@@ -27104,10 +27394,20 @@ components:
27104
27394
  title: Credit Application Policy
27105
27395
  description: |
27106
27396
  Controls whether credit invoices are automatically applied to new invoices.
27107
- The `mode` field determines the application behavior.
27397
+ The `mode` field determines the application behavior. When mode is `all`,
27398
+ the optional `allowed_origins` array can restrict which credit invoice origins
27399
+ are applied.
27108
27400
  properties:
27109
27401
  mode:
27110
27402
  "$ref": "#/components/schemas/CreditApplicationModeEnum"
27403
+ allowed_origins:
27404
+ type: array
27405
+ description: |
27406
+ Optional array of credit invoice origin types to allow when mode is `all`.
27407
+ If not specified when mode is `all`, credits from all origins are applied.
27408
+ Only valid when mode is `all`.
27409
+ items:
27410
+ "$ref": "#/components/schemas/CreditApplicationAllowedOriginTypeEnum"
27111
27411
  required:
27112
27412
  - mode
27113
27413
  CreditApplicationModeEnum:
@@ -27121,6 +27421,25 @@ components:
27121
27421
  - all
27122
27422
  - none
27123
27423
  default: all
27424
+ CreditApplicationAllowedOriginTypeEnum:
27425
+ type: string
27426
+ title: Credit Application Allowed Origin Type
27427
+ description: The origin type of a credit invoice that can be allowed in a credit
27428
+ application policy
27429
+ enum:
27430
+ - line_item_refund
27431
+ - open_amount_refund
27432
+ - immediate_change
27433
+ - termination
27434
+ - credit
27435
+ - write_off
27436
+ - refund
27437
+ - external_refund
27438
+ - carryforward_credit
27439
+ - usage_correction
27440
+ - prepayment
27441
+ - gift_card
27442
+ - carryforward_gift_credit
27124
27443
  InvoiceRefundTypeEnum:
27125
27444
  type: string
27126
27445
  enum:
@@ -27372,6 +27691,7 @@ components:
27372
27691
  - pix_automatico
27373
27692
  - mercadopago
27374
27693
  - klarna
27694
+ - braintree_google_pay
27375
27695
  CardTypeEnum:
27376
27696
  type: string
27377
27697
  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.73.0
4
+ version: 4.75.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Recurly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-12-12 00:00:00.000000000 Z
11
+ date: 2026-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -135,7 +135,6 @@ files:
135
135
  - ".github/ISSUE_TEMPLATE/question-or-other.md"
136
136
  - ".github/codeql/codeql-config.yml"
137
137
  - ".github/workflows/ci.yml"
138
- - ".github/workflows/codeql.yml"
139
138
  - ".github/workflows/docs.yml"
140
139
  - ".github/workflows/pr-review.yml"
141
140
  - ".gitignore"
@@ -179,6 +178,7 @@ files:
179
178
  - lib/recurly/requests/billing_info_verify.rb
180
179
  - lib/recurly/requests/billing_info_verify_cvv.rb
181
180
  - lib/recurly/requests/coupon_bulk_create.rb
181
+ - lib/recurly/requests/coupon_bulk_create_sync.rb
182
182
  - lib/recurly/requests/coupon_create.rb
183
183
  - lib/recurly/requests/coupon_pricing.rb
184
184
  - lib/recurly/requests/coupon_redemption_create.rb
@@ -361,6 +361,7 @@ files:
361
361
  - lib/recurly/resources/transaction_next_action.rb
362
362
  - lib/recurly/resources/transaction_payment_gateway.rb
363
363
  - lib/recurly/resources/unique_coupon_code.rb
364
+ - lib/recurly/resources/unique_coupon_code_generation_response.rb
364
365
  - lib/recurly/resources/unique_coupon_code_params.rb
365
366
  - lib/recurly/resources/usage.rb
366
367
  - lib/recurly/resources/user.rb
@@ -389,7 +390,7 @@ metadata:
389
390
  changelog_uri: https://github.com/recurly/recurly-client-ruby/blob/master/CHANGELOG.md
390
391
  documentation_uri: https://recurly.github.io/recurly-client-ruby/
391
392
  homepage_uri: https://github.com/recurly/recurly-client-ruby
392
- source_code_uri: https://github.com/recurly/recurly-client-ruby/tree/4.73.0
393
+ source_code_uri: https://github.com/recurly/recurly-client-ruby/tree/4.75.0
393
394
  post_install_message:
394
395
  rdoc_options: []
395
396
  require_paths:
@@ -1,66 +0,0 @@
1
- # Managed by Security
2
- name: "Security check - CodeQL"
3
-
4
- on:
5
- pull_request:
6
- workflow_dispatch:
7
- push:
8
- branches:
9
- - staging
10
- - main
11
- - master
12
-
13
- jobs:
14
- analyze:
15
- name: Analyze
16
- runs-on: ubuntu-latest
17
- permissions:
18
- actions: read
19
- contents: read
20
- security-events: write
21
-
22
- strategy:
23
- fail-fast: false
24
- matrix:
25
- language: [ 'ruby', 'javascript' ]
26
- # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
27
- # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
28
-
29
- steps:
30
- - name: Checkout repository
31
- uses: actions/checkout@v3
32
-
33
- # Initializes the CodeQL tools for scanning.
34
- - name: Initialize CodeQL
35
- uses: github/codeql-action/init@v2
36
- with:
37
- languages: ${{ matrix.language }}
38
- config-file: ./.github/codeql/codeql-config.yml
39
- # If you wish to specify custom queries, you can do so here or in a config file.
40
- # By default, queries listed here will override any specified in a config file.
41
- # Prefix the list here with "+" to use these queries and those in the config file.
42
-
43
- # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
44
- queries: + security-and-quality
45
-
46
-
47
- # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
48
- # If this step fails, then you should remove it and run the build manually (see below)
49
- - name: Autobuild
50
- uses: github/codeql-action/autobuild@v2
51
-
52
- # ℹ️ Command-line programs to run using the OS shell.
53
- # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
54
-
55
- # If the Autobuild fails above, remove it and uncomment the following three lines.
56
- # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
57
-
58
- # - run: |
59
- # echo "Run, Build Application using script"
60
- # ./location_of_script_within_repo/buildscript.sh
61
-
62
- - name: Perform CodeQL Analysis
63
- uses: github/codeql-action/analyze@v2
64
- continue-on-error: true
65
- with:
66
- category: "/language:${{matrix.language}}"