@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,91 @@
1
+ ---
2
+ title: "List Product Attributes"
3
+ api: "GET /admin/product-attributes"
4
+ description: "Retrieve a paginated list of catalog product attributes."
5
+ ---
6
+
7
+ Returns global (non-product-scoped) attributes, with optional filtering by type, flags, and category.
8
+
9
+ ## Query parameters
10
+
11
+ <ParamField query="limit" type="number" default="50">Maximum number of records to return.</ParamField>
12
+ <ParamField query="offset" type="number" default="0">Number of records to skip.</ParamField>
13
+ <ParamField query="order" type="string">Field to sort by, prefix with `-` for descending order.</ParamField>
14
+ <ParamField query="fields" type="string">Comma-separated list of fields to include, prefix with `+`/`-` to add or remove from defaults.</ParamField>
15
+ <ParamField query="q" type="string">Search term matched against attribute fields.</ParamField>
16
+ <ParamField query="id" type="string | string[]">Filter by attribute ID(s).</ParamField>
17
+ <ParamField query="handle" type="string | string[]">Filter by attribute handle(s).</ParamField>
18
+ <ParamField query="type" type="string | string[]">Filter by type: `single_select`, `multi_select`, `unit`, `toggle`, or `text`.</ParamField>
19
+ <ParamField query="is_required" type="boolean">Filter by the required flag.</ParamField>
20
+ <ParamField query="is_variant_axis" type="boolean">Filter by the variant-axis flag.</ParamField>
21
+ <ParamField query="is_filterable" type="boolean">Filter by the filterable flag.</ParamField>
22
+ <ParamField query="is_active" type="boolean">Filter by the active flag.</ParamField>
23
+ <ParamField query="category_id" type="string | string[]">Filter to attributes linked to the given category(ies) or global to all categories.</ParamField>
24
+ <ParamField query="created_at" type="object">Filter by creation date with operators like `$gte`, `$lte`.</ParamField>
25
+ <ParamField query="updated_at" type="object">Filter by update date with operators like `$gte`, `$lte`.</ParamField>
26
+
27
+ ## Response
28
+
29
+ <ResponseField name="product_attributes" type="object[]">
30
+ <Expandable title="properties">
31
+ <ResponseField name="id" type="string">The attribute's ID.</ResponseField>
32
+ <ResponseField name="name" type="string">Attribute name.</ResponseField>
33
+ <ResponseField name="handle" type="string">Unique URL-safe handle.</ResponseField>
34
+ <ResponseField name="description" type="string">Attribute description.</ResponseField>
35
+ <ResponseField name="type" type="string">One of `single_select`, `multi_select`, `unit`, `toggle`, `text`.</ResponseField>
36
+ <ResponseField name="is_required" type="boolean">Whether a value is required on products.</ResponseField>
37
+ <ResponseField name="is_filterable" type="boolean">Whether the attribute can be used as a storefront filter.</ResponseField>
38
+ <ResponseField name="is_variant_axis" type="boolean">Whether the attribute drives variant generation.</ResponseField>
39
+ <ResponseField name="is_active" type="boolean">Whether the attribute is active.</ResponseField>
40
+ <ResponseField name="created_by" type="string">ID of the actor who created the attribute.</ResponseField>
41
+ <ResponseField name="product_id" type="string">Always `null` for catalog attributes.</ResponseField>
42
+ <ResponseField name="rank" type="number">Sort rank of the attribute.</ResponseField>
43
+ <ResponseField name="values" type="object[]">The attribute's values.</ResponseField>
44
+ <ResponseField name="categories" type="object[]">Linked categories with `id`, `name`, and `handle`.</ResponseField>
45
+ <ResponseField name="metadata" type="object">Custom key-value data.</ResponseField>
46
+ <ResponseField name="created_at" type="string">Creation timestamp.</ResponseField>
47
+ <ResponseField name="updated_at" type="string">Last update timestamp.</ResponseField>
48
+ </Expandable>
49
+ </ResponseField>
50
+ <ResponseField name="count" type="number">Total number of matching attributes.</ResponseField>
51
+ <ResponseField name="offset" type="number">Number of records skipped.</ResponseField>
52
+ <ResponseField name="limit" type="number">Number of records returned.</ResponseField>
53
+
54
+ <RequestExample>
55
+ ```bash cURL
56
+ curl 'http://localhost:9000/admin/product-attributes?type=single_select&limit=20' \
57
+ -H 'Authorization: Bearer <token>'
58
+ ```
59
+
60
+ ```ts JS Client
61
+ const { product_attributes, count } = await client.admin.productAttributes.query({
62
+ type: "single_select",
63
+ limit: 20,
64
+ })
65
+ ```
66
+ </RequestExample>
67
+
68
+ <ResponseExample>
69
+ ```json 200
70
+ {
71
+ "product_attributes": [
72
+ {
73
+ "id": "pattr_01HXYZABCDEF",
74
+ "name": "Material",
75
+ "handle": "material",
76
+ "type": "single_select",
77
+ "is_required": false,
78
+ "is_filterable": true,
79
+ "is_variant_axis": false,
80
+ "is_active": true,
81
+ "values": [
82
+ { "id": "pattrval_01HXYZABCDEF", "name": "Linen", "rank": 0 }
83
+ ]
84
+ }
85
+ ],
86
+ "count": 1,
87
+ "offset": 0,
88
+ "limit": 20
89
+ }
90
+ ```
91
+ </ResponseExample>
@@ -0,0 +1,81 @@
1
+ ---
2
+ title: "Retrieve Product Attribute"
3
+ api: "GET /admin/product-attributes/{id}"
4
+ description: "Retrieve a catalog product attribute by ID."
5
+ ---
6
+
7
+ Returns a single attribute with its values and linked categories.
8
+
9
+ ## Path parameters
10
+
11
+ <ParamField path="id" type="string" required>The attribute's ID.</ParamField>
12
+
13
+ ## Query parameters
14
+
15
+ <ParamField query="fields" type="string">Comma-separated list of fields to include, prefix with `+`/`-` to add or remove from defaults.</ParamField>
16
+
17
+ ## Response
18
+
19
+ <ResponseField name="product_attribute" type="object">
20
+ <Expandable title="properties">
21
+ <ResponseField name="id" type="string">The attribute's ID.</ResponseField>
22
+ <ResponseField name="name" type="string">Attribute name.</ResponseField>
23
+ <ResponseField name="handle" type="string">Unique URL-safe handle.</ResponseField>
24
+ <ResponseField name="description" type="string">Attribute description.</ResponseField>
25
+ <ResponseField name="type" type="string">One of `single_select`, `multi_select`, `unit`, `toggle`, `text`.</ResponseField>
26
+ <ResponseField name="is_required" type="boolean">Whether a value is required on products.</ResponseField>
27
+ <ResponseField name="is_filterable" type="boolean">Whether the attribute can be used as a storefront filter.</ResponseField>
28
+ <ResponseField name="is_variant_axis" type="boolean">Whether the attribute drives variant generation.</ResponseField>
29
+ <ResponseField name="is_active" type="boolean">Whether the attribute is active.</ResponseField>
30
+ <ResponseField name="created_by" type="string">ID of the actor who created the attribute.</ResponseField>
31
+ <ResponseField name="product_id" type="string">Owning product's ID for product-scoped attributes, otherwise `null`.</ResponseField>
32
+ <ResponseField name="rank" type="number">Sort rank of the attribute.</ResponseField>
33
+ <ResponseField name="values" type="object[]">
34
+ The attribute's values.
35
+ <Expandable title="properties">
36
+ <ResponseField name="id" type="string">The value's ID.</ResponseField>
37
+ <ResponseField name="name" type="string">Value name.</ResponseField>
38
+ <ResponseField name="handle" type="string">Unique URL-safe handle.</ResponseField>
39
+ <ResponseField name="rank" type="number">Sort rank.</ResponseField>
40
+ <ResponseField name="is_active" type="boolean">Whether the value is active.</ResponseField>
41
+ </Expandable>
42
+ </ResponseField>
43
+ <ResponseField name="categories" type="object[]">Linked categories with `id`, `name`, and `handle`.</ResponseField>
44
+ <ResponseField name="metadata" type="object">Custom key-value data.</ResponseField>
45
+ <ResponseField name="created_at" type="string">Creation timestamp.</ResponseField>
46
+ <ResponseField name="updated_at" type="string">Last update timestamp.</ResponseField>
47
+ </Expandable>
48
+ </ResponseField>
49
+
50
+ <RequestExample>
51
+ ```bash cURL
52
+ curl 'http://localhost:9000/admin/product-attributes/pattr_01HXYZABCDEF' \
53
+ -H 'Authorization: Bearer <token>'
54
+ ```
55
+
56
+ ```ts JS Client
57
+ const { product_attribute } = await client.admin.productAttributes.$id.query({
58
+ $id: "pattr_01HXYZABCDEF",
59
+ })
60
+ ```
61
+ </RequestExample>
62
+
63
+ <ResponseExample>
64
+ ```json 200
65
+ {
66
+ "product_attribute": {
67
+ "id": "pattr_01HXYZABCDEF",
68
+ "name": "Material",
69
+ "handle": "material",
70
+ "type": "single_select",
71
+ "is_required": false,
72
+ "is_filterable": true,
73
+ "is_variant_axis": false,
74
+ "is_active": true,
75
+ "values": [
76
+ { "id": "pattrval_01HXYZABCDEF", "name": "Linen", "rank": 0 }
77
+ ]
78
+ }
79
+ }
80
+ ```
81
+ </ResponseExample>
@@ -0,0 +1,66 @@
1
+ ---
2
+ title: "Update Attribute Value"
3
+ api: "POST /admin/product-attributes/{id}/values/{value_id}"
4
+ description: "Update a single value on a product attribute."
5
+ ---
6
+
7
+ Updates the value and returns the parent attribute.
8
+
9
+ ## Path parameters
10
+
11
+ <ParamField path="id" type="string" required>The attribute's ID.</ParamField>
12
+ <ParamField path="value_id" type="string" required>The value's ID.</ParamField>
13
+
14
+ ## Body parameters
15
+
16
+ <ParamField body="name" type="string">Value name.</ParamField>
17
+ <ParamField body="handle" type="string">Unique URL-safe handle.</ParamField>
18
+ <ParamField body="rank" type="number">Sort rank; must be non-negative.</ParamField>
19
+ <ParamField body="is_active" type="boolean">Whether the value is active.</ParamField>
20
+ <ParamField body="metadata" type="object">Custom key-value data.</ParamField>
21
+ <ParamField body="additional_data" type="object">Custom data passed to workflow hooks.</ParamField>
22
+
23
+ ## Response
24
+
25
+ <ResponseField name="product_attribute" type="object">
26
+ <Expandable title="properties">
27
+ <ResponseField name="id" type="string">The attribute's ID.</ResponseField>
28
+ <ResponseField name="name" type="string">Attribute name.</ResponseField>
29
+ <ResponseField name="type" type="string">The attribute's type.</ResponseField>
30
+ <ResponseField name="values" type="object[]">All values, including the updated one.</ResponseField>
31
+ <ResponseField name="updated_at" type="string">Last update timestamp.</ResponseField>
32
+ </Expandable>
33
+ </ResponseField>
34
+
35
+ <RequestExample>
36
+ ```bash cURL
37
+ curl -X POST 'http://localhost:9000/admin/product-attributes/pattr_01HXYZABCDEF/values/pattrval_01HXYZABCDEF' \
38
+ -H 'Authorization: Bearer <token>' \
39
+ -H 'Content-Type: application/json' \
40
+ -d '{"name": "Belgian Linen"}'
41
+ ```
42
+
43
+ ```ts JS Client
44
+ const { product_attribute } =
45
+ await client.admin.productAttributes.$id.values.$value_id.mutate({
46
+ $id: "pattr_01HXYZABCDEF",
47
+ $value_id: "pattrval_01HXYZABCDEF",
48
+ name: "Belgian Linen",
49
+ })
50
+ ```
51
+ </RequestExample>
52
+
53
+ <ResponseExample>
54
+ ```json 200
55
+ {
56
+ "product_attribute": {
57
+ "id": "pattr_01HXYZABCDEF",
58
+ "name": "Material",
59
+ "type": "single_select",
60
+ "values": [
61
+ { "id": "pattrval_01HXYZABCDEF", "name": "Belgian Linen", "rank": 0 }
62
+ ]
63
+ }
64
+ }
65
+ ```
66
+ </ResponseExample>
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: "Update Product Attribute"
3
+ api: "POST /admin/product-attributes/{id}"
4
+ description: "Update a catalog product attribute."
5
+ ---
6
+
7
+ Updates the attribute's details; only the provided fields are changed.
8
+
9
+ <Note>
10
+ `type` is immutable — sending a `type` different from the attribute's current type returns an error.
11
+ </Note>
12
+
13
+ ## Path parameters
14
+
15
+ <ParamField path="id" type="string" required>The attribute's ID.</ParamField>
16
+
17
+ ## Body parameters
18
+
19
+ <ParamField body="name" type="string">Attribute name.</ParamField>
20
+ <ParamField body="handle" type="string">Unique URL-safe handle.</ParamField>
21
+ <ParamField body="description" type="string">Attribute description.</ParamField>
22
+ <ParamField body="type" type="string">Must match the current type: `single_select`, `multi_select`, `unit`, `toggle`, or `text`.</ParamField>
23
+ <ParamField body="is_required" type="boolean">Whether a value is required on products.</ParamField>
24
+ <ParamField body="is_filterable" type="boolean">Whether the attribute can be used as a storefront filter.</ParamField>
25
+ <ParamField body="is_variant_axis" type="boolean">Whether the attribute drives variant generation; only valid for `multi_select`.</ParamField>
26
+ <ParamField body="rank" type="number">Sort rank of the attribute; must be non-negative.</ParamField>
27
+ <ParamField body="is_active" type="boolean">Whether the attribute is active.</ParamField>
28
+ <ParamField body="category_ids" type="string[]">IDs of categories to link the attribute to; replaces the existing links.</ParamField>
29
+ <ParamField body="metadata" type="object">Custom key-value data.</ParamField>
30
+ <ParamField body="additional_data" type="object">Custom data passed to workflow hooks.</ParamField>
31
+
32
+ ## Response
33
+
34
+ <ResponseField name="product_attribute" type="object">
35
+ <Expandable title="properties">
36
+ <ResponseField name="id" type="string">The attribute's ID.</ResponseField>
37
+ <ResponseField name="name" type="string">Attribute name.</ResponseField>
38
+ <ResponseField name="handle" type="string">Unique URL-safe handle.</ResponseField>
39
+ <ResponseField name="type" type="string">The attribute's type.</ResponseField>
40
+ <ResponseField name="values" type="object[]">The attribute's values.</ResponseField>
41
+ <ResponseField name="categories" type="object[]">Linked categories with `id`, `name`, and `handle`.</ResponseField>
42
+ <ResponseField name="updated_at" type="string">Last update timestamp.</ResponseField>
43
+ </Expandable>
44
+ </ResponseField>
45
+
46
+ <RequestExample>
47
+ ```bash cURL
48
+ curl -X POST 'http://localhost:9000/admin/product-attributes/pattr_01HXYZABCDEF' \
49
+ -H 'Authorization: Bearer <token>' \
50
+ -H 'Content-Type: application/json' \
51
+ -d '{"name": "Fabric", "is_filterable": true}'
52
+ ```
53
+
54
+ ```ts JS Client
55
+ const { product_attribute } = await client.admin.productAttributes.$id.mutate({
56
+ $id: "pattr_01HXYZABCDEF",
57
+ name: "Fabric",
58
+ is_filterable: true,
59
+ })
60
+ ```
61
+ </RequestExample>
62
+
63
+ <ResponseExample>
64
+ ```json 200
65
+ {
66
+ "product_attribute": {
67
+ "id": "pattr_01HXYZABCDEF",
68
+ "name": "Fabric",
69
+ "handle": "material",
70
+ "type": "single_select",
71
+ "is_filterable": true,
72
+ "updated_at": "2026-06-02T09:00:00.000Z"
73
+ }
74
+ }
75
+ ```
76
+ </ResponseExample>
@@ -0,0 +1,68 @@
1
+ ---
2
+ title: "Cancel Product Change"
3
+ api: "POST /admin/product-changes/{id}/cancel"
4
+ description: "Cancel a pending product change without applying it."
5
+ ---
6
+
7
+ Cancels the pending change set and returns the updated change record.
8
+
9
+ ## Path parameters
10
+
11
+ <ParamField path="id" type="string" required>The product change's ID.</ParamField>
12
+
13
+ ## Body parameters
14
+
15
+ <ParamField body="internal_note" type="string">Note recorded with the cancellation, visible to operators only.</ParamField>
16
+
17
+ ## Response
18
+
19
+ <ResponseField name="product_change" type="object">
20
+ <Expandable title="properties">
21
+ <ResponseField name="id" type="string">The product change's ID.</ResponseField>
22
+ <ResponseField name="product_id" type="string">ID of the product the change applied to.</ResponseField>
23
+ <ResponseField name="status" type="string">Change status after cancellation.</ResponseField>
24
+ <ResponseField name="canceled_by" type="string">ID of the actor who canceled the change.</ResponseField>
25
+ <ResponseField name="canceled_at" type="string">When the change was canceled.</ResponseField>
26
+ <ResponseField name="actions" type="object[]">The change's individual actions with `action`, `ordering`, `details`, and `applied`.</ResponseField>
27
+ <ResponseField name="created_at" type="string">Creation timestamp.</ResponseField>
28
+ <ResponseField name="updated_at" type="string">Last update timestamp.</ResponseField>
29
+ </Expandable>
30
+ </ResponseField>
31
+
32
+ <RequestExample>
33
+ ```bash cURL
34
+ curl -X POST 'http://localhost:9000/admin/product-changes/prodch_01HXYZABCDEF/cancel' \
35
+ -H 'Authorization: Bearer <token>' \
36
+ -H 'Content-Type: application/json' \
37
+ -d '{}'
38
+ ```
39
+
40
+ ```ts JS Client
41
+ const { product_change } = await client.admin.productChanges.$id.cancel.mutate({
42
+ $id: "prodch_01HXYZABCDEF",
43
+ })
44
+ ```
45
+ </RequestExample>
46
+
47
+ <ResponseExample>
48
+ ```json 200
49
+ {
50
+ "product_change": {
51
+ "id": "prodch_01HXYZABCDEF",
52
+ "product_id": "prod_01HXYZABCDEF",
53
+ "status": "canceled",
54
+ "canceled_by": "user_01HXYZABCDEF",
55
+ "canceled_at": "2026-06-02T09:00:00.000Z",
56
+ "actions": [
57
+ {
58
+ "id": "prodchact_01HXYZABCDEF",
59
+ "action": "update_product",
60
+ "ordering": 0,
61
+ "details": { "title": "Linen Shirt v2" },
62
+ "applied": false
63
+ }
64
+ ]
65
+ }
66
+ }
67
+ ```
68
+ </ResponseExample>
@@ -0,0 +1,47 @@
1
+ ---
2
+ title: "Confirm Product Change"
3
+ api: "POST /admin/product-changes/{id}/confirm"
4
+ description: "Approve a pending product change and apply it to the product."
5
+ ---
6
+
7
+ Applies the pending change set to the product and marks the change as confirmed.
8
+
9
+ ## Path parameters
10
+
11
+ <ParamField path="id" type="string" required>The product change's ID.</ParamField>
12
+
13
+ ## Body parameters
14
+
15
+ <ParamField body="internal_note" type="string">Note recorded on the confirmation, visible to operators only.</ParamField>
16
+
17
+ ## Response
18
+
19
+ <ResponseField name="id" type="string">The confirmed product change's ID.</ResponseField>
20
+ <ResponseField name="object" type="string">Always `product_change`.</ResponseField>
21
+ <ResponseField name="deleted" type="boolean">Always `true` — the change is no longer pending.</ResponseField>
22
+
23
+ <RequestExample>
24
+ ```bash cURL
25
+ curl -X POST 'http://localhost:9000/admin/product-changes/prodch_01HXYZABCDEF/confirm' \
26
+ -H 'Authorization: Bearer <token>' \
27
+ -H 'Content-Type: application/json' \
28
+ -d '{"internal_note": "Approved after review"}'
29
+ ```
30
+
31
+ ```ts JS Client
32
+ const result = await client.admin.productChanges.$id.confirm.mutate({
33
+ $id: "prodch_01HXYZABCDEF",
34
+ internal_note: "Approved after review",
35
+ })
36
+ ```
37
+ </RequestExample>
38
+
39
+ <ResponseExample>
40
+ ```json 200
41
+ {
42
+ "id": "prodch_01HXYZABCDEF",
43
+ "object": "product_change",
44
+ "deleted": true
45
+ }
46
+ ```
47
+ </ResponseExample>
@@ -0,0 +1,96 @@
1
+ ---
2
+ title: "Batch Product Attributes"
3
+ api: "POST /admin/products/{id}/attributes/batch"
4
+ description: "Add, remove, and update attributes on a product in one request."
5
+ ---
6
+
7
+ Applies attribute changes to the product in the order `remove` → `add` → `update`.
8
+
9
+ ## Path parameters
10
+
11
+ <ParamField path="id" type="string" required>The product's ID.</ParamField>
12
+
13
+ ## Body parameters
14
+
15
+ <ParamField body="add" type="object[]">
16
+ Attributes to attach — one of two shapes per item.
17
+ <Expandable title="existing attribute (by id)">
18
+ <ParamField body="id" type="string" required>ID of an existing catalog attribute.</ParamField>
19
+ <ParamField body="value_ids" type="string[]">IDs of attribute values to select.</ParamField>
20
+ <ParamField body="value" type="string | number | boolean">Scalar value for `text`, `unit`, or `toggle` attributes.</ParamField>
21
+ </Expandable>
22
+ <Expandable title="inline attribute (by title)">
23
+ <ParamField body="title" type="string" required>Attribute title.</ParamField>
24
+ <ParamField body="type" type="string">One of `single_select`, `multi_select`, `unit`, `toggle`, `text`; required for non-axis inline attributes unless `value` is a boolean.</ParamField>
25
+ <ParamField body="values" type="string[]">Value names to create and select.</ParamField>
26
+ <ParamField body="value" type="string | number | boolean">Scalar value for non-select types.</ParamField>
27
+ <ParamField body="is_variant_axis" type="boolean">Whether the attribute drives variant generation; only allowed on `multi_select` attributes.</ParamField>
28
+ <ParamField body="is_filterable" type="boolean">Whether the attribute can be used as a storefront filter.</ParamField>
29
+ <ParamField body="is_required" type="boolean">Whether a value is required on products.</ParamField>
30
+ <ParamField body="description" type="string">Attribute description.</ParamField>
31
+ <ParamField body="metadata" type="object">Custom key-value data.</ParamField>
32
+ </Expandable>
33
+ </ParamField>
34
+ <ParamField body="remove" type="string[]">IDs of attributes to detach from the product.</ParamField>
35
+ <ParamField body="update" type="object[]">
36
+ Changes to attributes already on the product.
37
+ <Expandable title="properties">
38
+ <ParamField body="id" type="string" required>The attribute's ID.</ParamField>
39
+ <ParamField body="title" type="string">New attribute title.</ParamField>
40
+ <ParamField body="add" type="(string | object)[]">Value names (or `{ value }` objects) to add to the selection.</ParamField>
41
+ <ParamField body="remove" type="string[]">Value IDs to remove from the selection.</ParamField>
42
+ <ParamField body="value" type="string | number | boolean">New scalar value for non-select types.</ParamField>
43
+ </Expandable>
44
+ </ParamField>
45
+
46
+ ## Response
47
+
48
+ <ResponseField name="product" type="object">
49
+ <Expandable title="properties">
50
+ <ResponseField name="id" type="string">The product's ID.</ResponseField>
51
+ <ResponseField name="title" type="string">Product title.</ResponseField>
52
+ <ResponseField name="status" type="string">Current product status.</ResponseField>
53
+ <ResponseField name="product_attribute_values" type="object[]">Attribute values selected on the product, each with its parent `attribute`.</ResponseField>
54
+ <ResponseField name="scoped_attributes" type="object[]">Product-scoped (inline) attributes with their `values`.</ResponseField>
55
+ </Expandable>
56
+ </ResponseField>
57
+
58
+ <RequestExample>
59
+ ```bash cURL
60
+ curl -X POST 'http://localhost:9000/admin/products/prod_01HXYZABCDEF/attributes/batch' \
61
+ -H 'Authorization: Bearer <token>' \
62
+ -H 'Content-Type: application/json' \
63
+ -d '{
64
+ "add": [{ "id": "pattr_01HXYZABCDEF", "value_ids": ["pattrval_01HXYZABCDEF"] }],
65
+ "remove": ["pattr_01HXYZABCDEG"]
66
+ }'
67
+ ```
68
+
69
+ ```ts JS Client
70
+ const { product } = await client.admin.products.$id.attributes.batch.mutate({
71
+ $id: "prod_01HXYZABCDEF",
72
+ add: [{ id: "pattr_01HXYZABCDEF", value_ids: ["pattrval_01HXYZABCDEF"] }],
73
+ remove: ["pattr_01HXYZABCDEG"],
74
+ })
75
+ ```
76
+ </RequestExample>
77
+
78
+ <ResponseExample>
79
+ ```json 200
80
+ {
81
+ "product": {
82
+ "id": "prod_01HXYZABCDEF",
83
+ "title": "Linen Shirt",
84
+ "status": "published",
85
+ "product_attribute_values": [
86
+ {
87
+ "id": "pattrval_01HXYZABCDEF",
88
+ "name": "Linen",
89
+ "attribute": { "id": "pattr_01HXYZABCDEF", "name": "Material", "type": "single_select" }
90
+ }
91
+ ],
92
+ "scoped_attributes": []
93
+ }
94
+ }
95
+ ```
96
+ </ResponseExample>
@@ -0,0 +1,59 @@
1
+ ---
2
+ title: "Confirm Product"
3
+ api: "POST /admin/products/{id}/confirm"
4
+ description: "Approve a proposed product for publishing."
5
+ ---
6
+
7
+ Approves the product's publish request and returns the updated product.
8
+
9
+ ## Path parameters
10
+
11
+ <ParamField path="id" type="string" required>The product's ID.</ParamField>
12
+
13
+ ## Query parameters
14
+
15
+ <ParamField query="fields" type="string">Comma-separated list of fields to include, prefix with `+`/`-` to add or remove from defaults.</ParamField>
16
+
17
+ ## Body parameters
18
+
19
+ <ParamField body="internal_note" type="string">Note recorded on the approval, visible to operators only.</ParamField>
20
+
21
+ ## Response
22
+
23
+ <ResponseField name="product" type="object">
24
+ <Expandable title="properties">
25
+ <ResponseField name="id" type="string">The product's ID.</ResponseField>
26
+ <ResponseField name="title" type="string">Product title.</ResponseField>
27
+ <ResponseField name="status" type="string">Product status after confirmation.</ResponseField>
28
+ <ResponseField name="updated_at" type="string">Last update timestamp.</ResponseField>
29
+ </Expandable>
30
+ </ResponseField>
31
+
32
+ <RequestExample>
33
+ ```bash cURL
34
+ curl -X POST 'http://localhost:9000/admin/products/prod_01HXYZABCDEF/confirm' \
35
+ -H 'Authorization: Bearer <token>' \
36
+ -H 'Content-Type: application/json' \
37
+ -d '{"internal_note": "Looks good"}'
38
+ ```
39
+
40
+ ```ts JS Client
41
+ const { product } = await client.admin.products.$id.confirm.mutate({
42
+ $id: "prod_01HXYZABCDEF",
43
+ internal_note: "Looks good",
44
+ })
45
+ ```
46
+ </RequestExample>
47
+
48
+ <ResponseExample>
49
+ ```json 200
50
+ {
51
+ "product": {
52
+ "id": "prod_01HXYZABCDEF",
53
+ "title": "Linen Shirt",
54
+ "status": "published",
55
+ "updated_at": "2026-06-02T09:00:00.000Z"
56
+ }
57
+ }
58
+ ```
59
+ </ResponseExample>