Products Queries

Retrieve the product catalog including variants, options, suppliers, and images.

Product — Returns a single product by id

query GetProduct($id: ID!) {
  Product(id: $id) {
    id
    label
    sku
    type
    active
    variants_on_hand
    variants_available
    variants_count
    brand { id label }
    variants {
      paginatorInfo { total }
      data { id sku label }
    }
  }
}

Products — Returns a paginated list of products with sorting and filters

query Products(
  $where: QueryProductsWhereWhereConditions,
  $orderBy: [QueryProductsOrderByOrderByClause!],
  $search: String,
  $first: Int,
  $page: Int,
  $trashed: Trashed
) {
  Products(
    where: $where,
    orderBy: $orderBy,
    search: $search,
    first: $first,
    page: $page,
    trashed: $trashed
  ) {
    paginatorInfo {
      total
      currentPage
    }
    data {
      id
      label
      active
      sku
      type
      variants_available
      brand { label }
    }
  }
}

Available fields

FieldTypeDescription
idIntUnique identifier.
labelStringName of the product (Parent).
activeBooleanTrue if the product is active in the catalog.
skuStringRepresentative SKU (usually from the first variant).
typeStringProduct category (Standard, Variant, Kit).
descriptionStringPublic description used in documents and portal.
supplier_descriptionStringSpecific description for purchase orders.
track_inventoryBooleanTrue if inventory levels are managed for this product.
country_of_originStringOrigin country for customs.
has_serial_numbersBooleanTrue if any variant uses serial number tracking.
options_countFloatNumber of defined options (Color, Size, etc.).
variants_countFloatTotal number of child variations.
variants_with_inventory_countFloatCount of variations with physical stock.
variants_on_handFloatAggregate physical stock (takes location_ids argument).
variants_availableFloatAggregate sellable stock (takes location_ids argument).
variants_incomingFloatAggregate pending stock from purchases.
variants_reservedFloatAggregate committed stock from sales.
has_batch_numbersBooleanTrue if any variant uses batch/lot tracking.
default_supplier_idIntID of the primary supplier.
cover_imageStringURL to the primary product image.
options[OptionProduct]List of options linked to the product.
variants[Variant]Paginated list of variations.
default_variantVariantUsually the first variation created.
attributes[AttributeVariant]List of attributes across all variants.
suppliers[Supplier]List of assigned suppliers.
product_tags[ProductTag]Associated classification tags.
seasons[Season]Associated commercial seasons.
brandBrandManufacturer or brand link.
images[File]Full list of uploaded images.
integrations[Integration]Links to external platforms (Shopify, QBO, etc.).
created_atDateTimeCreation timestamp.
updated_atDateTimeLast update timestamp.
custom_fields[EntityCustomField]Custom fields for this entity.
variant_custom_fields[EntityCustomField]Custom fields from the first variant.

Filters

The following fields can be used in the where parameter:

id, label, sku, active, created_at, updated_at, option_id, option1_id, option2_id, option3_id, product_type, supplier_id, variants_on_hand, variants_available.

Example Filters:

FieldExample
label{ "column": "LABEL", "operator": "LIKE", "value": "%Tee-Shirt%" }
sku{ "column": "SKU", "operator": "EQ", "value": "TSH-BLUE" }
active{ "column": "ACTIVE", "operator": "EQ", "value": true }
supplier_id{ "column": "SUPPLIER_ID", "operator": "EQ", "value": 5001 }
trashedFilter by trashed status. Accepts ALL, TRASHED, or NOT_TRASHED.

Sorting

You can sort results using the orderBy parameter:

  • id
  • label
  • active
  • created_at
  • updated_at
  • sku

Data Types

OptionProduct

FieldTypeDescription
product_idIntProduct ID.
idIntOption ID (renamed from option_id).
optionOptionThe option details (e.g., Color, Size).
productProductThe product this option belongs to.

ProductIDInput

FieldTypeDescription
idIDProduct ID.

Enums

ProductImageType

ValueDescription
productImageStandard image used for products.