@mercurjs/docs 2.2.0-canary.40

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.
Files changed (283) hide show
  1. package/README.md +24 -0
  2. package/content/blocks.mdx +209 -0
  3. package/content/learn/architecture.mdx +215 -0
  4. package/content/learn/attributes.mdx +89 -0
  5. package/content/learn/blocks.mdx +99 -0
  6. package/content/learn/commissions.mdx +175 -0
  7. package/content/learn/concepts.mdx +84 -0
  8. package/content/learn/installation.mdx +117 -0
  9. package/content/learn/introduction.mdx +71 -0
  10. package/content/learn/offers.mdx +78 -0
  11. package/content/learn/order-groups.mdx +114 -0
  12. package/content/learn/payouts.mdx +175 -0
  13. package/content/learn/product-requests.mdx +82 -0
  14. package/content/learn/products.mdx +79 -0
  15. package/content/learn/registry.mdx +155 -0
  16. package/content/learn/seller-members.mdx +62 -0
  17. package/content/learn/sellers.mdx +118 -0
  18. package/content/migration/from-1-x-to-2-0.mdx +152 -0
  19. package/content/migration/from-2-0-to-2-1.mdx +105 -0
  20. package/content/migration/overview.mdx +58 -0
  21. package/content/references/api/admin/commission-rates/batch-commission-rules.mdx +70 -0
  22. package/content/references/api/admin/commission-rates/create-commission-rate.mdx +95 -0
  23. package/content/references/api/admin/commission-rates/delete-commission-rate.mdx +40 -0
  24. package/content/references/api/admin/commission-rates/list-commission-rates.mdx +92 -0
  25. package/content/references/api/admin/commission-rates/retrieve-commission-rate.mdx +70 -0
  26. package/content/references/api/admin/commission-rates/update-commission-rate.mdx +84 -0
  27. package/content/references/api/admin/members/list-members.mdx +61 -0
  28. package/content/references/api/admin/offers/batch-create-offers.mdx +130 -0
  29. package/content/references/api/admin/offers/delete-offer.mdx +40 -0
  30. package/content/references/api/admin/offers/list-offers.mdx +106 -0
  31. package/content/references/api/admin/offers/retrieve-offer.mdx +82 -0
  32. package/content/references/api/admin/order-groups/list-order-groups.mdx +77 -0
  33. package/content/references/api/admin/order-groups/retrieve-order-group.mdx +56 -0
  34. package/content/references/api/admin/orders/get-order-commission-lines.mdx +65 -0
  35. package/content/references/api/admin/orders/get-order-order-group.mdx +56 -0
  36. package/content/references/api/admin/orders/list-orders.mdx +79 -0
  37. package/content/references/api/admin/payouts/list-payouts.mdx +75 -0
  38. package/content/references/api/admin/payouts/retrieve-payout.mdx +62 -0
  39. package/content/references/api/admin/product-attributes/create-attribute-value.mdx +76 -0
  40. package/content/references/api/admin/product-attributes/create-product-attribute.mdx +99 -0
  41. package/content/references/api/admin/product-attributes/delete-attribute-value.mdx +52 -0
  42. package/content/references/api/admin/product-attributes/delete-product-attribute.mdx +40 -0
  43. package/content/references/api/admin/product-attributes/list-product-attributes.mdx +91 -0
  44. package/content/references/api/admin/product-attributes/retrieve-product-attribute.mdx +81 -0
  45. package/content/references/api/admin/product-attributes/update-attribute-value.mdx +66 -0
  46. package/content/references/api/admin/product-attributes/update-product-attribute.mdx +76 -0
  47. package/content/references/api/admin/product-changes/cancel-product-change.mdx +68 -0
  48. package/content/references/api/admin/product-changes/confirm-product-change.mdx +47 -0
  49. package/content/references/api/admin/products/batch-product-attributes.mdx +96 -0
  50. package/content/references/api/admin/products/confirm-product.mdx +59 -0
  51. package/content/references/api/admin/products/create-product-variant.mdx +78 -0
  52. package/content/references/api/admin/products/create-product.mdx +169 -0
  53. package/content/references/api/admin/products/delete-product-variant.mdx +48 -0
  54. package/content/references/api/admin/products/delete-product.mdx +40 -0
  55. package/content/references/api/admin/products/list-product-variants.mdx +91 -0
  56. package/content/references/api/admin/products/list-products.mdx +109 -0
  57. package/content/references/api/admin/products/preview-product.mdx +78 -0
  58. package/content/references/api/admin/products/reject-product.mdx +59 -0
  59. package/content/references/api/admin/products/request-product-changes.mdx +59 -0
  60. package/content/references/api/admin/products/retrieve-product-variant.mdx +73 -0
  61. package/content/references/api/admin/products/retrieve-product.mdx +96 -0
  62. package/content/references/api/admin/products/set-product-sellers.mdx +47 -0
  63. package/content/references/api/admin/products/update-product-variant.mdx +89 -0
  64. package/content/references/api/admin/products/update-product.mdx +133 -0
  65. package/content/references/api/admin/sellers/add-seller-member.mdx +63 -0
  66. package/content/references/api/admin/sellers/approve-seller.mdx +54 -0
  67. package/content/references/api/admin/sellers/create-seller.mdx +100 -0
  68. package/content/references/api/admin/sellers/delete-member-invite.mdx +42 -0
  69. package/content/references/api/admin/sellers/delete-professional-details.mdx +52 -0
  70. package/content/references/api/admin/sellers/invite-seller-member.mdx +63 -0
  71. package/content/references/api/admin/sellers/list-member-invites.mdx +71 -0
  72. package/content/references/api/admin/sellers/list-seller-members.mdx +71 -0
  73. package/content/references/api/admin/sellers/list-seller-products.mdx +85 -0
  74. package/content/references/api/admin/sellers/list-sellers.mdx +96 -0
  75. package/content/references/api/admin/sellers/remove-seller-member.mdx +42 -0
  76. package/content/references/api/admin/sellers/resend-member-invite.mdx +55 -0
  77. package/content/references/api/admin/sellers/retrieve-seller.mdx +81 -0
  78. package/content/references/api/admin/sellers/suspend-seller.mdx +60 -0
  79. package/content/references/api/admin/sellers/terminate-seller.mdx +60 -0
  80. package/content/references/api/admin/sellers/unsuspend-seller.mdx +52 -0
  81. package/content/references/api/admin/sellers/unterminate-seller.mdx +52 -0
  82. package/content/references/api/admin/sellers/update-seller.mdx +83 -0
  83. package/content/references/api/admin/sellers/upsert-payment-details.mdx +88 -0
  84. package/content/references/api/admin/sellers/upsert-professional-details.mdx +78 -0
  85. package/content/references/api/admin/sellers/upsert-seller-address.mdx +91 -0
  86. package/content/references/api/admin.mdx +134 -0
  87. package/content/references/api/conventions.mdx +109 -0
  88. package/content/references/api/store/carts/add-line-item.mdx +115 -0
  89. package/content/references/api/store/carts/add-shipping-methods.mdx +84 -0
  90. package/content/references/api/store/carts/apply-promotions.mdx +83 -0
  91. package/content/references/api/store/carts/complete-cart.mdx +98 -0
  92. package/content/references/api/store/offers/list-offers.mdx +161 -0
  93. package/content/references/api/store/offers/retrieve-offer.mdx +112 -0
  94. package/content/references/api/store/order-groups/list-order-groups.mdx +105 -0
  95. package/content/references/api/store/order-groups/retrieve-order-group.mdx +78 -0
  96. package/content/references/api/store/product-attributes/list-product-attributes.mdx +134 -0
  97. package/content/references/api/store/product-attributes/retrieve-product-attribute.mdx +78 -0
  98. package/content/references/api/store/product-categories/list-product-categories.mdx +126 -0
  99. package/content/references/api/store/product-categories/retrieve-product-category.mdx +79 -0
  100. package/content/references/api/store/products/list-products.mdx +184 -0
  101. package/content/references/api/store/products/retrieve-product.mdx +107 -0
  102. package/content/references/api/store/search/search.mdx +136 -0
  103. package/content/references/api/store/sellers/list-sellers.mdx +105 -0
  104. package/content/references/api/store/sellers/retrieve-seller.mdx +62 -0
  105. package/content/references/api/store/shipping-options/list-shipping-options.mdx +74 -0
  106. package/content/references/api/store.mdx +67 -0
  107. package/content/references/api/vendor/members/accept-member-invite.mdx +65 -0
  108. package/content/references/api/vendor/members/retrieve-current-member.mdx +51 -0
  109. package/content/references/api/vendor/members/update-current-member.mdx +70 -0
  110. package/content/references/api/vendor/offers/batch-create-offers.mdx +123 -0
  111. package/content/references/api/vendor/offers/batch-offer-inventory-items.mdx +103 -0
  112. package/content/references/api/vendor/offers/create-offer.mdx +141 -0
  113. package/content/references/api/vendor/offers/delete-offer.mdx +51 -0
  114. package/content/references/api/vendor/offers/list-offers.mdx +125 -0
  115. package/content/references/api/vendor/offers/retrieve-offer.mdx +74 -0
  116. package/content/references/api/vendor/offers/update-offer.mdx +82 -0
  117. package/content/references/api/vendor/orders/cancel-fulfillment.mdx +63 -0
  118. package/content/references/api/vendor/orders/cancel-order.mdx +56 -0
  119. package/content/references/api/vendor/orders/complete-order.mdx +55 -0
  120. package/content/references/api/vendor/orders/create-fulfillment.mdx +76 -0
  121. package/content/references/api/vendor/orders/create-shipment.mdx +99 -0
  122. package/content/references/api/vendor/orders/get-order-commission-lines.mdx +66 -0
  123. package/content/references/api/vendor/orders/list-order-changes.mdx +75 -0
  124. package/content/references/api/vendor/orders/list-orders.mdx +103 -0
  125. package/content/references/api/vendor/orders/mark-fulfillment-delivered.mdx +62 -0
  126. package/content/references/api/vendor/orders/preview-order.mdx +65 -0
  127. package/content/references/api/vendor/orders/retrieve-order.mdx +84 -0
  128. package/content/references/api/vendor/payout-accounts/create-onboarding.mdx +68 -0
  129. package/content/references/api/vendor/payout-accounts/create-payout-account.mdx +59 -0
  130. package/content/references/api/vendor/payout-accounts/retrieve-payout-account-by-id.mdx +60 -0
  131. package/content/references/api/vendor/payout-accounts/retrieve-payout-account.mdx +77 -0
  132. package/content/references/api/vendor/payouts/list-payouts.mdx +90 -0
  133. package/content/references/api/vendor/payouts/retrieve-payout.mdx +63 -0
  134. package/content/references/api/vendor/product-attributes/list-product-attributes.mdx +135 -0
  135. package/content/references/api/vendor/product-attributes/retrieve-product-attribute.mdx +71 -0
  136. package/content/references/api/vendor/product-variants/list-variants.mdx +136 -0
  137. package/content/references/api/vendor/products/batch-product-attributes.mdx +104 -0
  138. package/content/references/api/vendor/products/cancel-product-change.mdx +62 -0
  139. package/content/references/api/vendor/products/create-product-variant.mdx +92 -0
  140. package/content/references/api/vendor/products/create-product.mdx +197 -0
  141. package/content/references/api/vendor/products/delete-product-variant.mdx +68 -0
  142. package/content/references/api/vendor/products/delete-product.mdx +62 -0
  143. package/content/references/api/vendor/products/list-product-variants.mdx +114 -0
  144. package/content/references/api/vendor/products/list-products.mdx +163 -0
  145. package/content/references/api/vendor/products/preview-product.mdx +61 -0
  146. package/content/references/api/vendor/products/retrieve-product-variant.mdx +76 -0
  147. package/content/references/api/vendor/products/retrieve-product.mdx +69 -0
  148. package/content/references/api/vendor/products/update-product-variant.mdx +104 -0
  149. package/content/references/api/vendor/products/update-product.mdx +148 -0
  150. package/content/references/api/vendor/sellers/create-seller.mdx +150 -0
  151. package/content/references/api/vendor/sellers/delete-professional-details.mdx +54 -0
  152. package/content/references/api/vendor/sellers/invite-seller-member.mdx +67 -0
  153. package/content/references/api/vendor/sellers/list-member-invites.mdx +82 -0
  154. package/content/references/api/vendor/sellers/list-seller-members.mdx +80 -0
  155. package/content/references/api/vendor/sellers/list-sellers.mdx +71 -0
  156. package/content/references/api/vendor/sellers/remove-seller-member.mdx +48 -0
  157. package/content/references/api/vendor/sellers/retrieve-current-seller-member.mdx +59 -0
  158. package/content/references/api/vendor/sellers/retrieve-current-seller.mdx +69 -0
  159. package/content/references/api/vendor/sellers/select-seller.mdx +44 -0
  160. package/content/references/api/vendor/sellers/update-current-seller.mdx +108 -0
  161. package/content/references/api/vendor/sellers/update-member-role.mdx +51 -0
  162. package/content/references/api/vendor/sellers/upsert-payment-details.mdx +74 -0
  163. package/content/references/api/vendor/sellers/upsert-professional-details.mdx +70 -0
  164. package/content/references/api/vendor/sellers/upsert-seller-address.mdx +81 -0
  165. package/content/references/api/vendor.mdx +150 -0
  166. package/content/references/configuration.mdx +155 -0
  167. package/content/references/modules/commission.mdx +106 -0
  168. package/content/references/modules/custom-fields.mdx +45 -0
  169. package/content/references/modules/media.mdx +55 -0
  170. package/content/references/modules/offer.mdx +64 -0
  171. package/content/references/modules/payout.mdx +121 -0
  172. package/content/references/modules/product-attribute.mdx +111 -0
  173. package/content/references/modules/product-edit.mdx +80 -0
  174. package/content/references/modules/search.mdx +112 -0
  175. package/content/references/modules/seller.mdx +175 -0
  176. package/content/references/overview.mdx +70 -0
  177. package/content/references/workflows/cart/add-seller-shipping-method-to-cart.mdx +44 -0
  178. package/content/references/workflows/cart/complete-cart-with-split-orders.mdx +36 -0
  179. package/content/references/workflows/cart/list-seller-shipping-options-for-cart.mdx +39 -0
  180. package/content/references/workflows/cart/update-cart-seller-promotions.mdx +42 -0
  181. package/content/references/workflows/commission/batch-commission-rules.mdx +45 -0
  182. package/content/references/workflows/commission/create-commission-rates.mdx +41 -0
  183. package/content/references/workflows/commission/delete-commission-rates.mdx +34 -0
  184. package/content/references/workflows/commission/refresh-order-commission-lines.mdx +30 -0
  185. package/content/references/workflows/commission/update-commission-rates.mdx +35 -0
  186. package/content/references/workflows/media/set-category-images.mdx +41 -0
  187. package/content/references/workflows/media/set-collection-images.mdx +41 -0
  188. package/content/references/workflows/member/accept-member-invite.mdx +33 -0
  189. package/content/references/workflows/member/add-seller-member.mdx +30 -0
  190. package/content/references/workflows/member/create-member-invites.mdx +34 -0
  191. package/content/references/workflows/member/delete-member-invite.mdx +24 -0
  192. package/content/references/workflows/member/remove-seller-member.mdx +28 -0
  193. package/content/references/workflows/member/resend-member-invite.mdx +28 -0
  194. package/content/references/workflows/member/update-member-role.mdx +28 -0
  195. package/content/references/workflows/member/update-member.mdx +35 -0
  196. package/content/references/workflows/offer/batch-offer-inventory-items.mdx +58 -0
  197. package/content/references/workflows/offer/create-offers.mdx +63 -0
  198. package/content/references/workflows/offer/delete-offers.mdx +35 -0
  199. package/content/references/workflows/offer/update-offers.mdx +51 -0
  200. package/content/references/workflows/order/cancel-order-fulfillment.mdx +34 -0
  201. package/content/references/workflows/order/confirm-claim-request.mdx +25 -0
  202. package/content/references/workflows/order/confirm-exchange-request.mdx +25 -0
  203. package/content/references/workflows/order/confirm-order-edit-request.mdx +25 -0
  204. package/content/references/workflows/order/confirm-return-receive.mdx +25 -0
  205. package/content/references/workflows/order/create-order-fulfillment.mdx +45 -0
  206. package/content/references/workflows/order-group/get-order-group-detail.mdx +29 -0
  207. package/content/references/workflows/order-group/get-order-groups-list.mdx +36 -0
  208. package/content/references/workflows/overview.mdx +72 -0
  209. package/content/references/workflows/payout/create-onboarding.mdx +36 -0
  210. package/content/references/workflows/payout/create-payout-account.mdx +33 -0
  211. package/content/references/workflows/payout/create-payout.mdx +30 -0
  212. package/content/references/workflows/payout/process-payout-for-webhook.mdx +32 -0
  213. package/content/references/workflows/product/confirm-products.mdx +46 -0
  214. package/content/references/workflows/product/create-products.mdx +63 -0
  215. package/content/references/workflows/product/link-sellers-to-product-category.mdx +40 -0
  216. package/content/references/workflows/product/link-sellers-to-product.mdx +40 -0
  217. package/content/references/workflows/product/reject-product.mdx +46 -0
  218. package/content/references/workflows/product/request-product-change.mdx +46 -0
  219. package/content/references/workflows/product-attribute/add-product-attributes-to-product.mdx +49 -0
  220. package/content/references/workflows/product-attribute/create-and-link-product-attributes-to-product.mdx +46 -0
  221. package/content/references/workflows/product-attribute/create-product-attribute-values.mdx +43 -0
  222. package/content/references/workflows/product-attribute/create-product-attributes.mdx +56 -0
  223. package/content/references/workflows/product-attribute/delete-product-attribute-values.mdx +30 -0
  224. package/content/references/workflows/product-attribute/delete-product-attributes.mdx +30 -0
  225. package/content/references/workflows/product-attribute/remove-product-attributes-from-product.mdx +29 -0
  226. package/content/references/workflows/product-attribute/update-product-attribute-values.mdx +44 -0
  227. package/content/references/workflows/product-attribute/update-product-attributes-on-product.mdx +41 -0
  228. package/content/references/workflows/product-attribute/update-product-attributes.mdx +48 -0
  229. package/content/references/workflows/product-attribute/upsert-product-attribute-values.mdx +43 -0
  230. package/content/references/workflows/product-edit/auto-confirm-product-change.mdx +39 -0
  231. package/content/references/workflows/product-edit/cancel-product-change.mdx +49 -0
  232. package/content/references/workflows/product-edit/confirm-product-change.mdx +57 -0
  233. package/content/references/workflows/product-edit/create-product-change.mdx +72 -0
  234. package/content/references/workflows/product-edit/reject-product-change.mdx +54 -0
  235. package/content/references/workflows/product-edit/stage-product-change.mdx +75 -0
  236. package/content/references/workflows/seller/approve-seller.mdx +34 -0
  237. package/content/references/workflows/seller/create-seller-account.mdx +59 -0
  238. package/content/references/workflows/seller/create-seller-defaults.mdx +22 -0
  239. package/content/references/workflows/seller/create-sellers.mdx +65 -0
  240. package/content/references/workflows/seller/delete-seller-professional-details.mdx +37 -0
  241. package/content/references/workflows/seller/delete-sellers.mdx +24 -0
  242. package/content/references/workflows/seller/invite-seller.mdx +28 -0
  243. package/content/references/workflows/seller/suspend-seller.mdx +35 -0
  244. package/content/references/workflows/seller/terminate-seller.mdx +35 -0
  245. package/content/references/workflows/seller/unsuspend-seller.mdx +34 -0
  246. package/content/references/workflows/seller/unterminate-seller.mdx +34 -0
  247. package/content/references/workflows/seller/update-seller-address.mdx +55 -0
  248. package/content/references/workflows/seller/update-seller-payment-details.mdx +52 -0
  249. package/content/references/workflows/seller/update-seller-professional-details.mdx +48 -0
  250. package/content/references/workflows/seller/update-sellers.mdx +57 -0
  251. package/content/resources/ai/llms.mdx +74 -0
  252. package/content/resources/ai/mcp.mdx +152 -0
  253. package/content/resources/ai/overview.mdx +97 -0
  254. package/content/resources/customization/custom-fields.mdx +182 -0
  255. package/content/resources/customization/extend-a-workflow.mdx +39 -0
  256. package/content/resources/customization/extending-panels.mdx +309 -0
  257. package/content/resources/deployment/medusa-cloud.mdx +167 -0
  258. package/content/resources/integrations/notifications.mdx +39 -0
  259. package/content/resources/integrations/search.mdx +122 -0
  260. package/content/resources/integrations/stripe-connect.mdx +395 -0
  261. package/content/resources/tutorials/add-a-block.mdx +74 -0
  262. package/content/resources/tutorials/attributes-and-variant-axes.mdx +111 -0
  263. package/content/resources/tutorials/build-a-block.mdx +134 -0
  264. package/content/resources/tutorials/configure-commissions.mdx +127 -0
  265. package/content/resources/tutorials/custom-api-route.mdx +142 -0
  266. package/content/resources/tutorials/custom-panel-page.mdx +78 -0
  267. package/content/resources/tutorials/first-marketplace.mdx +45 -0
  268. package/content/resources/tutorials/handle-product-requests.mdx +80 -0
  269. package/content/resources/tutorials/import-export-products.mdx +96 -0
  270. package/content/resources/tutorials/master-products-and-offers.mdx +89 -0
  271. package/content/resources/tutorials/recompose-a-page.mdx +129 -0
  272. package/content/resources/tutorials/replace-panel-components.mdx +116 -0
  273. package/content/resources/tutorials/seller-payouts-stripe.mdx +89 -0
  274. package/content/telemetry.mdx +67 -0
  275. package/content/tools/api-client.mdx +155 -0
  276. package/content/tools/cli.mdx +196 -0
  277. package/content/tools/dashboard-sdk.mdx +35 -0
  278. package/content/user-guide/admin/overview.mdx +23 -0
  279. package/content/user-guide/admin/stores.mdx +193 -0
  280. package/content/user-guide/vendor/overview.mdx +23 -0
  281. package/content/user-guide/vendor/stores.mdx +209 -0
  282. package/llms.txt +307 -0
  283. package/package.json +33 -0
@@ -0,0 +1,63 @@
1
+ ---
2
+ title: "Retrieve Payout"
3
+ api: "GET /vendor/payouts/{id}"
4
+ description: "Retrieve one of the seller's payouts by ID."
5
+ ---
6
+
7
+ Returns a payout, verifying it belongs to the current seller.
8
+
9
+ ## Path parameters
10
+
11
+ <ParamField path="id" type="string" required>
12
+ The payout's ID.
13
+ </ParamField>
14
+
15
+ ## Query parameters
16
+
17
+ <ParamField query="fields" type="string">
18
+ Comma-separated fields to include in the response.
19
+ </ParamField>
20
+
21
+ ## Response
22
+
23
+ <ResponseField name="payout" type="object">
24
+ <Expandable title="properties">
25
+ <ResponseField name="id" type="string">The payout's ID.</ResponseField>
26
+ <ResponseField name="display_id" type="number">Human-readable payout number.</ResponseField>
27
+ <ResponseField name="amount" type="number">The payout amount.</ResponseField>
28
+ <ResponseField name="currency_code" type="string">The payout currency.</ResponseField>
29
+ <ResponseField name="status" type="enum">One of `pending`, `processing`, `paid`, `failed`, `canceled`.</ResponseField>
30
+ <ResponseField name="data" type="object">Provider-specific data.</ResponseField>
31
+ <ResponseField name="created_at" type="string">Creation timestamp.</ResponseField>
32
+ <ResponseField name="updated_at" type="string">Update timestamp.</ResponseField>
33
+ </Expandable>
34
+ </ResponseField>
35
+
36
+ <RequestExample>
37
+ ```bash cURL
38
+ curl 'http://localhost:9000/vendor/payouts/pout_01HXYZ' \
39
+ -H 'Authorization: Bearer <token>' \
40
+ -H 'x-seller-id: <seller_id>'
41
+ ```
42
+
43
+ ```ts JS Client
44
+ const { payout } = await client.vendor.payouts.$id.query({
45
+ $id: "pout_01HXYZ",
46
+ })
47
+ ```
48
+ </RequestExample>
49
+
50
+ <ResponseExample>
51
+ ```json 200
52
+ {
53
+ "payout": {
54
+ "id": "pout_01HXYZ",
55
+ "display_id": 42,
56
+ "amount": 1250,
57
+ "currency_code": "usd",
58
+ "status": "paid",
59
+ "created_at": "2026-01-15T10:00:00.000Z"
60
+ }
61
+ }
62
+ ```
63
+ </ResponseExample>
@@ -0,0 +1,135 @@
1
+ ---
2
+ title: "List Product Attributes"
3
+ api: "GET /vendor/product-attributes"
4
+ description: "Retrieve a paginated list of global product attributes."
5
+ ---
6
+
7
+ Returns global attribute definitions (product-scoped attributes are excluded) with their values and category assignments.
8
+
9
+ ## Query parameters
10
+
11
+ <ParamField query="limit" type="number" default="50">
12
+ The maximum number of attributes to return.
13
+ </ParamField>
14
+
15
+ <ParamField query="offset" type="number" default="0">
16
+ The number of attributes to skip before returning results.
17
+ </ParamField>
18
+
19
+ <ParamField query="order" type="string">
20
+ The field to sort by, e.g. `rank` or `-created_at`.
21
+ </ParamField>
22
+
23
+ <ParamField query="fields" type="string">
24
+ Comma-separated fields to include in the response. Prefix with `+`/`-` to add to or remove from the defaults.
25
+ </ParamField>
26
+
27
+ <ParamField query="q" type="string">
28
+ Search term matched against attribute fields.
29
+ </ParamField>
30
+
31
+ <ParamField query="id" type="string | string[]">
32
+ Filter by attribute ID(s).
33
+ </ParamField>
34
+
35
+ <ParamField query="handle" type="string | string[]">
36
+ Filter by attribute handle(s).
37
+ </ParamField>
38
+
39
+ <ParamField query="type" type="string | string[]">
40
+ Filter by type. Values: `single_select`, `multi_select`, `unit`, `toggle`, `text`.
41
+ </ParamField>
42
+
43
+ <ParamField query="is_required" type="boolean">
44
+ Filter by whether the attribute is required.
45
+ </ParamField>
46
+
47
+ <ParamField query="is_variant_axis" type="boolean">
48
+ Filter by whether the attribute drives variant combinations.
49
+ </ParamField>
50
+
51
+ <ParamField query="is_filterable" type="boolean">
52
+ Filter by whether the attribute is filterable.
53
+ </ParamField>
54
+
55
+ <ParamField query="is_active" type="boolean">
56
+ Filter by whether the attribute is active.
57
+ </ParamField>
58
+
59
+ <ParamField query="category_id" type="string | string[]">
60
+ Filter by assigned category ID(s).
61
+ </ParamField>
62
+
63
+ <ParamField query="created_at" type="object">
64
+ Filter by creation date using operators like `$gt`, `$lt`, `$gte`, `$lte`.
65
+ </ParamField>
66
+
67
+ <ParamField query="updated_at" type="object">
68
+ Filter by update date using operators like `$gt`, `$lt`, `$gte`, `$lte`.
69
+ </ParamField>
70
+
71
+ <ParamField query="$and" type="object[]">
72
+ Join multiple filter objects with a logical AND.
73
+ </ParamField>
74
+
75
+ <ParamField query="$or" type="object[]">
76
+ Join multiple filter objects with a logical OR.
77
+ </ParamField>
78
+
79
+ ## Response
80
+
81
+ <ResponseField name="product_attributes" type="object[]">
82
+ <Expandable title="properties">
83
+ <ResponseField name="id" type="string">The attribute's ID.</ResponseField>
84
+ <ResponseField name="name" type="string">The attribute's name.</ResponseField>
85
+ <ResponseField name="handle" type="string">The attribute's handle.</ResponseField>
86
+ <ResponseField name="description" type="string">The attribute's description.</ResponseField>
87
+ <ResponseField name="type" type="string">One of `single_select`, `multi_select`, `unit`, `toggle`, `text`.</ResponseField>
88
+ <ResponseField name="is_required" type="boolean">Whether a value is required on products.</ResponseField>
89
+ <ResponseField name="is_filterable" type="boolean">Whether the attribute can be used for filtering.</ResponseField>
90
+ <ResponseField name="is_variant_axis" type="boolean">Whether the attribute drives variant combinations.</ResponseField>
91
+ <ResponseField name="is_active" type="boolean">Whether the attribute is active.</ResponseField>
92
+ <ResponseField name="rank" type="number">Sort rank of the attribute.</ResponseField>
93
+ <ResponseField name="values" type="object[]">The attribute's values with `id`, `name`, `handle`, and `rank`.</ResponseField>
94
+ <ResponseField name="categories" type="object[]">Assigned categories with `id`, `name`, and `handle`.</ResponseField>
95
+ </Expandable>
96
+ </ResponseField>
97
+
98
+ <ResponseField name="count" type="number">Total number of matching attributes.</ResponseField>
99
+ <ResponseField name="offset" type="number">Number of skipped attributes.</ResponseField>
100
+ <ResponseField name="limit" type="number">Maximum number of returned attributes.</ResponseField>
101
+
102
+ <RequestExample>
103
+ ```bash cURL
104
+ curl 'http://localhost:9000/vendor/product-attributes?type=multi_select' \
105
+ -H 'Authorization: Bearer <token>' \
106
+ -H 'x-seller-id: <seller_id>'
107
+ ```
108
+
109
+ ```ts JS Client
110
+ const { product_attributes, count } =
111
+ await client.vendor.productAttributes.query({ type: "multi_select" })
112
+ ```
113
+ </RequestExample>
114
+
115
+ <ResponseExample>
116
+ ```json 200
117
+ {
118
+ "product_attributes": [
119
+ {
120
+ "id": "pattr_01HXYZ",
121
+ "name": "Color",
122
+ "handle": "color",
123
+ "type": "multi_select",
124
+ "is_variant_axis": true,
125
+ "values": [
126
+ { "id": "pattrval_01HXYZ", "name": "Red", "rank": 0 }
127
+ ]
128
+ }
129
+ ],
130
+ "count": 1,
131
+ "offset": 0,
132
+ "limit": 50
133
+ }
134
+ ```
135
+ </ResponseExample>
@@ -0,0 +1,71 @@
1
+ ---
2
+ title: "Retrieve Product Attribute"
3
+ api: "GET /vendor/product-attributes/{id}"
4
+ description: "Retrieve a product attribute by its ID."
5
+ ---
6
+
7
+ Returns a single attribute definition with its values and category assignments.
8
+
9
+ ## Path parameters
10
+
11
+ <ParamField path="id" type="string" required>
12
+ The attribute's ID.
13
+ </ParamField>
14
+
15
+ ## Query parameters
16
+
17
+ <ParamField query="fields" type="string">
18
+ Comma-separated fields to include in the response. Prefix with `+`/`-` to add to or remove from the defaults.
19
+ </ParamField>
20
+
21
+ ## Response
22
+
23
+ <ResponseField name="product_attribute" type="object">
24
+ <Expandable title="properties">
25
+ <ResponseField name="id" type="string">The attribute's ID.</ResponseField>
26
+ <ResponseField name="name" type="string">The attribute's name.</ResponseField>
27
+ <ResponseField name="handle" type="string">The attribute's handle.</ResponseField>
28
+ <ResponseField name="description" type="string">The attribute's description.</ResponseField>
29
+ <ResponseField name="type" type="string">One of `single_select`, `multi_select`, `unit`, `toggle`, `text`.</ResponseField>
30
+ <ResponseField name="is_required" type="boolean">Whether a value is required on products.</ResponseField>
31
+ <ResponseField name="is_filterable" type="boolean">Whether the attribute can be used for filtering.</ResponseField>
32
+ <ResponseField name="is_variant_axis" type="boolean">Whether the attribute drives variant combinations.</ResponseField>
33
+ <ResponseField name="is_active" type="boolean">Whether the attribute is active.</ResponseField>
34
+ <ResponseField name="rank" type="number">Sort rank of the attribute.</ResponseField>
35
+ <ResponseField name="metadata" type="object">Custom key-value pairs.</ResponseField>
36
+ <ResponseField name="values" type="object[]">The attribute's values with `id`, `name`, `handle`, and `rank`.</ResponseField>
37
+ <ResponseField name="categories" type="object[]">Assigned categories with `id`, `name`, and `handle`.</ResponseField>
38
+ </Expandable>
39
+ </ResponseField>
40
+
41
+ <RequestExample>
42
+ ```bash cURL
43
+ curl 'http://localhost:9000/vendor/product-attributes/pattr_01HXYZ' \
44
+ -H 'Authorization: Bearer <token>' \
45
+ -H 'x-seller-id: <seller_id>'
46
+ ```
47
+
48
+ ```ts JS Client
49
+ const { product_attribute } = await client.vendor.productAttributes.$id.query({
50
+ $id: "pattr_01HXYZ",
51
+ })
52
+ ```
53
+ </RequestExample>
54
+
55
+ <ResponseExample>
56
+ ```json 200
57
+ {
58
+ "product_attribute": {
59
+ "id": "pattr_01HXYZ",
60
+ "name": "Color",
61
+ "handle": "color",
62
+ "type": "multi_select",
63
+ "is_variant_axis": true,
64
+ "values": [
65
+ { "id": "pattrval_01HXYZ", "name": "Red", "rank": 0 },
66
+ { "id": "pattrval_01HABC", "name": "Blue", "rank": 1 }
67
+ ]
68
+ }
69
+ }
70
+ ```
71
+ </ResponseExample>
@@ -0,0 +1,136 @@
1
+ ---
2
+ title: "List Variants"
3
+ api: "GET /vendor/product-variants"
4
+ description: "Retrieve a paginated list of product variants across products."
5
+ ---
6
+
7
+ Returns product variants regardless of parent product, with the parent product embedded.
8
+
9
+ ## Query parameters
10
+
11
+ <ParamField query="limit" type="number" default="50">
12
+ The maximum number of variants to return.
13
+ </ParamField>
14
+
15
+ <ParamField query="offset" type="number" default="0">
16
+ The number of variants to skip before returning results.
17
+ </ParamField>
18
+
19
+ <ParamField query="order" type="string">
20
+ The field to sort by, e.g. `created_at` or `-created_at` for descending.
21
+ </ParamField>
22
+
23
+ <ParamField query="fields" type="string">
24
+ Comma-separated fields to include in the response. Prefix with `+`/`-` to add to or remove from the defaults.
25
+ </ParamField>
26
+
27
+ <ParamField query="q" type="string">
28
+ Search term matched against variant fields.
29
+ </ParamField>
30
+
31
+ <ParamField query="id" type="string | string[]">
32
+ Filter by variant ID(s).
33
+ </ParamField>
34
+
35
+ <ParamField query="manage_inventory" type="boolean">
36
+ Filter by whether inventory is managed for the variant.
37
+ </ParamField>
38
+
39
+ <ParamField query="allow_backorder" type="boolean">
40
+ Filter by whether backorders are allowed.
41
+ </ParamField>
42
+
43
+ <ParamField query="sku" type="string | string[]">
44
+ Filter by SKU(s).
45
+ </ParamField>
46
+
47
+ <ParamField query="ean" type="string | string[]">
48
+ Filter by EAN(s).
49
+ </ParamField>
50
+
51
+ <ParamField query="upc" type="string | string[]">
52
+ Filter by UPC(s).
53
+ </ParamField>
54
+
55
+ <ParamField query="barcode" type="string | string[]">
56
+ Filter by barcode(s).
57
+ </ParamField>
58
+
59
+ <ParamField query="product_id" type="string | string[]">
60
+ Filter by parent product ID(s).
61
+ </ParamField>
62
+
63
+ <ParamField query="created_at" type="object">
64
+ Filter by creation date using operators like `$gt`, `$lt`, `$gte`, `$lte`.
65
+ </ParamField>
66
+
67
+ <ParamField query="updated_at" type="object">
68
+ Filter by update date using operators like `$gt`, `$lt`, `$gte`, `$lte`.
69
+ </ParamField>
70
+
71
+ <ParamField query="deleted_at" type="object">
72
+ Filter by deletion date using operators like `$gt`, `$lt`, `$gte`, `$lte`.
73
+ </ParamField>
74
+
75
+ <ParamField query="$and" type="object[]">
76
+ Join multiple filter objects with a logical AND.
77
+ </ParamField>
78
+
79
+ <ParamField query="$or" type="object[]">
80
+ Join multiple filter objects with a logical OR.
81
+ </ParamField>
82
+
83
+ ## Response
84
+
85
+ <ResponseField name="variants" type="object[]">
86
+ <Expandable title="properties">
87
+ <ResponseField name="id" type="string">The variant's ID.</ResponseField>
88
+ <ResponseField name="title" type="string">The variant's title.</ResponseField>
89
+ <ResponseField name="sku" type="string">The variant's SKU.</ResponseField>
90
+ <ResponseField name="ean" type="string">EAN barcode.</ResponseField>
91
+ <ResponseField name="upc" type="string">UPC barcode.</ResponseField>
92
+ <ResponseField name="barcode" type="string">Generic barcode.</ResponseField>
93
+ <ResponseField name="product_id" type="string">ID of the parent product.</ResponseField>
94
+ <ResponseField name="product" type="object">The parent product record.</ResponseField>
95
+ <ResponseField name="manage_inventory" type="boolean">Whether inventory is managed for the variant.</ResponseField>
96
+ <ResponseField name="allow_backorder" type="boolean">Whether backorders are allowed.</ResponseField>
97
+ <ResponseField name="variant_rank" type="number">Sort rank of the variant.</ResponseField>
98
+ </Expandable>
99
+ </ResponseField>
100
+
101
+ <ResponseField name="count" type="number">Total number of matching variants.</ResponseField>
102
+ <ResponseField name="offset" type="number">Number of skipped variants.</ResponseField>
103
+ <ResponseField name="limit" type="number">Maximum number of returned variants.</ResponseField>
104
+
105
+ <RequestExample>
106
+ ```bash cURL
107
+ curl 'http://localhost:9000/vendor/product-variants?sku=ACME-SHIRT-M' \
108
+ -H 'Authorization: Bearer <token>' \
109
+ -H 'x-seller-id: <seller_id>'
110
+ ```
111
+
112
+ ```ts JS Client
113
+ const { variants, count } = await client.vendor.productVariants.query({
114
+ sku: "ACME-SHIRT-M",
115
+ })
116
+ ```
117
+ </RequestExample>
118
+
119
+ <ResponseExample>
120
+ ```json 200
121
+ {
122
+ "variants": [
123
+ {
124
+ "id": "variant_01HXYZ",
125
+ "title": "M",
126
+ "sku": "ACME-SHIRT-M",
127
+ "product_id": "prod_01HXYZ",
128
+ "product": { "id": "prod_01HXYZ", "title": "Acme T-Shirt" }
129
+ }
130
+ ],
131
+ "count": 1,
132
+ "offset": 0,
133
+ "limit": 50
134
+ }
135
+ ```
136
+ </ResponseExample>
@@ -0,0 +1,104 @@
1
+ ---
2
+ title: "Batch Product Attributes"
3
+ api: "POST /vendor/products/{id}/attributes/batch"
4
+ description: "Stage attribute additions, removals, and updates on a product."
5
+ ---
6
+
7
+ Stages attribute operations as a pending change request instead of applying them directly.
8
+
9
+ <Note>
10
+ The endpoint responds with `202 Accepted` and a `product_change` record containing `ATTRIBUTE_ADD` / `ATTRIBUTE_REMOVE` / `ATTRIBUTE_UPDATE` actions.
11
+ </Note>
12
+
13
+ ## Path parameters
14
+
15
+ <ParamField path="id" type="string" required>
16
+ The product's ID.
17
+ </ParamField>
18
+
19
+ ## Body parameters
20
+
21
+ <ParamField body="add" type="object[]">
22
+ Attributes to attach; each entry references an existing attribute by `id` or defines one inline by `title`.
23
+ <Expandable title="properties">
24
+ <ParamField body="id" type="string">Existing attribute ID (referencing form).</ParamField>
25
+ <ParamField body="value_ids" type="string[]">IDs of attribute values to select (referencing form).</ParamField>
26
+ <ParamField body="value" type="string | number | boolean">Scalar value for `text`, `unit`, or `toggle` attributes.</ParamField>
27
+ <ParamField body="title" type="string">Attribute title (inline form).</ParamField>
28
+ <ParamField body="type" type="string">One of `single_select`, `multi_select`, `text`, `toggle`, `unit`. Required for inline non-axis attributes unless `value` is a boolean.</ParamField>
29
+ <ParamField body="values" type="string[]">Value names to create and select (inline form).</ParamField>
30
+ <ParamField body="is_variant_axis" type="boolean">Whether the attribute drives variant combinations; only allowed on `multi_select` attributes.</ParamField>
31
+ <ParamField body="is_filterable" type="boolean">Whether the attribute is filterable (inline form).</ParamField>
32
+ <ParamField body="is_required" type="boolean">Whether the attribute is required (inline form).</ParamField>
33
+ <ParamField body="description" type="string">Attribute description (inline form).</ParamField>
34
+ <ParamField body="metadata" type="object">Custom key-value pairs (inline form).</ParamField>
35
+ </Expandable>
36
+ </ParamField>
37
+
38
+ <ParamField body="remove" type="string[]">
39
+ IDs of attributes to detach from the product.
40
+ </ParamField>
41
+
42
+ <ParamField body="update" type="object[]">
43
+ Changes to attributes already attached to the product.
44
+ <Expandable title="properties">
45
+ <ParamField body="id" type="string" required>The attribute's ID.</ParamField>
46
+ <ParamField body="title" type="string">New attribute title.</ParamField>
47
+ <ParamField body="add" type="(string | object)[]">Values to select — plain strings or `{ "value": "..." }` objects.</ParamField>
48
+ <ParamField body="remove" type="string[]">Value IDs to deselect.</ParamField>
49
+ <ParamField body="value" type="string | number | boolean">New scalar value for `text`, `unit`, or `toggle` attributes.</ParamField>
50
+ </Expandable>
51
+ </ParamField>
52
+
53
+ ## Response
54
+
55
+ <ResponseField name="product_change" type="object">
56
+ <Expandable title="properties">
57
+ <ResponseField name="id" type="string">The change request's ID.</ResponseField>
58
+ <ResponseField name="product_id" type="string">ID of the product the change targets.</ResponseField>
59
+ <ResponseField name="status" type="string">One of `pending`, `confirmed`, `declined`, `canceled`.</ResponseField>
60
+ <ResponseField name="actions" type="object[]">Staged attribute operations, each with `id`, `action`, `details`, `ordering`, and `applied`.</ResponseField>
61
+ </Expandable>
62
+ </ResponseField>
63
+
64
+ <RequestExample>
65
+ ```bash cURL
66
+ curl -X POST 'http://localhost:9000/vendor/products/prod_01HXYZ/attributes/batch' \
67
+ -H 'Authorization: Bearer <token>' \
68
+ -H 'x-seller-id: <seller_id>' \
69
+ -H 'Content-Type: application/json' \
70
+ -d '{
71
+ "add": [{ "id": "pattr_01HXYZ", "value_ids": ["pattrval_01HXYZ"] }],
72
+ "remove": ["pattr_01HABC"]
73
+ }'
74
+ ```
75
+
76
+ ```ts JS Client
77
+ const { product_change } =
78
+ await client.vendor.products.$id.attributes.batch.mutate({
79
+ $id: "prod_01HXYZ",
80
+ add: [{ id: "pattr_01HXYZ", value_ids: ["pattrval_01HXYZ"] }],
81
+ remove: ["pattr_01HABC"],
82
+ })
83
+ ```
84
+ </RequestExample>
85
+
86
+ <ResponseExample>
87
+ ```json 202
88
+ {
89
+ "product_change": {
90
+ "id": "prodch_01HXYZ",
91
+ "product_id": "prod_01HXYZ",
92
+ "status": "pending",
93
+ "actions": [
94
+ {
95
+ "id": "prodchact_01HXYZ",
96
+ "action": "ATTRIBUTE_ADD",
97
+ "details": { "id": "pattr_01HXYZ", "value_ids": ["pattrval_01HXYZ"] },
98
+ "applied": false
99
+ }
100
+ ]
101
+ }
102
+ }
103
+ ```
104
+ </ResponseExample>
@@ -0,0 +1,62 @@
1
+ ---
2
+ title: "Cancel Product Change"
3
+ api: "POST /vendor/products/{id}/cancel"
4
+ description: "Cancel the seller's pending change request for a product."
5
+ ---
6
+
7
+ Cancels the product's pending change request; responds `404` when no pending change exists.
8
+
9
+ ## Path parameters
10
+
11
+ <ParamField path="id" type="string" required>
12
+ The product's ID.
13
+ </ParamField>
14
+
15
+ ## Body parameters
16
+
17
+ <ParamField body="internal_note" type="string">
18
+ Optional note recorded with the cancellation.
19
+ </ParamField>
20
+
21
+ ## Response
22
+
23
+ <ResponseField name="product_change" type="object">
24
+ <Expandable title="properties">
25
+ <ResponseField name="id" type="string">The change request's ID.</ResponseField>
26
+ <ResponseField name="product_id" type="string">ID of the product the change targeted.</ResponseField>
27
+ <ResponseField name="status" type="string">`canceled` after this call.</ResponseField>
28
+ <ResponseField name="canceled_by" type="string">ID of the seller that canceled the change.</ResponseField>
29
+ <ResponseField name="canceled_at" type="string">Timestamp of the cancellation.</ResponseField>
30
+ <ResponseField name="actions" type="object[]">The staged operations that were discarded.</ResponseField>
31
+ </Expandable>
32
+ </ResponseField>
33
+
34
+ <RequestExample>
35
+ ```bash cURL
36
+ curl -X POST 'http://localhost:9000/vendor/products/prod_01HXYZ/cancel' \
37
+ -H 'Authorization: Bearer <token>' \
38
+ -H 'x-seller-id: <seller_id>' \
39
+ -H 'Content-Type: application/json' \
40
+ -d '{}'
41
+ ```
42
+
43
+ ```ts JS Client
44
+ const { product_change } = await client.vendor.products.$id.cancel.mutate({
45
+ $id: "prod_01HXYZ",
46
+ })
47
+ ```
48
+ </RequestExample>
49
+
50
+ <ResponseExample>
51
+ ```json 200
52
+ {
53
+ "product_change": {
54
+ "id": "prodch_01HXYZ",
55
+ "product_id": "prod_01HXYZ",
56
+ "status": "canceled",
57
+ "canceled_by": "sel_01HXYZ",
58
+ "canceled_at": "2026-07-03T12:00:00.000Z"
59
+ }
60
+ }
61
+ ```
62
+ </ResponseExample>
@@ -0,0 +1,92 @@
1
+ ---
2
+ title: "Create Product Variant"
3
+ api: "POST /vendor/products/{id}/variants"
4
+ description: "Stage the addition of a variant to a product."
5
+ ---
6
+
7
+ Stages a `VARIANT_ADD` operation as a pending change request instead of creating the variant directly.
8
+
9
+ <Note>
10
+ The endpoint responds with `202 Accepted` and a `product_change` record; the variant appears on the product once the change is confirmed. The staged variant is always created with `manage_inventory: false` — stock is tracked on offers.
11
+ </Note>
12
+
13
+ ## Path parameters
14
+
15
+ <ParamField path="id" type="string" required>
16
+ The product's ID.
17
+ </ParamField>
18
+
19
+ ## Body parameters
20
+
21
+ <ParamField body="title" type="string" required>The variant's title.</ParamField>
22
+ <ParamField body="sku" type="string">The variant's SKU.</ParamField>
23
+ <ParamField body="ean" type="string">EAN barcode.</ParamField>
24
+ <ParamField body="upc" type="string">UPC barcode.</ParamField>
25
+ <ParamField body="isbn" type="string">ISBN code.</ParamField>
26
+ <ParamField body="asin" type="string">Amazon ASIN.</ParamField>
27
+ <ParamField body="gtin" type="string">GTIN code.</ParamField>
28
+ <ParamField body="barcode" type="string">Generic barcode.</ParamField>
29
+ <ParamField body="hs_code" type="string">Harmonized System code.</ParamField>
30
+ <ParamField body="mid_code" type="string">Manufacturer ID code.</ParamField>
31
+ <ParamField body="variant_rank" type="number">Sort rank of the variant.</ParamField>
32
+ <ParamField body="weight" type="number">Weight of the variant.</ParamField>
33
+ <ParamField body="length" type="number">Length of the variant.</ParamField>
34
+ <ParamField body="height" type="number">Height of the variant.</ParamField>
35
+ <ParamField body="width" type="number">Width of the variant.</ParamField>
36
+ <ParamField body="origin_country" type="string">Country of origin.</ParamField>
37
+ <ParamField body="material" type="string">Material of the variant.</ParamField>
38
+ <ParamField body="allow_backorder" type="boolean">Whether backorders are allowed.</ParamField>
39
+ <ParamField body="manage_inventory" type="boolean">Accepted in the body but forced to `false` when the change is staged.</ParamField>
40
+ <ParamField body="thumbnail" type="string">Variant thumbnail URL.</ParamField>
41
+ <ParamField body="metadata" type="object">Custom key-value pairs.</ParamField>
42
+ <ParamField body="options" type="object">Option title to value mapping, e.g. `{"Size": "L"}`.</ParamField>
43
+
44
+ ## Response
45
+
46
+ <ResponseField name="product_change" type="object">
47
+ <Expandable title="properties">
48
+ <ResponseField name="id" type="string">The change request's ID.</ResponseField>
49
+ <ResponseField name="product_id" type="string">ID of the product the change targets.</ResponseField>
50
+ <ResponseField name="status" type="string">One of `pending`, `confirmed`, `declined`, `canceled`.</ResponseField>
51
+ <ResponseField name="actions" type="object[]">Staged operations, each with `id`, `action` (`VARIANT_ADD`), `details`, `ordering`, and `applied`.</ResponseField>
52
+ </Expandable>
53
+ </ResponseField>
54
+
55
+ <RequestExample>
56
+ ```bash cURL
57
+ curl -X POST 'http://localhost:9000/vendor/products/prod_01HXYZ/variants' \
58
+ -H 'Authorization: Bearer <token>' \
59
+ -H 'x-seller-id: <seller_id>' \
60
+ -H 'Content-Type: application/json' \
61
+ -d '{"title": "L", "sku": "ACME-SHIRT-L", "options": {"Size": "L"}}'
62
+ ```
63
+
64
+ ```ts JS Client
65
+ const { product_change } = await client.vendor.products.$id.variants.mutate({
66
+ $id: "prod_01HXYZ",
67
+ title: "L",
68
+ sku: "ACME-SHIRT-L",
69
+ options: { Size: "L" },
70
+ })
71
+ ```
72
+ </RequestExample>
73
+
74
+ <ResponseExample>
75
+ ```json 202
76
+ {
77
+ "product_change": {
78
+ "id": "prodch_01HXYZ",
79
+ "product_id": "prod_01HXYZ",
80
+ "status": "pending",
81
+ "actions": [
82
+ {
83
+ "id": "prodchact_01HXYZ",
84
+ "action": "VARIANT_ADD",
85
+ "details": { "title": "L", "sku": "ACME-SHIRT-L" },
86
+ "applied": false
87
+ }
88
+ ]
89
+ }
90
+ }
91
+ ```
92
+ </ResponseExample>