@@ -179,6 +179,35 @@ info:
179179 header contains an integer value representing the time, measured in
180180 seconds since the UNIX Epoch, at which the request count will be reset.
181181
182+ ## Idempotent Requests
183+
184+ Recurly supports idempotent requests via the `Idempotency-Key` header for
185+ `POST`, `PUT`, `PATCH`, and `DELETE` requests. This allows API clients to
186+ safely retry these requests without risk of duplicate operations.
187+
188+ When you send a request with an `Idempotency-Key` header, Recurly stores the
189+ response for **1 hour**. If you send an identical request (same key, method,
190+ path, and API key) within that window, Recurly replays the original response
191+ rather than processing a new one. The replay response includes an
192+ `Idempotency-Prior: true` header.
193+
194+ If a request with the same key is **already in flight** when a second arrives,
195+ the server returns `409 Conflict` with `Recurly-Should-Retry: true` and a
196+ `Retry-After` header indicating how long to wait in seconds before retrying.
197+
198+ > **Note:** `429 Too Many Requests` responses are intentionally **not** cached.
199+ > You may retry freely once your rate limit resets without risk of unintended
200+ > replay behavior.
201+
202+ Keys must be **255 characters or fewer**. Keys exceeding this limit will
203+ receive a `400 Bad Request` response. We recommend using a UUID v4 as your
204+ key to guarantee uniqueness.
205+
206+ > **SDK support:** Native `Idempotency-Key` management (automatic key
207+ > generation, retry handling, and replay detection) is currently supported only
208+ > in the **Ruby SDK**. When using other SDKs or raw HTTP clients, you must
209+ > supply and manage the `Idempotency-Key` header yourself.
210+
182211 ## Change Log
183212
184213 A list of changes for this version can be found [in the changelog](https://recurly.com/developers/api/changelog.html#v2021-02-25---current-ga-version).
@@ -18737,6 +18766,14 @@ components:
1873718766 at the root level and must not be included in individual line items.
1873818767 items:
1873918768 "$ref": "#/components/schemas/RecoveryLineItemCreate"
18769+ transaction_descriptor_suffix:
18770+ type: string
18771+ title: Transaction Descriptor Suffix
18772+ maxLength: 255
18773+ description: Optionally overrides the suffix component of the composed transaction
18774+ descriptor. If omitted, the suffix is derived from the subscription's
18775+ plan name or the invoice description, with a Trial prefix on Visa trial
18776+ conversions. Subject to gateway availability and payment method support.
1874018777 required:
1874118778 - currency
1874218779 - due_at
@@ -21585,6 +21622,14 @@ components:
2158521622 with the original subscription.
2158621623 vertex_transaction_type:
2158721624 "$ref": "#/components/schemas/VertexTransactionTypeEnum"
21625+ transaction_descriptor_suffix:
21626+ type: string
21627+ title: Transaction Descriptor Suffix
21628+ maxLength: 255
21629+ description: Optionally overrides the suffix component of the composed transaction
21630+ descriptor. If omitted, the suffix is derived from the subscription's
21631+ plan name or the invoice description, with a Trial prefix on Visa trial
21632+ conversions. Subject to gateway availability and payment method support.
2158821633 required:
2158921634 - currency
2159021635 InvoiceCollect:
@@ -24708,6 +24753,14 @@ components:
2470824753 default: false
2470924754 proration_settings:
2471024755 "$ref": "#/components/schemas/SubscriptionCreateProrationSettings"
24756+ transaction_descriptor_suffix:
24757+ type: string
24758+ title: Transaction Descriptor Suffix
24759+ maxLength: 255
24760+ description: Optionally overrides the suffix component of the composed transaction
24761+ descriptor. If omitted, the suffix is derived from the subscription's
24762+ plan name or the invoice description, with a Trial prefix on Visa trial
24763+ conversions. Subject to gateway availability and payment method support.
2471124764 required:
2471224765 - plan_code
2471324766 - currency
@@ -24927,6 +24980,14 @@ components:
2492724980 billing info to the subscription, all future billing events for the subscription
2492824981 will bill to the specified billing info. `billing_info_id` can ONLY be
2492924982 used for sites utilizing the Wallet feature.
24983+ transaction_descriptor_suffix:
24984+ type: string
24985+ title: Transaction Descriptor Suffix
24986+ maxLength: 255
24987+ description: Optionally overrides the suffix component of the composed transaction
24988+ descriptor. If omitted, the suffix is derived from the subscription's
24989+ plan name or the invoice description, with a Trial prefix on Visa trial
24990+ conversions. Subject to gateway availability and payment method support.
2493024991 SubscriptionPause:
2493124992 type: object
2493224993 properties:
@@ -25786,6 +25847,15 @@ components:
2578625847 including both gateway-level fraud checks and Recurly's fraud detection
2578725848 services. This is useful for trusted transactions where fraud screening
2578825849 is not required.
25850+ descriptor_suffix:
25851+ type: string
25852+ title: Transaction Descriptor Suffix
25853+ maxLength: 255
25854+ description: Optionally overrides the suffix component of the composed
25855+ transaction descriptor. If omitted, the suffix is derived from the
25856+ subscription's plan name or the invoice description, with a Trial
25857+ prefix on Visa trial conversions. Subject to gateway availability
25858+ and payment method support.
2578925859 customer_notes:
2579025860 type: string
2579125861 title: Customer notes
@@ -28120,6 +28190,7 @@ components:
2812028190 - mercadopago
2812128191 - klarna
2812228192 - braintree_google_pay
28193+ - stripe_link
2812328194 CardTypeEnum:
2812428195 type: string
2812528196 enum:
0 commit comments