The admin products API gives staff full control over the product catalog. All three lifecycle statuses —Documentation Index
Fetch the complete documentation index at: https://mintlify.com/ItsJhonAlex/Ecommerce/llms.txt
Use this file to discover all available pages before exploring further.
draft, active, and archived — are visible and manageable here, unlike the public storefront which only serves active products. Beyond core CRUD, each product exposes nested sub-endpoints for managing prices (one per currency), images (ordered by position), and category links (the many-to-many join). Hard deletion of products is intentionally unsupported; use the archive endpoint instead.
All endpoints in this section require the
admin or staff role. Requests without a valid session return 401; requests with insufficient role return 403.Core Product Endpoints
List Products
status and a case-insensitive text search on the product name via q. Each product in the response includes its nested prices and images arrays.
Query Parameters
Filter by product status. One of
draft, active, or archived. Omit to return all statuses.Case-insensitive substring search on the product
name. An empty string ("") is treated as absent — no error is returned.200
Get Product by ID
prices, images (ordered ascending by position), and categories (with the full category object on each link row).
Response 200
404 if the product ID does not exist.
Create Product
slug must be unique across all products.
Request Body
URL-safe identifier for the product (e.g.
reloj-automatico-seiko). Must be unique. Used in storefront URLs.Human-readable product name displayed in listings and product pages.
Optional long-form product description. Supports plain text.
Initial status. One of
draft, active, or archived. Defaults to draft if omitted.Initial stock count. Defaults to
0 if omitted. Decremented on checkout; restored on cancellation.201
Update Product
updatedAt timestamp is refreshed automatically. Returns 409 with PRODUCT_SLUG_TAKEN if the new slug conflicts with another product.
Request Body — all fields optional (same shape as create)
New URL slug. Must remain unique across all products.
Updated display name.
Updated product description.
One of
draft, active, or archived. Prefer the dedicated /archive endpoint for archiving.Override current stock count. Prefer letting the checkout system manage this automatically.
200 — returns the updated { product } object. 404 if product not found.
Archive Product
status to archived. The product remains in the database and its order history is preserved, but it is no longer returned to storefront customers. This operation is idempotent — archiving an already-archived product returns the product without error.
Archiving is the recommended and only supported way to remove a product from the storefront. Hard deletion is intentionally not available — it would break historical order data that references the product. If you need to permanently suppress a product, archive it and optionally rename it.
200
404 if the product ID does not exist.
Price Sub-Endpoints
Each product may have at most one price per currency. Prices are stored in minor units (e.g.18500 = $185.00 USD).
Add Price
PRICE_CURRENCY_EXISTS if a price for that currency already exists on the product.
Request Body
ISO 4217 currency code (e.g.
"USD", "VES").Price in minor units (cents). For USD,
18500 equals $185.00.201
409 — { "error": "Ya existe un precio para esa moneda", "code": "PRICE_CURRENCY_EXISTS" }
Update Price
currency and amountMinor are patchable. The :priceId must belong to the specified product.
Response 200 — returns { price }. 404 if price not found or doesn’t belong to product.
Delete Price
Image Sub-Endpoints
Images are displayed in the storefront ordered by theirposition field (ascending). Manage position to control display order.
Add Image
Fully-qualified URL of the image (e.g. CDN URL).
Alt text for accessibility and SEO.
Display sort order. Lower values appear first. Defaults to
0 if omitted.201 — returns { image } with all stored fields.
Update Image
position) or fixing alt text.
Response 200 — returns { image }. 404 if image not found or doesn’t belong to product.
Delete Image
Category Link Sub-Endpoints
Products and categories have a many-to-many relationship via theproduct_categories join table. These endpoints manage the links without affecting the products or categories themselves.
Link Product to Category
onConflictDoNothing internally).
Request Body
UUID of the category to link. The category must already exist.
201