Inventory

The Inventory module manages your product catalog — products, variants (SKUs), warehouses, categories, attributes, and distribution channels. It supports multi-warehouse stock, translations, and channel-specific pricing.

Product

Products are items in your catalog. Each product can have multiple variants, belong to categories, and carry attributes.

FieldTypeDescription
id / uuidID!Unique identifiers
nameString!Product name
slugString!URL-friendly name
descriptionStringPlain text description
html_descriptionStringRich HTML description
is_publishedBooleanWhether the product is live
weightFloatProduct weight
statusStatusProduct status
productsTypesProductTypeProduct type classification
total_variantsIntNumber of variants
variants[Variant!]Product variants (paginated)
categories[Category!]Assigned categories
attributes[Attribute!]Product attributes
warehouses[Warehouse!]Warehouses stocking this product
files[Filesystem!]Images and documents
tags[Tag!]Tags
custom_fields[CustomField!]Custom key-value data
# List products
query {
  products(first: 20, orderBy: [{ column: CREATED_AT, order: DESC }]) {
    data {
      id name slug description is_published
      status { name }
      total_variants
      categories { name }
      variants(first: 50) {
        data { id name sku is_published warehouses { name warehousePrice { price quantity } } }
      }
      files { url name }
    }
    paginatorInfo { total hasMorePages }
  }
}

# Create a product
mutation {
  createProduct(input: {
    name: "Premium Widget"
    slug: "premium-widget"
    description: "A high-quality widget"
    productsTypes: { id: 1 }
  }) {
    id uuid name slug
  }
}

# Duplicate a product
mutation {
  duplicateProduct(id: 1) { id name slug }
}

Variant

Variants are specific SKUs of a product — a particular size, color, or configuration. Each variant tracks its own stock per warehouse and pricing per channel.

FieldTypeDescription
id / uuidID!Unique identifiers
nameString!Variant name
skuStringStock Keeping Unit
eanStringEuropean Article Number
barcodeStringBarcode
descriptionStringVariant description
is_publishedBooleanWhether the variant is live
weightFloatVariant weight
productProductParent product
warehouses[Warehouse!]Stock locations with price and quantity
channels[VariantChannel!]Channel-specific pricing
attributes[Attribute!]Variant attributes
files[Filesystem!]Variant images
# Create a variant with stock
mutation {
  createVariant(input: {
    products_id: 1
    name: "Premium Widget - Large / Blue"
    sku: "PW-LG-BLU"
    description: "Large size, blue"
    warehouse: [{ warehouse_id: 1, price: 29.99, quantity: 100 }]
  }) {
    id uuid name sku
  }
}

# Update stock levels
mutation {
  updateVariant(id: 1, input: {
    warehouse: [{ warehouse_id: 1, price: 34.99, quantity: 75 }]
  }) {
    id sku warehouses { warehousePrice { price quantity } }
  }
}

# Add variant to a sales channel
mutation {
  addVariantToChannel(input: {
    variants_id: 1
    channels_id: 1
    price: 34.99
    is_published: true
  }) {
    id channels { name price is_published }
  }
}

Warehouse

FieldTypeDescription
id / uuidID!Unique identifiers
nameString!Warehouse name
locationStringPhysical location
is_defaultBooleanDefault warehouse
is_publishedBooleanWhether it's active
total_productsIntProducts stocked
regionsRegionRegion the warehouse serves
# Create a warehouse
mutation {
  createWarehouse(input: { name: "Main Warehouse", location: "New York, NY", is_default: true, regions_id: 1 }) {
    id uuid name
  }
}

Category

FieldTypeDescription
id / uuidID!Unique identifiers
nameString!Category name
slugString!URL-friendly name
positionIntSort order
is_publishedBooleanWhether it's visible
total_productsIntProducts in this category
children[Category!]Subcategories

Attributes

# Create an attribute (e.g. Color)
mutation {
  createAttribute(input: {
    name: "Color"
    values: [{ value: "Red" }, { value: "Blue" }, { value: "Black" }]
  }) {
    id name values { id value }
  }
}

# Add attribute to a product
mutation {
  addAttribute(product_id: 1, attributes_id: 1) {
    id name attributes { name values { value } }
  }
}