Brands Products
Category: Admin
Base URL: /admin/brands
Authentication: Required
Routes: 13 routes documented
Overview#
This section documents 13 API routes for brands products.
⚠️ These endpoints operate on your live store.
POST/PUT/DELETEoperations here — including sync, push, resync, and cache operations — modify or delete production data, and some trigger downstream effects such as warehouse orders or customer emails.DELETEoperations are generally irreversible. Verify IDs and parameters carefully before calling them from scripts.
Quick Reference#
| Method | Endpoint | Description |
|---|---|---|
| GET | /admin/brands |
GET /admin/brands List all brands with optional filtering an... |
| POST | /admin/brands |
POST /admin/brands Create a new brand |
| GET | /admin/brands/:id |
GET /admin/brands/:id Retrieve a single brand by ID |
| POST | /admin/brands/:id |
POST /admin/brands/:id Update a brand |
| DELETE | /admin/brands/:id |
DELETE /admin/brands/:id Delete a brand |
| GET | /admin/brands/:id/avatars |
GET /admin/brands/:id/avatars List all customer avatars for ... |
| POST | /admin/brands/:id/avatars |
POST /admin/brands/:id/avatars Create a new customer avatar ... |
| GET | /admin/brands/:id/avatars/:avatarId |
GET /admin/brands/:id/avatars/:avatarId Retrieve a single cu... |
| POST | /admin/brands/:id/avatars/:avatarId |
POST /admin/brands/:id/avatars/:avatarId Update a customer a... |
| DELETE | /admin/brands/:id/avatars/:avatarId |
DELETE /admin/brands/:id/avatars/:avatarId Delete a customer... |
| GET | /admin/products/:id/cogs/locations |
No description |
| POST | /admin/products/:id/cogs/replenishment-policy |
No description |
| POST | /admin/products/:id/duplicate |
POST /admin/products/:id/duplicate Duplicates a product with... |
| GET | /admin/products/:id/pdp-sections |
GET /admin/products/:id/pdp-sections List all PDP sections f... |
| POST | /admin/products/:id/pdp-sections |
POST /admin/products/:id/pdp-sections Create a new PDP secti... |
| GET | /admin/products/:id/pdp-sections/:section_id |
GET /admin/products/:id/pdp-sections/:section_id Get a speci... |
| POST | /admin/products/:id/pdp-sections/:section_id |
POST /admin/products/:id/pdp-sections/:section_id Update a P... |
| DELETE | /admin/products/:id/pdp-sections/:section_id |
DELETE /admin/products/:id/pdp-sections/:section_id Delete a... |
| GET | /admin/products/:id/sku-aliases |
GET /admin/products/[id]/sku-aliases Product-scoped read of ... |
| GET | /admin/products/:id/variants/:variant_id/cogs |
No description |
| GET | /admin/products/:id/variants/:variant_id/sellability |
No description |
| POST | /admin/products/:id/variants/:variant_id/sellability |
No description |
| GET | /admin/products/:id/variants/:variant_id/storefront-availability |
No description |
| POST | /admin/products/:id/variants/:variant_id/storefront-availability |
No description |
GET Admin Brands#
Endpoint: GET /admin/brands
Authentication: Admin (Required)
Description#
GET /admin/brands List all brands with optional filtering and pagination
Response#
Success:
{
brands,
count,
offset,
limit,
}Example Request#
curl -X GET 'https://your-store.omnicart.cc/admin/brands' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'POST Admin Brands#
Endpoint: POST /admin/brands
Authentication: Admin (Required)
Description#
POST /admin/brands Create a new brand
Request Body#
This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.
Response#
Success (201):
{
brand,
}Error (400):
{
message,
error,
}Example Request#
curl -X POST 'https://your-store.omnicart.cc/admin/brands' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'GET Admin Brands :id#
Endpoint: GET /admin/brands/:id
Authentication: Admin (Required)
Description#
GET /admin/brands/:id Retrieve a single brand by ID
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
Response#
Success:
{
brand,
}Error (404):
{
message,
error,
}Example Request#
curl -X GET 'https://your-store.omnicart.cc/admin/brands/:id' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'POST Admin Brands :id#
Endpoint: POST /admin/brands/:id
Authentication: Admin (Required)
Description#
POST /admin/brands/:id Update a brand
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
Request Body#
This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.
Response#
Success:
{
brand,
}Error (400):
{
message,
error,
}Example Request#
curl -X POST 'https://your-store.omnicart.cc/admin/brands/:id' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'DELETE Admin Brands :id#
Endpoint: DELETE /admin/brands/:id
Authentication: Admin (Required)
Description#
DELETE /admin/brands/:id Delete a brand
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
Response#
Success (200):
{
id,
deleted,
}Error (400):
{
message,
error,
}Example Request#
curl -X DELETE 'https://your-store.omnicart.cc/admin/brands/:id' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'GET Admin Brands :id Avatars#
Endpoint: GET /admin/brands/:id/avatars
Authentication: Admin (Required)
Description#
GET /admin/brands/:id/avatars List all customer avatars for a brand
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
Response#
Success:
{
avatars,
count,
}Error (400):
{
message,
error,
}Example Request#
curl -X GET 'https://your-store.omnicart.cc/admin/brands/:id/avatars' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'POST Admin Brands :id Avatars#
Endpoint: POST /admin/brands/:id/avatars
Authentication: Admin (Required)
Description#
POST /admin/brands/:id/avatars Create a new customer avatar for a brand
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
Request Body#
This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.
Response#
Success (201):
{
avatar,
}Error (400):
{
message,
error,
}Example Request#
curl -X POST 'https://your-store.omnicart.cc/admin/brands/:id/avatars' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'GET Admin Brands :id Avatars :avatarId#
Endpoint: GET /admin/brands/:id/avatars/:avatarId
Authentication: Admin (Required)
Description#
GET /admin/brands/:id/avatars/:avatarId Retrieve a single customer avatar by ID
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
avatarId |
string | Yes | AvatarId identifier |
Response#
Success:
{
avatar,
}Error (404):
{
message,
error,
}Example Request#
curl -X GET 'https://your-store.omnicart.cc/admin/brands/:id/avatars/:avatarId' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'POST Admin Brands :id Avatars :avatarId#
Endpoint: POST /admin/brands/:id/avatars/:avatarId
Authentication: Admin (Required)
Description#
POST /admin/brands/:id/avatars/:avatarId Update a customer avatar
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
avatarId |
string | Yes | AvatarId identifier |
Request Body#
This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.
Response#
Success:
{
avatar,
}Error (400):
{
message,
error,
}Example Request#
curl -X POST 'https://your-store.omnicart.cc/admin/brands/:id/avatars/:avatarId' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'DELETE Admin Brands :id Avatars :avatarId#
Endpoint: DELETE /admin/brands/:id/avatars/:avatarId
Authentication: Admin (Required)
Description#
DELETE /admin/brands/:id/avatars/:avatarId Delete a customer avatar
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
avatarId |
string | Yes | AvatarId identifier |
Response#
Success (200):
{
id,
deleted,
}Error (400):
{
message,
error,
}Example Request#
curl -X DELETE 'https://your-store.omnicart.cc/admin/brands/:id/avatars/:avatarId' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'GET Admin Products :id Cogs Locations#
Endpoint: GET /admin/products/:id/cogs/locations
Authentication: Admin (Required)
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
Response#
Success:
{
module_enabled,
product_id,
currency_code,
locations,
}Also returns:
{
module_enabled,
product_id,
currency_code,
locations,
}Also returns:
{
module_enabled,
product_id,
currency_code,
locations,
}Also returns:
{
module_enabled,
product_id,
currency_code,
locations,
}Error (404):
{
module_enabled,
product_id,
currency_code,
locations,
message,
}Error (404):
{
module_enabled,
product_id,
currency_code,
locations,
message,
error,
}Example Request#
curl -X GET 'https://your-store.omnicart.cc/admin/products/:id/cogs/locations' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'POST Admin Products :id Cogs Replenishment-policy#
Endpoint: POST /admin/products/:id/cogs/replenishment-policy
Authentication: Admin (Required)
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
Request Body#
| Field | Type | Required |
|---|---|---|
inventory_item_id |
string | Yes |
location_id |
string | Yes |
service_level_target |
string | No |
moq_units |
string | No |
order_multiple |
string | No |
lead_time_days |
string | No |
safety_stock_days |
string | No |
target_days_cover |
string | No |
supplier_id |
string | No |
preferred_supplier |
boolean | No |
Response#
Success (200):
{
policy,
}Error (400):
{
message,
}Error (400):
{
message,
issues,
}Error (500):
{
message,
error,
}Example Request#
curl -X POST 'https://your-store.omnicart.cc/admin/products/:id/cogs/replenishment-policy' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'POST Admin Products :id Duplicate#
Endpoint: POST /admin/products/:id/duplicate
Authentication: Admin (Required)
Description#
POST /admin/products/:id/duplicate Duplicates a product with all its variants, options, and pricing. The duplicated product is created as a draft with " (Copy)" appended to the title.
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
Request Body#
This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.
Response#
Success (200):
{
product,
message,
}Error (400):
{
message,
}Example Request#
curl -X POST 'https://your-store.omnicart.cc/admin/products/:id/duplicate' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'GET Admin Products :id Pdp-sections#
Endpoint: GET /admin/products/:id/pdp-sections
Authentication: Admin (Required)
Description#
GET /admin/products/:id/pdp-sections List all PDP sections for a product (reads from product.metadata.pdp_sections)
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
Response#
Success:
{
sections,
}Example Request#
curl -X GET 'https://your-store.omnicart.cc/admin/products/:id/pdp-sections' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'POST Admin Products :id Pdp-sections#
Endpoint: POST /admin/products/:id/pdp-sections
Authentication: Admin (Required)
Description#
POST /admin/products/:id/pdp-sections Create a new PDP section for a product (stores in product.metadata.pdp_sections)
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
Request Body#
| Field | Type | Required |
|---|---|---|
section_type |
enum(hero, features, specifications, benefits, how_to_use, ingredients, size_guide, shipping_info, reviews_summary, faq, related_content, video, gallery, comparison, custom) | Yes |
title |
string | No |
subtitle |
string | No |
content |
string | No |
data |
any | No |
image_url |
string | No |
video_url |
string | No |
display_order |
number | No |
is_visible |
boolean | No |
show_on_mobile |
boolean | No |
show_on_desktop |
boolean | No |
layout |
enum(full_width, centered, two_column, three_column, sidebar_left, sidebar_right) | No |
background_color |
string | No |
background_image |
string | No |
cta_text |
string | No |
cta_url |
string | No |
anchor_id |
string | No |
metadata |
any | No |
Response#
Success:
{
section,
}Example Request#
curl -X POST 'https://your-store.omnicart.cc/admin/products/:id/pdp-sections' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'GET Admin Products :id Pdp-sections :section_id#
Endpoint: GET /admin/products/:id/pdp-sections/:section_id
Authentication: Admin (Required)
Description#
GET /admin/products/:id/pdp-sections/:section_id Get a specific PDP section (from product.metadata.pdp_sections)
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
section_id |
string | Yes | Section_id identifier |
Response#
Success:
{
section,
}Error (404):
{
message,
}Example Request#
curl -X GET 'https://your-store.omnicart.cc/admin/products/:id/pdp-sections/:section_id' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'POST Admin Products :id Pdp-sections :section_id#
Endpoint: POST /admin/products/:id/pdp-sections/:section_id
Authentication: Admin (Required)
Description#
POST /admin/products/:id/pdp-sections/:section_id Update a PDP section (in product.metadata.pdp_sections)
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
section_id |
string | Yes | Section_id identifier |
Request Body#
| Field | Type | Required |
|---|---|---|
section_type |
enum(hero, features, specifications, benefits, how_to_use, ingredients, size_guide, shipping_info, reviews_summary, faq, related_content, video, gallery, comparison, custom) | No |
title |
string | No |
subtitle |
string | No |
content |
string | No |
data |
any | No |
image_url |
string | No |
video_url |
string | No |
display_order |
number | No |
is_visible |
boolean | No |
show_on_mobile |
boolean | No |
show_on_desktop |
boolean | No |
layout |
enum(full_width, centered, two_column, three_column, sidebar_left, sidebar_right) | No |
background_color |
string | No |
background_image |
string | No |
cta_text |
string | No |
cta_url |
string | No |
anchor_id |
string | No |
metadata |
any | No |
Response#
Success:
{
section,
}Error (404):
{
message,
}Example Request#
curl -X POST 'https://your-store.omnicart.cc/admin/products/:id/pdp-sections/:section_id' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'DELETE Admin Products :id Pdp-sections :section_id#
Endpoint: DELETE /admin/products/:id/pdp-sections/:section_id
Authentication: Admin (Required)
Description#
DELETE /admin/products/:id/pdp-sections/:section_id Delete a PDP section (from product.metadata.pdp_sections)
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
section_id |
string | Yes | Section_id identifier |
Response#
Success:
{
success,
}Error (404):
{
message,
}Example Request#
curl -X DELETE 'https://your-store.omnicart.cc/admin/products/:id/pdp-sections/:section_id' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'GET Admin Products :id Sku-aliases#
Endpoint: GET /admin/products/:id/sku-aliases
Authentication: Admin (Required)
Description#
GET /admin/products/[id]/sku-aliases Product-scoped read of warehouse SKU aliases. Resolves the product's variant SKUs server-side and returns the aliases grouped by variant so the admin widget can render "what warehouse SKUs map to this product?" without firing one request per variant. The join is by omni_sku (= variant SKU) in application code — there is no module link between warehouse_sku_alias and product/variant, matching how the service's findByMedusaSku already works. Query params: - stock_location_id: optional; scope aliases to a single location. Omitted = all locations (each enriched with location_name via Modules.STOCK_LOCATION). Response: { product_id, variants: [{ variant_id, sku, title, aliases: [...] }], total_aliases }
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
Response#
Success:
{
product_id,
variants,
total_aliases,
}Error (500):
{
error,
}Example Request#
curl -X GET 'https://your-store.omnicart.cc/admin/products/:id/sku-aliases' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'GET Admin Products :id Variants :variant_id Cogs#
Endpoint: GET /admin/products/:id/variants/:variant_id/cogs
Authentication: Admin (Required)
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
variant_id |
string | Yes | Variant_id identifier |
Response#
Success:
{
module_enabled,
product_id,
variant_id,
summary,
locations,
records,
}Also returns:
{
module_enabled,
product_id,
variant_id,
summary,
locations,
records,
}Also returns:
{
module_enabled,
product_id,
variant_id,
summary,
currency_code,
locations,
records,
}Example Request#
curl -X GET 'https://your-store.omnicart.cc/admin/products/:id/variants/:variant_id/cogs' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'GET Admin Products :id Variants :variant_id Sellability#
Endpoint: GET /admin/products/:id/variants/:variant_id/sellability
Authentication: Admin (Required)
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
variant_id |
string | Yes | Variant_id identifier |
Response#
Success:
{
variant_id,
sku,
manage_inventory,
available,
broken,
for_sale,
actions_enabled,
}Error (404):
{
error,
}Example Request#
curl -X GET 'https://your-store.omnicart.cc/admin/products/:id/variants/:variant_id/sellability' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'POST Admin Products :id Variants :variant_id Sellability#
Endpoint: POST /admin/products/:id/variants/:variant_id/sellability
Authentication: Admin (Required)
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
variant_id |
string | Yes | Variant_id identifier |
Request Body#
This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.
Response#
Error (400):
{
error,
}Error (503):
{
error,
hint,
}Error (404):
{
error,
}Error (500):
{
error,
}Example Request#
curl -X POST 'https://your-store.omnicart.cc/admin/products/:id/variants/:variant_id/sellability' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'GET Admin Products :id Variants :variant_id Storefront-availability#
Endpoint: GET /admin/products/:id/variants/:variant_id/storefront-availability
Authentication: Admin (Required)
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
variant_id |
string | Yes | Variant_id identifier |
Response#
Success:
{
variant_id,
sku,
storefront_out_of_stock,
}Error (404):
{
error,
}Example Request#
curl -X GET 'https://your-store.omnicart.cc/admin/products/:id/variants/:variant_id/storefront-availability' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'POST Admin Products :id Variants :variant_id Storefront-availability#
Endpoint: POST /admin/products/:id/variants/:variant_id/storefront-availability
Authentication: Admin (Required)
URL Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Id identifier |
variant_id |
string | Yes | Variant_id identifier |
Request Body#
This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.
Response#
Success:
{
variant_id,
sku,
storefront_out_of_stock,
}Error (400):
{
error,
}Error (404):
{
error,
}Error (500):
{
error,
}Example Request#
curl -X POST 'https://your-store.omnicart.cc/admin/products/:id/variants/:variant_id/storefront-availability' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json'