@mercurjs/docs 2.3.4-canary.0 → 2.3.4-canary.10

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.
@@ -39,6 +39,7 @@ Applies attribute changes to the product in the order `remove` → `add` → `up
39
39
  <ParamField body="title" type="string">New attribute title.</ParamField>
40
40
  <ParamField body="add" type="(string | object)[]">Value names (or `{ value }` objects) to add to the selection.</ParamField>
41
41
  <ParamField body="remove" type="string[]">Value IDs to remove from the selection.</ParamField>
42
+ <ParamField body="value_ids" type="string[]">The complete set of value IDs the product should hold for this attribute. Resolved into the equivalent `add` / `remove` delta, so it cannot be combined with either.</ParamField>
42
43
  <ParamField body="value" type="string | number | boolean">New scalar value for non-select types.</ParamField>
43
44
  </Expandable>
44
45
  </ParamField>
@@ -46,6 +46,7 @@ Stages attribute operations as a pending change request instead of applying them
46
46
  <ParamField body="title" type="string">New attribute title.</ParamField>
47
47
  <ParamField body="add" type="(string | object)[]">Values to select, plain strings or `{ "value": "..." }` objects.</ParamField>
48
48
  <ParamField body="remove" type="string[]">Value IDs to deselect.</ParamField>
49
+ <ParamField body="value_ids" type="string[]">The complete set of value IDs the product should hold for this attribute. Resolved into the equivalent `add` / `remove` delta, so it cannot be combined with either.</ParamField>
49
50
  <ParamField body="value" type="string | number | boolean">New scalar value for `text`, `unit`, or `toggle` attributes.</ParamField>
50
51
  </Expandable>
51
52
  </ParamField>
@@ -114,8 +114,8 @@ Full RMA suites exist per domain, following the same action pattern Medusa uses
114
114
  | `GET` `POST` `DELETE` | `/vendor/shipping-options/:id` | Retrieve / update / delete an option |
115
115
  | `POST` | `/vendor/shipping-options/:id/rules/batch` | Batch manage option rules |
116
116
  | `GET` | `/vendor/shipping-option-types[/:id]` | List option types |
117
- | `GET` `POST` | `/vendor/shipping-profiles` | List / create profiles |
118
- | `GET` `POST` `DELETE` | `/vendor/shipping-profiles/:id` | Retrieve / update / delete a profile |
117
+ | `GET` | `/vendor/shipping-profiles` | List operator-defined profiles |
118
+ | `GET` | `/vendor/shipping-profiles/:id` | Retrieve a profile |
119
119
  | `DELETE` | `/vendor/fulfillment-sets/:id` | Delete a fulfillment set |
120
120
  | `POST` | `/vendor/fulfillment-sets/:id/service-zones` | Create a service zone |
121
121
  | `GET` `POST` `DELETE` | `/vendor/fulfillment-sets/:id/service-zones/:zone_id` | Manage a service zone |
@@ -193,9 +193,17 @@ You need **two separate webhook endpoints** in Stripe: one for payment events, o
193
193
  - `payment_intent.succeeded`
194
194
  - `payment_intent.amount_capturable_updated`
195
195
  - `payment_intent.payment_failed`
196
- - `charge.refunded`
196
+ - `payment_intent.partially_funded` (optional, only if you support that recovery flow)
197
197
 
198
198
  Copy the signing secret and set it as `STRIPE_WEBHOOK_SECRET` in your `.env`.
199
+
200
+ <Note>
201
+ With `capture: false`, Stripe sends `payment_intent.amount_capturable_updated` as soon as the payment is authorized, which can be before the storefront calls `POST /store/carts/:id/complete`. A webhook-driven completion runs `completeCartWithSplitOrdersWorkflow` under the same cart lock as the store route, so it still produces an order group with per-seller orders. It also completes carts whose customer left right after authenticating, so keep it enabled.
202
+ </Note>
203
+
204
+ <Warning>
205
+ Don't rely on `charge.refunded` for seller reconciliation. The Medusa Stripe provider doesn't act on it, and it never reverses Stripe Connect Transfers. See [Refunds and reversals](#refunds-and-reversals).
206
+ </Warning>
199
207
  </Step>
200
208
  <Step title="Add the payout webhook (Mercur)">
201
209
  Add a second webhook endpoint in the Stripe Dashboard.
@@ -298,6 +306,8 @@ Refunding a charge does **not** automatically reverse the associated transfers.
298
306
  1. **Refund the PaymentIntent.** Returns funds to the customer's payment method
299
307
  2. **Reverse the Transfer(s).** Claws back funds from the connected account(s)
300
308
 
309
+ Mercur doesn't reverse transfers for you. The Stripe Connect payout provider only handles `account.updated`, and a `charge.refunded` event is not confirmation that any seller transfer was reversed. If you refund after a seller has been paid out, reconcile their side yourself, either with a transfer reversal or by deducting the amount from their next payout.
310
+
301
311
  For a full refund of a multi-seller order, you would need to reverse each seller's transfer individually. For partial refunds, you need to calculate how much to reverse from each seller based on which items are being refunded.
302
312
 
303
313
  <Info>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mercurjs/docs",
3
- "version": "2.3.4-canary.0",
3
+ "version": "2.3.4-canary.10",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/mercurjs/mercur",