@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.
- package/README.md +24 -0
- package/content/blocks.mdx +209 -0
- package/content/learn/architecture.mdx +215 -0
- package/content/learn/attributes.mdx +89 -0
- package/content/learn/blocks.mdx +99 -0
- package/content/learn/commissions.mdx +175 -0
- package/content/learn/concepts.mdx +84 -0
- package/content/learn/installation.mdx +117 -0
- package/content/learn/introduction.mdx +71 -0
- package/content/learn/offers.mdx +78 -0
- package/content/learn/order-groups.mdx +114 -0
- package/content/learn/payouts.mdx +175 -0
- package/content/learn/product-requests.mdx +82 -0
- package/content/learn/products.mdx +79 -0
- package/content/learn/registry.mdx +155 -0
- package/content/learn/seller-members.mdx +62 -0
- package/content/learn/sellers.mdx +118 -0
- package/content/migration/from-1-x-to-2-0.mdx +152 -0
- package/content/migration/from-2-0-to-2-1.mdx +105 -0
- package/content/migration/overview.mdx +58 -0
- package/content/references/api/admin/commission-rates/batch-commission-rules.mdx +70 -0
- package/content/references/api/admin/commission-rates/create-commission-rate.mdx +95 -0
- package/content/references/api/admin/commission-rates/delete-commission-rate.mdx +40 -0
- package/content/references/api/admin/commission-rates/list-commission-rates.mdx +92 -0
- package/content/references/api/admin/commission-rates/retrieve-commission-rate.mdx +70 -0
- package/content/references/api/admin/commission-rates/update-commission-rate.mdx +84 -0
- package/content/references/api/admin/members/list-members.mdx +61 -0
- package/content/references/api/admin/offers/batch-create-offers.mdx +130 -0
- package/content/references/api/admin/offers/delete-offer.mdx +40 -0
- package/content/references/api/admin/offers/list-offers.mdx +106 -0
- package/content/references/api/admin/offers/retrieve-offer.mdx +82 -0
- package/content/references/api/admin/order-groups/list-order-groups.mdx +77 -0
- package/content/references/api/admin/order-groups/retrieve-order-group.mdx +56 -0
- package/content/references/api/admin/orders/get-order-commission-lines.mdx +65 -0
- package/content/references/api/admin/orders/get-order-order-group.mdx +56 -0
- package/content/references/api/admin/orders/list-orders.mdx +79 -0
- package/content/references/api/admin/payouts/list-payouts.mdx +75 -0
- package/content/references/api/admin/payouts/retrieve-payout.mdx +62 -0
- package/content/references/api/admin/product-attributes/create-attribute-value.mdx +76 -0
- package/content/references/api/admin/product-attributes/create-product-attribute.mdx +99 -0
- package/content/references/api/admin/product-attributes/delete-attribute-value.mdx +52 -0
- package/content/references/api/admin/product-attributes/delete-product-attribute.mdx +40 -0
- package/content/references/api/admin/product-attributes/list-product-attributes.mdx +91 -0
- package/content/references/api/admin/product-attributes/retrieve-product-attribute.mdx +81 -0
- package/content/references/api/admin/product-attributes/update-attribute-value.mdx +66 -0
- package/content/references/api/admin/product-attributes/update-product-attribute.mdx +76 -0
- package/content/references/api/admin/product-changes/cancel-product-change.mdx +68 -0
- package/content/references/api/admin/product-changes/confirm-product-change.mdx +47 -0
- package/content/references/api/admin/products/batch-product-attributes.mdx +96 -0
- package/content/references/api/admin/products/confirm-product.mdx +59 -0
- package/content/references/api/admin/products/create-product-variant.mdx +78 -0
- package/content/references/api/admin/products/create-product.mdx +169 -0
- package/content/references/api/admin/products/delete-product-variant.mdx +48 -0
- package/content/references/api/admin/products/delete-product.mdx +40 -0
- package/content/references/api/admin/products/list-product-variants.mdx +91 -0
- package/content/references/api/admin/products/list-products.mdx +109 -0
- package/content/references/api/admin/products/preview-product.mdx +78 -0
- package/content/references/api/admin/products/reject-product.mdx +59 -0
- package/content/references/api/admin/products/request-product-changes.mdx +59 -0
- package/content/references/api/admin/products/retrieve-product-variant.mdx +73 -0
- package/content/references/api/admin/products/retrieve-product.mdx +96 -0
- package/content/references/api/admin/products/set-product-sellers.mdx +47 -0
- package/content/references/api/admin/products/update-product-variant.mdx +89 -0
- package/content/references/api/admin/products/update-product.mdx +133 -0
- package/content/references/api/admin/sellers/add-seller-member.mdx +63 -0
- package/content/references/api/admin/sellers/approve-seller.mdx +54 -0
- package/content/references/api/admin/sellers/create-seller.mdx +100 -0
- package/content/references/api/admin/sellers/delete-member-invite.mdx +42 -0
- package/content/references/api/admin/sellers/delete-professional-details.mdx +52 -0
- package/content/references/api/admin/sellers/invite-seller-member.mdx +63 -0
- package/content/references/api/admin/sellers/list-member-invites.mdx +71 -0
- package/content/references/api/admin/sellers/list-seller-members.mdx +71 -0
- package/content/references/api/admin/sellers/list-seller-products.mdx +85 -0
- package/content/references/api/admin/sellers/list-sellers.mdx +96 -0
- package/content/references/api/admin/sellers/remove-seller-member.mdx +42 -0
- package/content/references/api/admin/sellers/resend-member-invite.mdx +55 -0
- package/content/references/api/admin/sellers/retrieve-seller.mdx +81 -0
- package/content/references/api/admin/sellers/suspend-seller.mdx +60 -0
- package/content/references/api/admin/sellers/terminate-seller.mdx +60 -0
- package/content/references/api/admin/sellers/unsuspend-seller.mdx +52 -0
- package/content/references/api/admin/sellers/unterminate-seller.mdx +52 -0
- package/content/references/api/admin/sellers/update-seller.mdx +83 -0
- package/content/references/api/admin/sellers/upsert-payment-details.mdx +88 -0
- package/content/references/api/admin/sellers/upsert-professional-details.mdx +78 -0
- package/content/references/api/admin/sellers/upsert-seller-address.mdx +91 -0
- package/content/references/api/admin.mdx +134 -0
- package/content/references/api/conventions.mdx +109 -0
- package/content/references/api/store/carts/add-line-item.mdx +115 -0
- package/content/references/api/store/carts/add-shipping-methods.mdx +84 -0
- package/content/references/api/store/carts/apply-promotions.mdx +83 -0
- package/content/references/api/store/carts/complete-cart.mdx +98 -0
- package/content/references/api/store/offers/list-offers.mdx +161 -0
- package/content/references/api/store/offers/retrieve-offer.mdx +112 -0
- package/content/references/api/store/order-groups/list-order-groups.mdx +105 -0
- package/content/references/api/store/order-groups/retrieve-order-group.mdx +78 -0
- package/content/references/api/store/product-attributes/list-product-attributes.mdx +134 -0
- package/content/references/api/store/product-attributes/retrieve-product-attribute.mdx +78 -0
- package/content/references/api/store/product-categories/list-product-categories.mdx +126 -0
- package/content/references/api/store/product-categories/retrieve-product-category.mdx +79 -0
- package/content/references/api/store/products/list-products.mdx +184 -0
- package/content/references/api/store/products/retrieve-product.mdx +107 -0
- package/content/references/api/store/search/search.mdx +136 -0
- package/content/references/api/store/sellers/list-sellers.mdx +105 -0
- package/content/references/api/store/sellers/retrieve-seller.mdx +62 -0
- package/content/references/api/store/shipping-options/list-shipping-options.mdx +74 -0
- package/content/references/api/store.mdx +67 -0
- package/content/references/api/vendor/members/accept-member-invite.mdx +65 -0
- package/content/references/api/vendor/members/retrieve-current-member.mdx +51 -0
- package/content/references/api/vendor/members/update-current-member.mdx +70 -0
- package/content/references/api/vendor/offers/batch-create-offers.mdx +123 -0
- package/content/references/api/vendor/offers/batch-offer-inventory-items.mdx +103 -0
- package/content/references/api/vendor/offers/create-offer.mdx +141 -0
- package/content/references/api/vendor/offers/delete-offer.mdx +51 -0
- package/content/references/api/vendor/offers/list-offers.mdx +125 -0
- package/content/references/api/vendor/offers/retrieve-offer.mdx +74 -0
- package/content/references/api/vendor/offers/update-offer.mdx +82 -0
- package/content/references/api/vendor/orders/cancel-fulfillment.mdx +63 -0
- package/content/references/api/vendor/orders/cancel-order.mdx +56 -0
- package/content/references/api/vendor/orders/complete-order.mdx +55 -0
- package/content/references/api/vendor/orders/create-fulfillment.mdx +76 -0
- package/content/references/api/vendor/orders/create-shipment.mdx +99 -0
- package/content/references/api/vendor/orders/get-order-commission-lines.mdx +66 -0
- package/content/references/api/vendor/orders/list-order-changes.mdx +75 -0
- package/content/references/api/vendor/orders/list-orders.mdx +103 -0
- package/content/references/api/vendor/orders/mark-fulfillment-delivered.mdx +62 -0
- package/content/references/api/vendor/orders/preview-order.mdx +65 -0
- package/content/references/api/vendor/orders/retrieve-order.mdx +84 -0
- package/content/references/api/vendor/payout-accounts/create-onboarding.mdx +68 -0
- package/content/references/api/vendor/payout-accounts/create-payout-account.mdx +59 -0
- package/content/references/api/vendor/payout-accounts/retrieve-payout-account-by-id.mdx +60 -0
- package/content/references/api/vendor/payout-accounts/retrieve-payout-account.mdx +77 -0
- package/content/references/api/vendor/payouts/list-payouts.mdx +90 -0
- package/content/references/api/vendor/payouts/retrieve-payout.mdx +63 -0
- package/content/references/api/vendor/product-attributes/list-product-attributes.mdx +135 -0
- package/content/references/api/vendor/product-attributes/retrieve-product-attribute.mdx +71 -0
- package/content/references/api/vendor/product-variants/list-variants.mdx +136 -0
- package/content/references/api/vendor/products/batch-product-attributes.mdx +104 -0
- package/content/references/api/vendor/products/cancel-product-change.mdx +62 -0
- package/content/references/api/vendor/products/create-product-variant.mdx +92 -0
- package/content/references/api/vendor/products/create-product.mdx +197 -0
- package/content/references/api/vendor/products/delete-product-variant.mdx +68 -0
- package/content/references/api/vendor/products/delete-product.mdx +62 -0
- package/content/references/api/vendor/products/list-product-variants.mdx +114 -0
- package/content/references/api/vendor/products/list-products.mdx +163 -0
- package/content/references/api/vendor/products/preview-product.mdx +61 -0
- package/content/references/api/vendor/products/retrieve-product-variant.mdx +76 -0
- package/content/references/api/vendor/products/retrieve-product.mdx +69 -0
- package/content/references/api/vendor/products/update-product-variant.mdx +104 -0
- package/content/references/api/vendor/products/update-product.mdx +148 -0
- package/content/references/api/vendor/sellers/create-seller.mdx +150 -0
- package/content/references/api/vendor/sellers/delete-professional-details.mdx +54 -0
- package/content/references/api/vendor/sellers/invite-seller-member.mdx +67 -0
- package/content/references/api/vendor/sellers/list-member-invites.mdx +82 -0
- package/content/references/api/vendor/sellers/list-seller-members.mdx +80 -0
- package/content/references/api/vendor/sellers/list-sellers.mdx +71 -0
- package/content/references/api/vendor/sellers/remove-seller-member.mdx +48 -0
- package/content/references/api/vendor/sellers/retrieve-current-seller-member.mdx +59 -0
- package/content/references/api/vendor/sellers/retrieve-current-seller.mdx +69 -0
- package/content/references/api/vendor/sellers/select-seller.mdx +44 -0
- package/content/references/api/vendor/sellers/update-current-seller.mdx +108 -0
- package/content/references/api/vendor/sellers/update-member-role.mdx +51 -0
- package/content/references/api/vendor/sellers/upsert-payment-details.mdx +74 -0
- package/content/references/api/vendor/sellers/upsert-professional-details.mdx +70 -0
- package/content/references/api/vendor/sellers/upsert-seller-address.mdx +81 -0
- package/content/references/api/vendor.mdx +150 -0
- package/content/references/configuration.mdx +155 -0
- package/content/references/modules/commission.mdx +106 -0
- package/content/references/modules/custom-fields.mdx +45 -0
- package/content/references/modules/media.mdx +55 -0
- package/content/references/modules/offer.mdx +64 -0
- package/content/references/modules/payout.mdx +121 -0
- package/content/references/modules/product-attribute.mdx +111 -0
- package/content/references/modules/product-edit.mdx +80 -0
- package/content/references/modules/search.mdx +112 -0
- package/content/references/modules/seller.mdx +175 -0
- package/content/references/overview.mdx +70 -0
- package/content/references/workflows/cart/add-seller-shipping-method-to-cart.mdx +44 -0
- package/content/references/workflows/cart/complete-cart-with-split-orders.mdx +36 -0
- package/content/references/workflows/cart/list-seller-shipping-options-for-cart.mdx +39 -0
- package/content/references/workflows/cart/update-cart-seller-promotions.mdx +42 -0
- package/content/references/workflows/commission/batch-commission-rules.mdx +45 -0
- package/content/references/workflows/commission/create-commission-rates.mdx +41 -0
- package/content/references/workflows/commission/delete-commission-rates.mdx +34 -0
- package/content/references/workflows/commission/refresh-order-commission-lines.mdx +30 -0
- package/content/references/workflows/commission/update-commission-rates.mdx +35 -0
- package/content/references/workflows/media/set-category-images.mdx +41 -0
- package/content/references/workflows/media/set-collection-images.mdx +41 -0
- package/content/references/workflows/member/accept-member-invite.mdx +33 -0
- package/content/references/workflows/member/add-seller-member.mdx +30 -0
- package/content/references/workflows/member/create-member-invites.mdx +34 -0
- package/content/references/workflows/member/delete-member-invite.mdx +24 -0
- package/content/references/workflows/member/remove-seller-member.mdx +28 -0
- package/content/references/workflows/member/resend-member-invite.mdx +28 -0
- package/content/references/workflows/member/update-member-role.mdx +28 -0
- package/content/references/workflows/member/update-member.mdx +35 -0
- package/content/references/workflows/offer/batch-offer-inventory-items.mdx +58 -0
- package/content/references/workflows/offer/create-offers.mdx +63 -0
- package/content/references/workflows/offer/delete-offers.mdx +35 -0
- package/content/references/workflows/offer/update-offers.mdx +51 -0
- package/content/references/workflows/order/cancel-order-fulfillment.mdx +34 -0
- package/content/references/workflows/order/confirm-claim-request.mdx +25 -0
- package/content/references/workflows/order/confirm-exchange-request.mdx +25 -0
- package/content/references/workflows/order/confirm-order-edit-request.mdx +25 -0
- package/content/references/workflows/order/confirm-return-receive.mdx +25 -0
- package/content/references/workflows/order/create-order-fulfillment.mdx +45 -0
- package/content/references/workflows/order-group/get-order-group-detail.mdx +29 -0
- package/content/references/workflows/order-group/get-order-groups-list.mdx +36 -0
- package/content/references/workflows/overview.mdx +72 -0
- package/content/references/workflows/payout/create-onboarding.mdx +36 -0
- package/content/references/workflows/payout/create-payout-account.mdx +33 -0
- package/content/references/workflows/payout/create-payout.mdx +30 -0
- package/content/references/workflows/payout/process-payout-for-webhook.mdx +32 -0
- package/content/references/workflows/product/confirm-products.mdx +46 -0
- package/content/references/workflows/product/create-products.mdx +63 -0
- package/content/references/workflows/product/link-sellers-to-product-category.mdx +40 -0
- package/content/references/workflows/product/link-sellers-to-product.mdx +40 -0
- package/content/references/workflows/product/reject-product.mdx +46 -0
- package/content/references/workflows/product/request-product-change.mdx +46 -0
- package/content/references/workflows/product-attribute/add-product-attributes-to-product.mdx +49 -0
- package/content/references/workflows/product-attribute/create-and-link-product-attributes-to-product.mdx +46 -0
- package/content/references/workflows/product-attribute/create-product-attribute-values.mdx +43 -0
- package/content/references/workflows/product-attribute/create-product-attributes.mdx +56 -0
- package/content/references/workflows/product-attribute/delete-product-attribute-values.mdx +30 -0
- package/content/references/workflows/product-attribute/delete-product-attributes.mdx +30 -0
- package/content/references/workflows/product-attribute/remove-product-attributes-from-product.mdx +29 -0
- package/content/references/workflows/product-attribute/update-product-attribute-values.mdx +44 -0
- package/content/references/workflows/product-attribute/update-product-attributes-on-product.mdx +41 -0
- package/content/references/workflows/product-attribute/update-product-attributes.mdx +48 -0
- package/content/references/workflows/product-attribute/upsert-product-attribute-values.mdx +43 -0
- package/content/references/workflows/product-edit/auto-confirm-product-change.mdx +39 -0
- package/content/references/workflows/product-edit/cancel-product-change.mdx +49 -0
- package/content/references/workflows/product-edit/confirm-product-change.mdx +57 -0
- package/content/references/workflows/product-edit/create-product-change.mdx +72 -0
- package/content/references/workflows/product-edit/reject-product-change.mdx +54 -0
- package/content/references/workflows/product-edit/stage-product-change.mdx +75 -0
- package/content/references/workflows/seller/approve-seller.mdx +34 -0
- package/content/references/workflows/seller/create-seller-account.mdx +59 -0
- package/content/references/workflows/seller/create-seller-defaults.mdx +22 -0
- package/content/references/workflows/seller/create-sellers.mdx +65 -0
- package/content/references/workflows/seller/delete-seller-professional-details.mdx +37 -0
- package/content/references/workflows/seller/delete-sellers.mdx +24 -0
- package/content/references/workflows/seller/invite-seller.mdx +28 -0
- package/content/references/workflows/seller/suspend-seller.mdx +35 -0
- package/content/references/workflows/seller/terminate-seller.mdx +35 -0
- package/content/references/workflows/seller/unsuspend-seller.mdx +34 -0
- package/content/references/workflows/seller/unterminate-seller.mdx +34 -0
- package/content/references/workflows/seller/update-seller-address.mdx +55 -0
- package/content/references/workflows/seller/update-seller-payment-details.mdx +52 -0
- package/content/references/workflows/seller/update-seller-professional-details.mdx +48 -0
- package/content/references/workflows/seller/update-sellers.mdx +57 -0
- package/content/resources/ai/llms.mdx +74 -0
- package/content/resources/ai/mcp.mdx +152 -0
- package/content/resources/ai/overview.mdx +97 -0
- package/content/resources/customization/custom-fields.mdx +182 -0
- package/content/resources/customization/extend-a-workflow.mdx +39 -0
- package/content/resources/customization/extending-panels.mdx +309 -0
- package/content/resources/deployment/medusa-cloud.mdx +167 -0
- package/content/resources/integrations/notifications.mdx +39 -0
- package/content/resources/integrations/search.mdx +122 -0
- package/content/resources/integrations/stripe-connect.mdx +395 -0
- package/content/resources/tutorials/add-a-block.mdx +74 -0
- package/content/resources/tutorials/attributes-and-variant-axes.mdx +111 -0
- package/content/resources/tutorials/build-a-block.mdx +134 -0
- package/content/resources/tutorials/configure-commissions.mdx +127 -0
- package/content/resources/tutorials/custom-api-route.mdx +142 -0
- package/content/resources/tutorials/custom-panel-page.mdx +78 -0
- package/content/resources/tutorials/first-marketplace.mdx +45 -0
- package/content/resources/tutorials/handle-product-requests.mdx +80 -0
- package/content/resources/tutorials/import-export-products.mdx +96 -0
- package/content/resources/tutorials/master-products-and-offers.mdx +89 -0
- package/content/resources/tutorials/recompose-a-page.mdx +129 -0
- package/content/resources/tutorials/replace-panel-components.mdx +116 -0
- package/content/resources/tutorials/seller-payouts-stripe.mdx +89 -0
- package/content/telemetry.mdx +67 -0
- package/content/tools/api-client.mdx +155 -0
- package/content/tools/cli.mdx +196 -0
- package/content/tools/dashboard-sdk.mdx +35 -0
- package/content/user-guide/admin/overview.mdx +23 -0
- package/content/user-guide/admin/stores.mdx +193 -0
- package/content/user-guide/vendor/overview.mdx +23 -0
- package/content/user-guide/vendor/stores.mdx +209 -0
- package/llms.txt +307 -0
- 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>
|