---
updatedAt: 2026-07-27T05:35:29.000Z
agentTools:
  projectIndex: https://developer.xentral.com/llms.txt
---

# 🔒 View product V3

This endpoint is currently in Beta and available for testing. It may contain bugs, and breaking changes can occur at any time without prior notice. We do not recommend using Beta endpoints in production environments. Should you choose to use it in production, you assume full responsibility for any resulting issues.

This endpoint requires the following scopes: `product:read`.

View a single product. Embed sub-resources with ?include=. A matrix product holds its options under include=options, while each of its variants carries one value per option under include=optionValues, reachable for every variant at once via include=variants.optionValues.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Xentral Business Documents API v3",
    "description": "The Xentral Business Documents API v3 for working with sales orders, offers, invoices, credit notes, delivery notes, return orders, purchase orders, proforma invoices and productions.\n\nIndividual endpoints marked as *Beta* may still change without prior notice — see the respective endpoint descriptions.\n\nRequest payloads may contain properties that an endpoint does not define; these are ignored rather than rejected. Nothing is stored for them and no error is returned, so check the response body to confirm which values were actually applied.",
    "contact": {
      "name": "API Support",
      "url": "https://xentral.com",
      "email": "api@xentral.com"
    },
    "version": "0.2.0"
  },
  "servers": [
    {
      "url": "https://{xentralId}.xentral.biz",
      "description": "Your xentral instance",
      "variables": {
        "xentralId": {
          "default": "my-company",
          "description": "Your Xentral instance ID"
        }
      }
    },
    {
      "url": "https://{domain}",
      "description": "Xentral with a custom domain",
      "variables": {
        "domain": {
          "default": "demo.xentral.com",
          "description": "Your Xentral custom domain"
        }
      }
    }
  ],
  "components": {
    "schemas": {
      "Address": {
        "required": [
          "id",
          "createdAt",
          "updatedAt"
        ],
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/TimestampsResource"
          },
          {
            "properties": {
              "id": {
                "type": "string",
                "example": "42"
              },
              "isDeleted": {
                "description": "Flagged if the entry was deleted.",
                "type": "boolean",
                "example": false
              }
            },
            "type": "object"
          }
        ]
      },
      "Money": {
        "description": "Money",
        "properties": {
          "amount": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "currency": {
            "description": "Currency",
            "type": "string",
            "example": "EUR"
          }
        },
        "type": "object",
        "example": {
          "amount": "13.37",
          "currency": "EUR"
        },
        "additionalProperties": false
      },
      "Product": {
        "description": "A product. Sub-resources are embedded on demand via ?include=.",
        "required": [
          "id"
        ],
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/ProjectReferenceResource"
          },
          {
            "$ref": "#/components/schemas/TimestampsResource"
          },
          {
            "properties": {
              "id": {
                "description": "Product ID.",
                "type": "string",
                "pattern": "[0-9]+",
                "example": "50123"
              },
              "uuid": {
                "description": "Stable UUID of the product.",
                "type": [
                  "string",
                  "null"
                ],
                "example": "c7b3f0e2-1a2b-4c3d-8e9f-0a1b2c3d4e5f"
              },
              "number": {
                "description": "SKU / product number.",
                "type": [
                  "string",
                  "null"
                ],
                "example": "SKU-1001"
              },
              "name": {
                "description": "Product name (primary language).",
                "type": [
                  "string",
                  "null"
                ],
                "example": "Widget Pro"
              },
              "description": {
                "description": "Product description (primary language).",
                "type": [
                  "string",
                  "null"
                ],
                "example": "A high-quality widget."
              },
              "ean": {
                "description": "European Article Number.",
                "type": [
                  "string",
                  "null"
                ],
                "example": "4001234567890"
              },
              "unit": {
                "description": "Unit of measure.",
                "type": [
                  "string",
                  "null"
                ],
                "example": "piece"
              },
              "customsTariffNumber": {
                "description": "Customs tariff number.",
                "type": [
                  "string",
                  "null"
                ],
                "example": "85340011"
              },
              "countryOfOrigin": {
                "description": "Country of origin (ISO 3166-1 alpha-2).",
                "type": [
                  "string",
                  "null"
                ],
                "example": "DE"
              },
              "merchandiseGroup": {
                "description": "Merchandise group of the product, used for account mapping and number ranges. By default only the ID is returned; use include=merchandiseGroup for the full merchandise group.",
                "example": {
                  "id": "7"
                },
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/ProductMerchandiseGroup"
                  },
                  {
                    "properties": {
                      "id": {
                        "type": "string",
                        "pattern": "[0-9]+"
                      }
                    },
                    "type": "object"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "defaultSupplier": {
                "description": "Default supplier address. By default only the ID is returned; use include=defaultSupplier for the full address.",
                "example": {
                  "id": "880"
                },
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/Address"
                  },
                  {
                    "properties": {
                      "id": {
                        "type": "string",
                        "pattern": "[0-9]+"
                      }
                    },
                    "type": "object"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "isStockItem": {
                "description": "Whether the product is stock-managed.",
                "type": "boolean",
                "example": true
              },
              "variantOf": {
                "description": "Parent product if this is a variant.",
                "properties": {
                  "id": {
                    "description": "Parent product ID.",
                    "type": "string",
                    "pattern": "[0-9]+"
                  }
                },
                "type": [
                  "object",
                  "null"
                ],
                "example": {
                  "id": "50000"
                }
              },
              "isMatrixProduct": {
                "description": "Whether the product is a matrix (variant parent) product.",
                "type": "boolean",
                "example": false
              },
              "manufacturer": {
                "description": "Manufacturer name.",
                "type": [
                  "string",
                  "null"
                ],
                "example": "Dell"
              },
              "manufacturerProductNumber": {
                "description": "Product number assigned by the manufacturer.",
                "type": [
                  "string",
                  "null"
                ],
                "example": "MFR-77"
              },
              "manufacturerUrl": {
                "description": "Manufacturer URL.",
                "type": [
                  "string",
                  "null"
                ],
                "example": "https://dell.com"
              },
              "regionOfOrigin": {
                "description": "German federal state of origin (two-digit code; 99 = foreign origin).",
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "01",
                  "02",
                  "03",
                  "04",
                  "05",
                  "06",
                  "07",
                  "08",
                  "09",
                  "10",
                  "11",
                  "12",
                  "13",
                  "14",
                  "15",
                  "16",
                  "99"
                ],
                "example": "08"
              },
              "internalComment": {
                "description": "Internal comment (not shown to customers).",
                "type": [
                  "string",
                  "null"
                ],
                "example": "Handle with care"
              },
              "measurements": {
                "description": "Physical measurements.",
                "properties": {
                  "weight": {
                    "description": "Weight in kg.",
                    "type": "number",
                    "example": 1.2
                  },
                  "netWeight": {
                    "description": "Net weight in kg.",
                    "type": "number",
                    "example": 1
                  },
                  "length": {
                    "description": "Length in cm.",
                    "type": "number",
                    "example": 30
                  },
                  "width": {
                    "description": "Width in cm.",
                    "type": "number",
                    "example": 20
                  },
                  "height": {
                    "description": "Height in cm.",
                    "type": "number",
                    "example": 2
                  }
                },
                "type": "object",
                "example": {
                  "weight": 1.2,
                  "netWeight": 1,
                  "length": 30,
                  "width": 20,
                  "height": 2
                },
                "additionalProperties": false
              },
              "minimumStockLevel": {
                "description": "Minimum stock level.",
                "type": "integer",
                "example": 0
              },
              "minimumOrderQuantity": {
                "description": "Minimum order quantity.",
                "type": "integer",
                "example": 0
              },
              "taxRate": {
                "description": "VAT rate tier applied to the product.",
                "type": "string",
                "enum": [
                  "standard",
                  "reduced",
                  "exempt"
                ],
                "example": "standard"
              },
              "serialNumberTracking": {
                "description": "Serial-number tracking mode.",
                "type": "string",
                "enum": [
                  "none",
                  "stockGenerated",
                  "stockOriginal",
                  "trackOriginal"
                ],
                "example": "none"
              },
              "hasBatches": {
                "description": "Whether batch/charge management is active.",
                "type": "boolean",
                "example": false
              },
              "hasBestBeforeDate": {
                "description": "Whether best-before-date tracking is active.",
                "type": "boolean",
                "example": false
              },
              "hasBillOfMaterials": {
                "description": "Whether the product has a bill of materials.",
                "type": "boolean",
                "example": false
              },
              "isAssembledJustInTime": {
                "description": "Whether the BOM is assembled just-in-time.",
                "type": "boolean",
                "example": false
              },
              "isProductionProduct": {
                "description": "Whether the product is produced in-house.",
                "type": "boolean",
                "example": false
              },
              "isExternallyProduced": {
                "description": "Whether the product is produced externally.",
                "type": "boolean",
                "example": false
              },
              "isCustomProduct": {
                "description": "Whether the product is a custom/individual product.",
                "type": "boolean",
                "example": false
              },
              "isShippingCostsProduct": {
                "description": "Whether the product represents shipping costs.",
                "type": "boolean",
                "example": false
              },
              "allowPurchaseFromAllSuppliers": {
                "description": "Whether purchasing from all suppliers is allowed.",
                "type": "boolean",
                "example": false
              },
              "isStockTakingDisabled": {
                "description": "Whether stock-taking is disabled for the product.",
                "type": "boolean",
                "example": false
              },
              "isInCatalog": {
                "description": "Whether the product is included in the catalog. The catalog name and text are per language and part of the texts include.",
                "type": "boolean",
                "example": false
              },
              "printSettings": {
                "description": "Document print settings applied when the product appears on a document.",
                "properties": {
                  "withoutPrices": {
                    "description": "Hide the price on documents (PDF).",
                    "type": "boolean",
                    "example": false
                  },
                  "withoutJustInTimeItems": {
                    "description": "Hide just-in-time component items on documents.",
                    "type": "boolean",
                    "example": false
                  }
                },
                "type": "object",
                "example": {
                  "withoutPrices": false,
                  "withoutJustInTimeItems": false
                },
                "additionalProperties": false
              },
              "isDeleted": {
                "description": "Whether the product is soft-deleted. Deleted products are excluded by default; request them explicitly via the isDeleted filter.",
                "type": "boolean",
                "example": false
              },
              "isDisabled": {
                "description": "Whether the product is internally blocked (disabled). Disabled products are excluded by default; request them explicitly via the isDisabled filter.",
                "type": "boolean",
                "example": false
              },
              "disabledReason": {
                "description": "Reason/message for the block.",
                "type": [
                  "string",
                  "null"
                ],
                "example": null
              },
              "ageRating": {
                "description": "Age rating (DHL identity check).",
                "type": [
                  "string",
                  "null"
                ],
                "example": null
              },
              "isDiscountProduct": {
                "description": "Whether the product is a discount product.",
                "type": "boolean",
                "example": false
              },
              "discountPercentage": {
                "description": "Discount percentage.",
                "type": "number",
                "example": 0
              },
              "stockTaking": {
                "description": "Stock-taking valuation.",
                "properties": {
                  "hasStockTakingValue": {
                    "description": "Whether a stock-taking value is set.",
                    "type": "boolean",
                    "example": false
                  },
                  "stockTakingValue": {
                    "description": "Stock-taking value.",
                    "type": "number",
                    "example": 0
                  }
                },
                "type": "object",
                "example": {
                  "hasStockTakingValue": false,
                  "stockTakingValue": 0
                },
                "additionalProperties": false
              },
              "calculatedPurchasePrice": {
                "description": "Calculated purchase price.",
                "properties": {
                  "hasCalculatedPurchasePrice": {
                    "description": "Whether a calculated purchase price is used.",
                    "type": "boolean",
                    "example": false
                  },
                  "price": {
                    "$ref": "#/components/schemas/Money"
                  }
                },
                "type": "object",
                "example": {
                  "hasCalculatedPurchasePrice": false,
                  "price": {
                    "amount": "0.0000",
                    "currency": "EUR"
                  }
                },
                "additionalProperties": false
              },
              "calculatoryPurchasePriceSettings": {
                "description": "Calculatory purchase-price recalculation configuration.",
                "properties": {
                  "addPurchasePriceToCalculationTrigger": {
                    "description": "Trigger that adds the purchase price to the calculation.",
                    "type": "string",
                    "enum": [
                      "manual",
                      "onPurchaseOrderCompletion",
                      "onGoodsReceipt"
                    ],
                    "example": "manual"
                  },
                  "calculatoryPurchasePriceRecalculationMethod": {
                    "description": "Method used to recalculate the calculatory purchase price.",
                    "type": "string",
                    "enum": [
                      "allRecordedPurchasesWeightedAverage",
                      "latestPurchaseOrdersWeightedAverage",
                      "movingAverage"
                    ],
                    "example": "allRecordedPurchasesWeightedAverage"
                  }
                },
                "type": "object",
                "example": {
                  "addPurchasePriceToCalculationTrigger": "manual",
                  "calculatoryPurchasePriceRecalculationMethod": "allRecordedPurchasesWeightedAverage"
                },
                "additionalProperties": false
              },
              "salesChannelDefaults": {
                "description": "Default sales-channel settings of the product. They apply in every sales channel that does not use individual settings (see the salesChannels include).",
                "properties": {
                  "isVisible": {
                    "description": "Whether the product is visible in the sales channels. While false, the product is hidden from every sales channel. This flag has no per-channel override: it also applies to channels that use individual settings.",
                    "type": "boolean",
                    "example": true
                  },
                  "isSoldOut": {
                    "description": "Whether the product is marked as sold out in the sales channels. This flag has no per-channel override: it applies to every sales channel, including ones that use individual settings.",
                    "type": "boolean",
                    "example": false
                  },
                  "isStockNumberSyncActive": {
                    "description": "Whether the stock quantity is automatically transferred to the sales channels.",
                    "type": "boolean",
                    "example": false
                  },
                  "isRemainingQuantity": {
                    "description": "Whether the product is switched to unavailable in the sales channels once the remaining stock is sold off.",
                    "type": "boolean",
                    "example": false
                  },
                  "suggestedRetailPrice": {
                    "description": "Suggested retail price (gross RRP) shown in the sales channels. Only used by some online shops.",
                    "type": [
                      "string",
                      "null"
                    ],
                    "example": "19.99"
                  },
                  "stockQuantityFormula": {
                    "description": "The rule that decides which stock quantity the sales channels are told instead of the actual stock, such as \"L:Main - RES\". A plain number is a valid rule.",
                    "type": [
                      "string",
                      "null"
                    ],
                    "example": "L:Main - RES"
                  },
                  "deliveryTime": {
                    "description": "Delivery time text shown in the sales channels.",
                    "type": [
                      "string",
                      "null"
                    ],
                    "example": "2-3 days"
                  },
                  "createNewProductNumberDuringImport": {
                    "description": "Whether a new product number is generated when the sales channel imports the product as an option product, e.g. for customised products.",
                    "type": "boolean",
                    "example": false
                  },
                  "stockCorrectionValue": {
                    "description": "Correction value added to the stock quantity reported to the sales channels; negative values reduce the reported stock. 0 means no correction.",
                    "type": "integer",
                    "example": -5
                  }
                },
                "type": "object",
                "example": {
                  "isVisible": true,
                  "isSoldOut": false,
                  "isStockNumberSyncActive": false,
                  "isRemainingQuantity": false,
                  "suggestedRetailPrice": "19.99",
                  "stockQuantityFormula": "L:Main - RES",
                  "deliveryTime": null,
                  "createNewProductNumberDuringImport": false,
                  "stockCorrectionValue": 0
                },
                "additionalProperties": false
              },
              "noDiscountAllowed": {
                "description": "No automatic discounts allowed for this product.",
                "type": "boolean",
                "example": false
              },
              "isCommissionBlocked": {
                "description": "Whether commission is blocked for this product.",
                "type": "boolean",
                "example": false
              },
              "noCashDiscountAllowed": {
                "description": "No cash discount allowed when selling.",
                "type": "boolean",
                "example": false
              },
              "suppressSalesPriceWarning": {
                "description": "Suppress the warning when the product is added to a document without a sales price.",
                "type": "boolean",
                "example": false
              },
              "requiresIdentityCheck": {
                "description": "Requires an identity check (DHL).",
                "type": "boolean",
                "example": false
              },
              "isDevice": {
                "description": "Marked as a device in the customer address.",
                "type": "boolean",
                "example": false
              },
              "isServiceItem": {
                "description": "Whether the product is marked as a service item.",
                "type": "boolean",
                "example": false
              },
              "isFee": {
                "description": "Whether the product represents a fee.",
                "type": "boolean",
                "example": false
              },
              "isService": {
                "description": "Whether the product is a service rather than a physical good.",
                "type": "boolean",
                "example": false
              },
              "hasRawMaterialList": {
                "description": "Whether the product has a raw-material list.",
                "type": "boolean",
                "example": false
              },
              "hasDailyPrices": {
                "description": "Whether daily prices are enabled for the product.",
                "type": "boolean",
                "example": false
              },
              "documentQuantityFormula": {
                "description": "Formula used to compute the quantity on documents.",
                "type": [
                  "string",
                  "null"
                ],
                "example": null
              },
              "documentPriceFormula": {
                "description": "Formula used to compute the price on documents.",
                "type": [
                  "string",
                  "null"
                ],
                "example": null
              },
              "noticeText": {
                "description": "Product-specific notice text.",
                "type": [
                  "string",
                  "null"
                ],
                "example": "Not sold individually"
              },
              "defaultStorageLocation": {
                "description": "Default storage bin (shelf short name).",
                "type": [
                  "string",
                  "null"
                ],
                "example": "A-01-02"
              },
              "individualTaxRate": {
                "description": "Individual tax rate in percent; null when the standard rate applies.",
                "type": [
                  "number",
                  "null"
                ],
                "example": null
              },
              "salesPrices": {
                "description": "Sales prices (include=salesPrices).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductSalesPrice"
                }
              },
              "purchasePrices": {
                "description": "Purchase prices (include=purchasePrices).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductPurchasePrice"
                }
              },
              "texts": {
                "description": "Language/shop texts (include=texts). Contains both the stored overrides and the base texts of the product itself.",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductText"
                }
              },
              "categories": {
                "description": "Product categories (category-tree nodes) the product is assigned to (include=categories).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductCategory"
                }
              },
              "externalReferences": {
                "description": "External product numbers (include=externalReferences).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductExternalReference"
                }
              },
              "deliveryThresholds": {
                "description": "Per-country delivery-threshold tax rules (include=deliveryThresholds).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductDeliveryThreshold"
                }
              },
              "calculationItems": {
                "description": "Cost-calculation line items (include=calculationItems).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductCalculationLineItemResource"
                }
              },
              "parts": {
                "description": "Bill-of-materials components (include=parts).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductBomItem"
                }
              },
              "usedIn": {
                "description": "Products whose bill of materials contains this product (include=usedIn).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductBomItem"
                }
              },
              "packagingUnits": {
                "description": "Packaging units of the product (include=packagingUnits).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductPackagingUnit"
                }
              },
              "crossSelling": {
                "description": "Cross-selling linked products (include=crossSelling).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductCrossSelling"
                }
              },
              "customFields": {
                "description": "Custom fields with their values, labels and per-language translations (include=customFields).",
                "type": "array",
                "items": {
                  "required": [
                    "key"
                  ],
                  "properties": {
                    "key": {
                      "type": "string",
                      "example": "customField1"
                    },
                    "label": {
                      "type": "string",
                      "example": "Material"
                    },
                    "type": {
                      "description": "The data type of the custom field. Legacy custom fields always report `string`.",
                      "type": "string",
                      "enum": [
                        "string",
                        "integer",
                        "float",
                        "date",
                        "datetime",
                        "boolean",
                        "translatable_string",
                        "object"
                      ],
                      "example": "string"
                    },
                    "value": {
                      "description": "The custom field value. Its JSON type depends on the sibling `type` field: `string`/`translatable_string` and `date`/`datetime` (as ISO 8601 strings) are strings, `integer`/`float` are numbers, `boolean` is a boolean, and `object` is a JSON object.",
                      "example": "Aluminium",
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "translations": {
                      "description": "Per-language label and value overrides for languages other than DE.",
                      "type": "array",
                      "items": {
                        "required": [
                          "language"
                        ],
                        "properties": {
                          "language": {
                            "description": "ISO 639-1 language code.",
                            "type": "string",
                            "example": "en"
                          },
                          "label": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Material"
                          },
                          "value": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Aluminum"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "workInstructions": {
                "description": "Work instructions (include=workInstructions).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductWorkInstruction"
                }
              },
              "variants": {
                "description": "Variant child products (include=variants).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              },
              "options": {
                "description": "Matrix options of this product with the values they can take (include=options). Only a matrix product holds options; for a variant the list is empty.",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductOption"
                }
              },
              "optionValues": {
                "description": "The option values this product carries as a variant, one per option of its matrix product (include=optionValues). Empty for a product that is not a variant.",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductOptionValue"
                }
              },
              "tags": {
                "description": "Assigned tags (include=tags).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Tag"
                }
              },
              "properties": {
                "description": "Assigned property values (include=properties).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductProperty"
                }
              },
              "salesChannels": {
                "description": "Per-sales-channel settings (include=salesChannels).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductSalesChannelSetting"
                }
              },
              "media": {
                "description": "Images & documents (include=media).",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductMedia"
                }
              },
              "storageLocations": {
                "description": "Where the product physically lies: one entry per storage location, batch and best-before date, with serial numbers aggregated, plus the aggregates over them. Only present when requested, and only on single-record endpoints: via include=storageLocations on the single-product endpoint, or via include=materials.product.storageLocations on a single production, where the production document prints the same breakdown for each material. On a production the physical fields are served and the `available` and `sellable` aggregates are omitted, because each material would pay for them separately. Reading it always requires the product:read scope, and it costs several warehouse round trips per product - which is why no list endpoint offers it. A parts-list product assembled just in time lies in no storage location and its `quantity` is always \"0\"; for the units its components allow to be assembled, per warehouse and pooled, ask GET /api/v3/products/{id}/stock.",
                "properties": {
                  "quantity": {
                    "description": "Total physical stock on hand across all warehouses. Always \"0\" for a product assembled just in time.",
                    "type": "string",
                    "example": "120.0000"
                  },
                  "available": {
                    "description": "Physically available stock (on hand minus pending quality-control deferrals), summed across all storage locations. For a product assembled just in time: the whole units its components still allow to be assembled across all warehouses once what they have committed elsewhere is deducted - the same figure GET /api/v3/products/{id}/stock reports as producibleAfterCommitments.",
                    "type": "string",
                    "example": "118.0000"
                  },
                  "sellable": {
                    "description": "Sellable stock after subtracting open sales-order and reservation commitments, summed across all storage locations. For a product assembled just in time: the whole units its components still allow to be assembled across all warehouses once what they have committed elsewhere is deducted, which makes it the same figure as available here.",
                    "type": "string",
                    "example": "100.0000"
                  },
                  "storageLocations": {
                    "description": "Stock per storage location. Each entry is a unique combination of storage location, batch and best-before date, with serial numbers aggregated.",
                    "type": "array",
                    "items": {
                      "required": [
                        "storageLocation",
                        "quantity"
                      ],
                      "properties": {
                        "storageLocation": {
                          "properties": {
                            "id": {
                              "type": "string",
                              "pattern": "[0-9]+",
                              "example": "42"
                            },
                            "name": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "example": "A-01-02"
                            },
                            "warehouse": {
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "pattern": "[0-9]+",
                                  "example": "1"
                                },
                                "name": {
                                  "type": "string",
                                  "example": "Main warehouse"
                                }
                              },
                              "type": [
                                "object",
                                "null"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "quantity": {
                          "description": "Stock quantity at this location for the batch/best-before combination.",
                          "type": "string",
                          "example": "30.0000"
                        },
                        "batch": {
                          "description": "Batch/charge number, or null when the product is not batch-tracked.",
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "LOT-42"
                        },
                        "bestBeforeDate": {
                          "description": "Best-before date, or null when not tracked.",
                          "type": [
                            "string",
                            "null"
                          ],
                          "format": "date",
                          "example": "2026-12-31"
                        },
                        "serialNumbers": {
                          "description": "Serial numbers present at this location; empty when the product is not serial-tracked.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "example": [
                            "SN-1",
                            "SN-2"
                          ]
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  }
                },
                "type": "object",
                "additionalProperties": false
              }
            },
            "type": "object"
          }
        ]
      },
      "ProductBomItem": {
        "description": "A bill-of-materials line. The linked product is the component for include=parts and the parent (assembly) for include=usedIn.",
        "required": [
          "id",
          "quantity",
          "type",
          "order",
          "product"
        ],
        "properties": {
          "id": {
            "description": "Bill-of-materials line ID.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "1337"
          },
          "quantity": {
            "description": "Quantity of the component per parent.",
            "type": "number",
            "format": "float",
            "example": 4
          },
          "type": {
            "description": "Type of the bill-of-materials line.",
            "type": "string",
            "enum": [
              "purchasePart",
              "informationPart",
              "providedPart"
            ],
            "example": "purchasePart"
          },
          "reference": {
            "description": "Free-text reference of the line.",
            "type": [
              "string",
              "null"
            ],
            "example": "R7"
          },
          "order": {
            "description": "The ordering sequence of the line within the bill of materials.",
            "type": "integer",
            "example": 10
          },
          "product": {
            "description": "The linked product: the component for include=parts, the parent (assembly) for include=usedIn.",
            "properties": {
              "id": {
                "description": "Product ID.",
                "type": "string",
                "pattern": "[0-9]+"
              },
              "name": {
                "description": "Product name.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "number": {
                "description": "Product SKU.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": "object",
            "example": {
              "id": "50123",
              "name": "Screw M4",
              "number": "SKU-9"
            }
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductCalculationLineItemResource": {
        "description": "A product calculation line item",
        "required": [
          "id",
          "designation",
          "costType",
          "includeInCalculation",
          "totalCost",
          "archived"
        ],
        "properties": {
          "id": {
            "description": "ID of the line item.",
            "type": "string",
            "example": "33"
          },
          "designation": {
            "description": "Designation of the line item. Free text, but commonly one of the known standard designations.",
            "example": "purchaseCosts",
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "enum": [
                  "additionalCosts",
                  "productionCosts",
                  "purchaseCosts",
                  "additionalParts",
                  "freightCosts",
                  "additionalFreightCosts"
                ]
              }
            ]
          },
          "date": {
            "description": "Date of the cost.",
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "example": "2026-01-01"
          },
          "costType": {
            "description": "Type of the cost.",
            "type": "string",
            "enum": [
              "oneTime",
              "perPiece",
              "perLot",
              "purchase",
              "oldMovingAverage"
            ],
            "example": "purchase"
          },
          "includeInCalculation": {
            "description": "Whether the line item is included in the purchase price calculation.",
            "type": "boolean",
            "example": true
          },
          "totalCost": {
            "$ref": "#/components/schemas/Money",
            "description": "Total cost of the line item."
          },
          "forQuantity": {
            "description": "Quantity for the total cost.",
            "type": [
              "integer",
              "null"
            ],
            "example": 10
          },
          "costPerUnit": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money",
                "description": "Cost per unit."
              },
              {
                "type": "null"
              }
            ],
            "description": "Cost per unit."
          },
          "purchaseOrder": {
            "description": "The purchase order connected to this line item.",
            "properties": {
              "id": {
                "description": "Purchase order ID.",
                "type": "string",
                "example": "1234"
              }
            },
            "type": [
              "object",
              "null"
            ],
            "example": {
              "id": "1234"
            }
          },
          "archived": {
            "description": "Whether the line item is archived.",
            "type": "boolean",
            "example": false
          },
          "editor": {
            "description": "The editor who created/modified the line item. Null when the line item was created without a user (e.g. by a system process).",
            "properties": {
              "id": {
                "description": "User ID of the editor.",
                "type": "string",
                "example": "17"
              },
              "name": {
                "description": "Username of the editor.",
                "type": "string",
                "example": "JohnDoe"
              }
            },
            "type": [
              "object",
              "null"
            ],
            "example": {
              "id": "17",
              "name": "JohnDoe"
            }
          },
          "internalComment": {
            "description": "Internal comment. Intended to be used for company-internal notes.",
            "type": [
              "string",
              "null"
            ],
            "example": "this is an internal comment"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductCategory": {
        "description": "A product category (a node of the category tree) the product is assigned to.",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "description": "Category ID.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "1337"
          },
          "name": {
            "description": "Category name.",
            "type": [
              "string",
              "null"
            ],
            "example": "Gadgets"
          },
          "parent": {
            "description": "Parent category in the tree.",
            "properties": {
              "id": {
                "description": "Parent category ID.",
                "type": "string",
                "pattern": "[0-9]+"
              }
            },
            "type": [
              "object",
              "null"
            ],
            "example": {
              "id": "2"
            }
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductCrossSelling": {
        "description": "A cross-selling relation of a product (linking it to a similar or accessory product).",
        "required": [
          "id",
          "type",
          "isActive",
          "isBidirectional",
          "order"
        ],
        "properties": {
          "id": {
            "description": "Cross-selling entry ID.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "1337"
          },
          "product": {
            "description": "Cross-sold product linked to the source product.",
            "properties": {
              "id": {
                "description": "Cross-sold product ID.",
                "type": "string",
                "pattern": "[0-9]+"
              }
            },
            "type": [
              "object",
              "null"
            ],
            "example": {
              "id": "5"
            }
          },
          "salesChannel": {
            "description": "Sales channel this cross-selling entry applies to. Null when it applies to all channels.",
            "properties": {
              "id": {
                "description": "Sales channel ID.",
                "type": "string",
                "pattern": "[0-9]+"
              }
            },
            "type": [
              "object",
              "null"
            ],
            "example": {
              "id": "2"
            }
          },
          "type": {
            "description": "Type of the cross-selling relation.",
            "type": "string",
            "enum": [
              "similar",
              "accessory"
            ],
            "example": "similar"
          },
          "isActive": {
            "description": "Whether the cross-selling relation is active.",
            "type": "boolean",
            "example": true
          },
          "isBidirectional": {
            "description": "Whether the relation applies in both directions, i.e. the linked product also lists this product.",
            "type": "boolean",
            "example": false
          },
          "order": {
            "description": "The ordering sequence of the entry within the product.",
            "type": "integer",
            "example": 10
          },
          "internalComment": {
            "description": "Internal comment, does not show up on documents. Intended to be used for company-internal notes.",
            "type": [
              "string",
              "null"
            ],
            "example": "Recommended add-on"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductDeliveryThreshold": {
        "description": "Product delivery threshold rule",
        "required": [
          "id",
          "recipientCountry",
          "taxRate",
          "active"
        ],
        "properties": {
          "id": {
            "description": "The unique identifier of the product delivery threshold rule",
            "type": "string",
            "example": "1"
          },
          "recipientCountry": {
            "description": "Recipient country code in ISO 3166-1 alpha-2 format",
            "type": "string",
            "example": "AT"
          },
          "taxRate": {
            "description": "Tax rate for this product and country combination",
            "type": "number",
            "format": "float",
            "example": 7.02
          },
          "comment": {
            "description": "Optional comment about the threshold rule",
            "type": [
              "string",
              "null"
            ],
            "example": "Special tax rate for Austria"
          },
          "revenueAccount": {
            "description": "Optional revenue account code",
            "type": [
              "string",
              "null"
            ],
            "example": "ABC123"
          },
          "active": {
            "description": "Whether the threshold rule is active",
            "type": "boolean",
            "example": true
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductExternalReference": {
        "description": "An external / foreign product number (e.g. per sales channel).",
        "required": [
          "id",
          "isActive",
          "isScannable"
        ],
        "properties": {
          "id": {
            "description": "External reference ID.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "1337"
          },
          "name": {
            "description": "Label of the external reference.",
            "type": [
              "string",
              "null"
            ],
            "example": "Amazon SKU"
          },
          "number": {
            "description": "The external product number.",
            "type": [
              "string",
              "null"
            ],
            "example": "B0ABCDE123"
          },
          "isActive": {
            "description": "Whether the reference is active.",
            "type": "boolean",
            "example": true
          },
          "isScannable": {
            "description": "Whether the number is scannable.",
            "type": "boolean",
            "example": false
          },
          "salesChannel": {
            "description": "Sales channel / shop the reference belongs to.",
            "properties": {
              "id": {
                "description": "Shop ID.",
                "type": "string",
                "pattern": "[0-9]+"
              }
            },
            "type": [
              "object",
              "null"
            ],
            "example": {
              "id": "3"
            }
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductMedia": {
        "description": "A media file (image or document) linked to a product.",
        "required": [
          "id",
          "isPrimary"
        ],
        "properties": {
          "id": {
            "description": "ID of the file — the id the productMedia endpoints take, and the one the upload endpoint returns.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "4711"
          },
          "category": {
            "description": "What the file is used for on the product. Null when it is filed under a keyword outside the standard set, for example one this Xentral instance defined itself.",
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "defaultImage",
              "defaultGroupImage",
              "labelImage",
              "otherImage",
              "printImage",
              "dataSheet",
              "certificateAttachment"
            ],
            "example": "defaultImage"
          },
          "isPrimary": {
            "description": "Whether this file is the standard image of the product — the one shown for the product and printed on its documents. At most one file per product is marked, and a product whose only images are label or group images has none.",
            "type": "boolean",
            "example": true
          },
          "name": {
            "description": "Name of the underlying file.",
            "type": [
              "string",
              "null"
            ],
            "example": "Vitra Eames Plastic Chair"
          },
          "description": {
            "description": "Description of the underlying file.",
            "type": [
              "string",
              "null"
            ],
            "example": "Front picture of the Vitra Eames Plastic Chair"
          },
          "url": {
            "description": "Temporary, signed URL to download the file. Null when the file has not been migrated to cloud storage yet.",
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "example": "https://files.example.com/artikel/4711.jpg?signature=abc123"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductMerchandiseGroup": {
        "description": "The merchandise group of a product, used for account mapping and number ranges.",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "description": "Merchandise group ID.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "7"
          },
          "name": {
            "description": "Merchandise group name.",
            "type": [
              "string",
              "null"
            ],
            "example": "Electronics"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductOption": {
        "description": "An option of a matrix product, such as size or colour, together with the values it can take. Options are held by the matrix product itself; each of its variants carries one value per option.",
        "required": [
          "id",
          "name",
          "order",
          "isActive",
          "values"
        ],
        "properties": {
          "id": {
            "description": "Product option ID.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "1401"
          },
          "name": {
            "description": "Name of the option.",
            "type": "string",
            "example": "Size"
          },
          "order": {
            "description": "Position of the option in the variant matrix. Lower values are shown first.",
            "type": "integer",
            "example": 1
          },
          "isActive": {
            "description": "Whether this option is still offered when new variants are created. Variants that already carry one of its values keep it either way.",
            "type": "boolean",
            "example": true
          },
          "values": {
            "description": "The values this option can take, in the order they are shown.",
            "type": "array",
            "items": {
              "required": [
                "id",
                "name",
                "order",
                "numberSuffix",
                "isActive"
              ],
              "properties": {
                "id": {
                  "description": "Option value ID.",
                  "type": "string",
                  "pattern": "[0-9]+",
                  "example": "1501"
                },
                "name": {
                  "description": "Name of the value.",
                  "type": "string",
                  "example": "L"
                },
                "order": {
                  "description": "Position of the value within its option. Lower values are shown first.",
                  "type": "integer",
                  "example": 1
                },
                "numberSuffix": {
                  "description": "Text appended to the product number of a variant carrying this value. Null when no suffix is configured.",
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "-L"
                },
                "isActive": {
                  "description": "Whether this value is still offered when new variants are created. Variants that already carry it keep it either way.",
                  "type": "boolean",
                  "example": true
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "example": [
              {
                "id": "1501",
                "name": "L",
                "order": 1,
                "numberSuffix": "-L",
                "isActive": true
              }
            ]
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductOptionValue": {
        "description": "One option value a variant product carries, together with the option it belongs to. A variant carries one entry per option of its matrix product. The option is normally one of that matrix product's own options, but older data can carry one that is not, and such an entry is still reported. Entries whose option cannot be determined at all are reported with a null option and sorted last, so the values a variant carries are never silently left out.",
        "required": [
          "option",
          "value"
        ],
        "properties": {
          "option": {
            "description": "The option this value belongs to. Null when it cannot be determined, which happens in older data; the value itself is still reported.",
            "required": [
              "id",
              "name",
              "isActive"
            ],
            "properties": {
              "id": {
                "description": "Product option ID.",
                "type": "string",
                "pattern": "[0-9]+",
                "example": "1401"
              },
              "name": {
                "description": "Name of the option.",
                "type": "string",
                "example": "Size"
              },
              "isActive": {
                "description": "Whether this option is still offered when new variants are created. This variant keeps the value either way.",
                "type": "boolean",
                "example": true
              }
            },
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false
          },
          "value": {
            "description": "The value the variant carries for that option.",
            "required": [
              "id",
              "name",
              "numberSuffix",
              "isActive"
            ],
            "properties": {
              "id": {
                "description": "Option value ID.",
                "type": "string",
                "pattern": "[0-9]+",
                "example": "1501"
              },
              "name": {
                "description": "Name of the value.",
                "type": "string",
                "example": "L"
              },
              "numberSuffix": {
                "description": "Text appended to the product number of a variant carrying this value, so the variant's number can be traced back to the values it is built from. Null when no suffix is configured.",
                "type": [
                  "string",
                  "null"
                ],
                "example": "-L"
              },
              "isActive": {
                "description": "Whether this value is still offered when new variants are created. This variant keeps it either way.",
                "type": "boolean",
                "example": true
              }
            },
            "type": "object",
            "additionalProperties": false
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductPackagingUnit": {
        "description": "A packaging unit of a product (a box/carton holding a fixed number of items) together with its pallet layout and derived weights and volumes.",
        "required": [
          "id",
          "quantity",
          "length",
          "width",
          "height",
          "tareWeight",
          "boxVolume",
          "netWeight",
          "grossWeight",
          "pallet"
        ],
        "properties": {
          "id": {
            "description": "Packaging unit ID.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "1337"
          },
          "quantity": {
            "description": "Number of items contained in one box.",
            "type": "number",
            "format": "float",
            "example": 12
          },
          "barcode": {
            "description": "Barcode of the packaging unit, scanned to identify the box during stock-in. Distinct from the product EAN.",
            "type": [
              "string",
              "null"
            ],
            "example": "4260123456789"
          },
          "description": {
            "description": "Free-text description of the packaging unit.",
            "type": [
              "string",
              "null"
            ],
            "example": "Retail carton"
          },
          "length": {
            "description": "Length of the box in centimeters.",
            "type": "number",
            "format": "float",
            "example": 40
          },
          "width": {
            "description": "Width of the box in centimeters.",
            "type": "number",
            "format": "float",
            "example": 30
          },
          "height": {
            "description": "Height of the box in centimeters.",
            "type": "number",
            "format": "float",
            "example": 20
          },
          "tareWeight": {
            "description": "Weight of the empty packaging (tare) in grams.",
            "type": "number",
            "format": "float",
            "example": 250
          },
          "boxVolume": {
            "description": "Computed volume of one box in cubic meters.",
            "type": "number",
            "format": "float",
            "example": 0.024
          },
          "netWeight": {
            "description": "Computed net weight of one full box in kilograms.",
            "type": "number",
            "format": "float",
            "example": 24
          },
          "grossWeight": {
            "description": "Computed gross weight of one full box in kilograms.",
            "type": "number",
            "format": "float",
            "example": 24.25
          },
          "pallet": {
            "description": "Pallet layout of the packaging unit together with its derived totals.",
            "properties": {
              "boxesPerLayer": {
                "description": "Number of boxes per layer.",
                "type": "integer",
                "example": 8
              },
              "layers": {
                "description": "Number of layers stacked on the pallet.",
                "type": "integer",
                "example": 5
              },
              "additionalBoxes": {
                "description": "Additional boxes placed on top of the full layers.",
                "type": "integer",
                "example": 2
              },
              "height": {
                "description": "Height of the loaded pallet in centimeters.",
                "type": "number",
                "format": "float",
                "example": 120
              },
              "boxes": {
                "description": "Computed total number of boxes on the pallet.",
                "type": "integer",
                "example": 42
              },
              "units": {
                "description": "Computed total number of items on the pallet.",
                "type": "number",
                "format": "float",
                "example": 504
              },
              "netWeight": {
                "description": "Computed net weight of a full pallet in kilograms.",
                "type": "number",
                "format": "float",
                "example": 1008
              }
            },
            "type": "object",
            "example": {
              "boxesPerLayer": 8,
              "layers": 5,
              "additionalBoxes": 2,
              "height": 120,
              "boxes": 42,
              "units": 504,
              "netWeight": 1008
            },
            "additionalProperties": false
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductProperty": {
        "description": "A property assigned to a product together with the value entries this product has for it.",
        "required": [
          "id",
          "name",
          "type",
          "values"
        ],
        "properties": {
          "id": {
            "description": "Global property definition ID, shared by every product carrying this property.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "1337"
          },
          "name": {
            "description": "Name of the property.",
            "type": "string",
            "example": "Material"
          },
          "type": {
            "description": "Property input type.",
            "type": "string",
            "enum": [
              "singleLine",
              "select"
            ]
          },
          "values": {
            "description": "The value entries assigned to this property.",
            "type": "array",
            "items": {
              "properties": {
                "id": {
                  "description": "Property value entry ID.",
                  "type": "string",
                  "pattern": "[0-9]+",
                  "example": "4711"
                },
                "value": {
                  "description": "The stored value of the entry.",
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Red"
                },
                "unit": {
                  "description": "Unit of the value, if any.",
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "cm"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "example": [
              {
                "id": "4711",
                "value": "Red",
                "unit": "cm"
              }
            ]
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductPurchasePrice": {
        "description": "A purchase price of a product (per supplier, scale quantity and currency).",
        "required": [
          "id",
          "quantity",
          "isDefaultSupplier"
        ],
        "properties": {
          "id": {
            "description": "Purchase price ID.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "1337"
          },
          "supplier": {
            "description": "Supplier address the price applies to.",
            "properties": {
              "id": {
                "description": "Supplier address ID.",
                "type": "string",
                "pattern": "[0-9]+"
              }
            },
            "type": [
              "object",
              "null"
            ],
            "example": {
              "id": "880"
            }
          },
          "supplierProductName": {
            "description": "Product designation the supplier uses for this product.",
            "type": [
              "string",
              "null"
            ],
            "example": "Widget Pro (supplier label)"
          },
          "supplierProductNumber": {
            "description": "Product number the supplier uses for this product.",
            "type": [
              "string",
              "null"
            ],
            "example": "SUP-4711"
          },
          "quantity": {
            "description": "Scale price applies from this quantity.",
            "type": "number",
            "format": "float",
            "example": 100
          },
          "price": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money",
                "description": "Net purchase price as amount and currency. Null for legacy price rows stored without a currency."
              },
              {
                "type": "null"
              }
            ],
            "description": "Net purchase price as amount and currency. Null for legacy price rows stored without a currency."
          },
          "isDefaultSupplier": {
            "description": "Whether this is the default supplier price.",
            "type": "boolean",
            "example": true
          },
          "internalComment": {
            "description": "Internal comment for this purchase price.",
            "type": [
              "string",
              "null"
            ],
            "example": "Framework agreement 2026"
          },
          "expiresAt": {
            "description": "Date until which the price is valid.",
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "example": "2026-12-31"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductSalesChannelSetting": {
        "description": "Per sales-channel settings of a product (one entry per online shop / sales channel).",
        "required": [
          "id",
          "isActive",
          "useIndividualSalesChannelSettings",
          "isStockNumberSyncActive",
          "isRemainingQuantity",
          "suggestedRetailPrice",
          "createNewProductNumberDuringImport",
          "stockCorrectionValue"
        ],
        "properties": {
          "id": {
            "description": "Sales channel setting ID.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "4711"
          },
          "salesChannel": {
            "description": "Sales channel (online shop) the settings apply to.",
            "properties": {
              "id": {
                "description": "Sales channel ID.",
                "type": "string",
                "pattern": "[0-9]+"
              }
            },
            "type": [
              "object",
              "null"
            ],
            "example": {
              "id": "5"
            }
          },
          "isActive": {
            "description": "Whether this sales-channel entry is active. While false, the entry is skipped entirely: its individual settings are ignored and no stock or article data is synced through it.",
            "type": "boolean",
            "example": true
          },
          "useIndividualSalesChannelSettings": {
            "description": "Whether individual settings are used for this sales channel instead of the product-wide defaults. While false, the values of the product's salesChannelDefaults block apply to this channel. Individual values take effect only while the entry is active.",
            "type": "boolean",
            "example": true
          },
          "isStockNumberSyncActive": {
            "description": "Whether stock quantity synchronisation is active for this sales channel.",
            "type": "boolean",
            "example": false
          },
          "isRemainingQuantity": {
            "description": "Whether the product is switched to unavailable in this sales channel once the remaining stock is sold off.",
            "type": "boolean",
            "example": false
          },
          "suggestedRetailPrice": {
            "description": "Suggested retail price (RRP) shown in this sales channel.",
            "type": "string",
            "example": "19.99"
          },
          "stockQuantityFormula": {
            "description": "The rule that decides which stock quantity this sales channel is told instead of the actual stock, such as \"L:Main - RES\". A plain number is a valid rule.",
            "type": [
              "string",
              "null"
            ],
            "example": "L:Main - RES"
          },
          "deliveryTime": {
            "description": "Manually set delivery time for this sales channel.",
            "type": [
              "string",
              "null"
            ],
            "example": "2-3 days"
          },
          "createNewProductNumberDuringImport": {
            "description": "Whether a new product number is generated during import for this sales channel.",
            "type": "boolean",
            "example": false
          },
          "stockCorrectionValue": {
            "description": "Correction value added to the stock quantity reported to this sales channel; negative values reduce the reported stock. 0 means no correction.",
            "type": "integer",
            "example": -5
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductSalesPrice": {
        "description": "A sales price of a product (per customer, customer group, scale quantity and currency).",
        "required": [
          "id",
          "quantity",
          "isNotCalculatedFromExchangeTable",
          "hideInBulkPriceListing"
        ],
        "properties": {
          "id": {
            "description": "Unique identifier of the sales price.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "1337"
          },
          "customer": {
            "description": "Customer this sales price applies to. Null when the price applies to a customer group or to all customers.",
            "properties": {
              "id": {
                "description": "Customer ID",
                "type": "string",
                "pattern": "[0-9]+"
              }
            },
            "type": [
              "object",
              "null"
            ],
            "example": {
              "id": "1337"
            }
          },
          "customerGroup": {
            "description": "Customer group this sales price applies to. Null when the price applies to a specific customer or to all customers.",
            "properties": {
              "id": {
                "description": "Customer group ID",
                "type": "string",
                "pattern": "[0-9]+"
              }
            },
            "type": [
              "object",
              "null"
            ],
            "example": {
              "id": "1337"
            }
          },
          "price": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money",
                "description": "Net sales price as amount and currency. Prices in Xentral are net B2B prices. Null for legacy price rows stored without a currency."
              },
              {
                "type": "null"
              }
            ],
            "description": "Net sales price as amount and currency. Prices in Xentral are net B2B prices. Null for legacy price rows stored without a currency."
          },
          "quantity": {
            "description": "Minimum quantity of the product from which this sales price applies.",
            "type": "number",
            "format": "float",
            "example": 13.37
          },
          "packageAmount": {
            "description": "Quantity contained in one packaging unit for this sales price (the \"Quantity in PU\" value on the sales-price screen). Entries with a non-numeric suffix resolve to their leading number; entries without a leading number, or a zero value, resolve to null.",
            "type": [
              "number",
              "null"
            ],
            "format": "float",
            "example": 13.37
          },
          "customerProductNumber": {
            "description": "The product number as used by the customer.",
            "type": [
              "string",
              "null"
            ],
            "example": "Number1"
          },
          "isNotCalculatedFromExchangeTable": {
            "description": "If true, this price is not converted via the currency exchange table.",
            "type": "boolean",
            "example": true
          },
          "hideInBulkPriceListing": {
            "description": "If true, this price is hidden in scale-price listings on documents.",
            "type": "boolean",
            "example": false
          },
          "internalComment": {
            "description": "Internal comment for this sales price.",
            "type": [
              "string",
              "null"
            ],
            "example": "Special pricing note"
          },
          "validFrom": {
            "description": "Date from which this sales price is valid. Null if not limited.",
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "example": "2025-01-01"
          },
          "expiresAt": {
            "description": "Date until which this sales price is valid. Null if not limited.",
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "example": "2025-01-01"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductText": {
        "description": "Language- and shop-specific texts of a product. Entries with an `id` are the stored per-language, per-sales-channel overrides; entries with `id: null` and `salesChannel: null` are the base texts kept on the product itself. Values are returned as stored — overrides are not collapsed over the base texts and variants do not inherit from their parent product.",
        "required": [
          "language",
          "isInCatalog",
          "isActive"
        ],
        "properties": {
          "id": {
            "description": "Product text ID. Null for the base texts stored on the product itself, which have no row of their own.",
            "type": [
              "string",
              "null"
            ],
            "pattern": "[0-9]+",
            "example": "1337"
          },
          "language": {
            "description": "Language code, e.g. \"de\".",
            "type": "string",
            "example": "de"
          },
          "salesChannel": {
            "description": "Sales channel the text applies to.",
            "properties": {
              "id": {
                "description": "Shop ID.",
                "type": "string",
                "pattern": "[0-9]+"
              }
            },
            "type": [
              "object",
              "null"
            ],
            "example": {
              "id": "3"
            }
          },
          "name": {
            "description": "Product name in this language.",
            "type": [
              "string",
              "null"
            ],
            "example": "Widget Pro"
          },
          "shortDescription": {
            "description": "Short description.",
            "type": [
              "string",
              "null"
            ],
            "example": "A compact widget."
          },
          "description": {
            "description": "Long description.",
            "type": [
              "string",
              "null"
            ],
            "example": "A high-quality widget for everyday use."
          },
          "shopDescription": {
            "description": "Online-shop description.",
            "type": [
              "string",
              "null"
            ],
            "example": "Buy the Widget Pro now."
          },
          "metaTitle": {
            "description": "SEO meta title.",
            "type": [
              "string",
              "null"
            ],
            "example": "Widget Pro | Shop"
          },
          "metaDescription": {
            "description": "SEO meta description.",
            "type": [
              "string",
              "null"
            ],
            "example": "The best widget."
          },
          "metaKeywords": {
            "description": "SEO meta keywords.",
            "type": [
              "string",
              "null"
            ],
            "example": "widget, tool"
          },
          "isInCatalog": {
            "description": "Whether the product is included in the catalog.",
            "type": "boolean",
            "example": false
          },
          "catalogName": {
            "description": "Catalog name.",
            "type": [
              "string",
              "null"
            ],
            "example": "Main catalog"
          },
          "catalogText": {
            "description": "Catalog text.",
            "type": [
              "string",
              "null"
            ],
            "example": "Widget Pro catalog entry."
          },
          "isActive": {
            "description": "Whether this text is active.",
            "type": "boolean",
            "example": true
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductVariant": {
        "description": "A variant child product of a matrix product.",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "description": "Variant product ID.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "50124"
          },
          "name": {
            "description": "Variant product name.",
            "type": [
              "string",
              "null"
            ],
            "example": "Widget Pro – Red"
          },
          "number": {
            "description": "Variant SKU.",
            "type": [
              "string",
              "null"
            ],
            "example": "SKU-1001-RED"
          },
          "ean": {
            "description": "Variant EAN.",
            "type": [
              "string",
              "null"
            ],
            "example": "4001234567891"
          },
          "optionValues": {
            "description": "The option values this variant carries, one per option of its matrix product (include=variants.optionValues).",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductOptionValue"
            }
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProductWorkInstruction": {
        "description": "A work instruction of a product (assembly or production step).",
        "required": [
          "id",
          "name",
          "timePerUnit",
          "order"
        ],
        "properties": {
          "id": {
            "description": "Work instruction ID.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "1337"
          },
          "name": {
            "description": "Short name of the work instruction.",
            "type": "string",
            "example": "Assemble housing"
          },
          "description": {
            "description": "Detailed description of the work instruction.",
            "type": [
              "string",
              "null"
            ],
            "example": "Attach the front panel using four M3 screws."
          },
          "timePerUnit": {
            "description": "Time required per unit, in seconds.",
            "type": "integer",
            "example": 120
          },
          "workstationGroup": {
            "description": "Workstation group the instruction is performed at.",
            "properties": {
              "id": {
                "description": "Workstation group ID.",
                "type": "string",
                "pattern": "[0-9]+"
              }
            },
            "type": [
              "object",
              "null"
            ],
            "example": {
              "id": "5"
            }
          },
          "order": {
            "description": "Sort order of the work instruction.",
            "type": "integer",
            "example": 10
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "Project": {
        "required": [
          "id",
          "name",
          "abbreviation"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "54"
          },
          "name": {
            "type": "string",
            "example": "Standard Project"
          },
          "abbreviation": {
            "type": "string",
            "example": "STANDARD"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ProjectReferenceResource": {
        "properties": {
          "project": {
            "description": "Project the resource belongs to. By default, only the ID is returned. To get the full Project object, use the `include` parameter.",
            "example": {
              "id": "1"
            },
            "anyOf": [
              {
                "$ref": "#/components/schemas/Project"
              },
              {
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "[0-9]+"
                  }
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object"
      },
      "Tag": {
        "description": "A tag (label) assigned to a resource.",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "description": "Tag ID.",
            "type": "string",
            "pattern": "[0-9]+",
            "example": "4"
          },
          "title": {
            "description": "Display name of the tag.",
            "type": "string",
            "example": "important"
          },
          "color": {
            "description": "Hex color code of the tag.",
            "type": "string",
            "example": "#FFFFFF"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "TimestampsResource": {
        "properties": {
          "createdAt": {
            "description": "The date and time when the resource was created.",
            "type": "string",
            "format": "date-time",
            "example": "2023-10-01T12:00:00Z"
          },
          "updatedAt": {
            "description": "The date and time when the resource was last updated.",
            "type": "string",
            "format": "date-time",
            "example": "2023-10-01T12:00:00Z"
          }
        },
        "type": "object"
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Product",
      "description": "Product"
    }
  ],
  "paths": {
    "/api/v3/products/{id}": {
      "get": {
        "tags": [
          "Product"
        ],
        "summary": "🔒 View product V3",
        "description": "This endpoint is currently in Beta and available for testing. It may contain bugs, and breaking changes can occur at any time without prior notice. We do not recommend using Beta endpoints in production environments. Should you choose to use it in production, you assume full responsibility for any resulting issues.\n\nThis endpoint requires the following scopes: `product:read`.\n\nView a single product. Embed sub-resources with ?include=. A matrix product holds its options under include=options, while each of its variants carries one value per option under include=optionValues, reachable for every variant at once via include=variants.optionValues.",
        "operationId": "GET::api-v3-products-id",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "required": false,
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "project",
                  "defaultSupplier",
                  "merchandiseGroup",
                  "salesPrices",
                  "purchasePrices",
                  "texts",
                  "categories",
                  "externalReferences",
                  "deliveryThresholds",
                  "calculationItems",
                  "parts",
                  "usedIn",
                  "packagingUnits",
                  "crossSelling",
                  "customFields",
                  "workInstructions",
                  "variants",
                  "variants.optionValues",
                  "options",
                  "optionValues",
                  "tags",
                  "properties",
                  "salesChannels",
                  "media",
                  "storageLocations"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "View a single product. Embed sub-resources with ?include=. A matrix product holds its options under include=options, while each of its variants carries one value per option under include=optionValues, reachable for every variant at once via include=variants.optionValues.",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Product"
                    }
                  },
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "message": {
                      "description": "Too Many Requests",
                      "type": "string",
                      "example": "Too Many Requests"
                    }
                  },
                  "type": "object"
                }
              }
            }
          }
        },
        "x-beta": true,
        "x-scopes": [
          "product:read"
        ]
      }
    }
  }
}
```