> For the complete documentation index, see [llms.txt](https://dev.skladon.com/main/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev.skladon.com/main/integration/api/products.md).

# Products

You may find descriptions of endpoints for work with products below.

## Filter products (grid)

> Paged product search. Body: \`#/definitions/V21GridRequestGeneric\`.\
> Use \*\*product\*\* column names in \`columns\`, \`sorts\[].column\`, and filter \`column\` (listed under that definition).<br>

```json
{"openapi":"3.1.1","info":{"title":"GWMS API v2.1 (v21)","version":"2.1.0"},"tags":[{"name":"Products","description":"Products, availability, grid (no separate product-sets endpoints)"}],"servers":[{"url":"https://gw.new.skladon.net/v21"}],"security":[{"authorization":[],"XApiKey":[]}],"components":{"securitySchemes":{"authorization":{"type":"apiKey","name":"authorization","in":"header"}},"parameters":{"HeaderXApiKey":{"schema":{"type":"string"},"name":"x-api-key","in":"header","required":true,"description":"Eshop API key from onboarding"},"HeaderAuthorization":{"schema":{"type":"string"},"name":"authorization","in":"header","required":true,"description":"Bearer JWT from POST /v21/users/login"}},"schemas":{"V21GenericGridResponse":{"type":"object","description":"Grid result envelope. `data.data` is an array of row objects (shape depends on requested `columns`).\n`data.request` echoes the grid request. `data.totalCount` is the total number of matching rows (for pagination).\n","required":["statusCode","message"],"properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"data":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"request":{"type":"object"},"totalCount":{"type":"number"}}}}},"ErrorMessageResponse":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]},"V21GridRequestGeneric":{"type":"object","description":"Paged list / search body for all `POST …/filter` endpoints.\n\n**Top-level fields**\n- `page` (integer ≥ 1, default 1)\n- `items` (page size, 1–1000, default 10)\n- `columns` (string[]): which fields each row should include; **empty array = all columns** for that grid\n- `sorts`: array of `{ column, direction }`; `direction` is `ASC`, `DESC`, `asc`, or `desc`\n- `filters`: **OR of AND-groups**. Outer array = OR. Each inner array = AND of conditions. Each condition = `{ column, operator, value }`.\n\n**Filter operators** (unless noted for stock movements only)\n- `eq` / `neq` — equal / not equal\n- `gt` / `gte` / `lt` / `lte` — comparisons\n- `in` / `nin` — value must be an **array** of scalars in `value`\n- `like` / `nlike` — substring match / not match\n- `between` / `nbetween` — `value` must be an **array of two** endpoints\n- `null` / `notnull` — column IS NULL / IS NOT NULL\n- `empty` / `notempty` — null or empty string / neither\n- **Stock movements only** (this endpoint’s filters): `likein` is also allowed (same family as `like`).\n\n**`value` type**: string, number, boolean, array, or `null`, depending on `operator` (e.g. `in`/`nin`/`between` expect arrays as above).\n\n---\n\n**Column names for `POST /products/filter`** (also use these in `sorts[].column` and filter `column`):\n`id`, `customField1`, `customField2`, `customField3`, `description`, `ean`, `expMethod`, `guid`, `hsCode`, `isbn`, `mpn`, `name`, `note`, `price`, `productType`, `rop`, `sku`, `upc`, `active`, `scanSerialNumber`, `originCountry`, `snRegex`, `unitPrice`, `weight`, `width`, `height`, `length`, `insertToProductSkus`, `insertToCountries`, `insertType`, `insertByOrderType`, `insertPriceFrom`, `insertPriceTo`, `expirationDays`, `createdAt`, `updatedAt`, `dimensionsChangedAt`, `deletedAt`, `quantityConversion`, `isDeleted`, `ageCheck`, `batteryType`.\n\n**Column names for `POST /orders/filter`**:\n`id`, `addressId`, `allowExpedition`, `billingAddressAdditionalInfo`, `billingAddressAdditionalInfo2`, `billingAttentionName`, `billingCity`, `billingCompanyId`, `billingCompanyName`, `billingEmail`, `billingName`, `billingPhone`, `billingPostCode`, `billingProvinceCode`, `billingState`, `billingStreet`, `billingTaxId`, `codCurrency`, `codPrice`, `codRefNumber`, `currency`, `eshopOrderId`, `invoiceDate`, `invoiceNumber`, `marketplace`, `message`, `method`, `note`, `orderType`, `paid`, `partnerOrderId`, `paymentMethod`, `price`, `printFiles`, `holdByQuality`, `underSanction`, `priority`, `recipientAddressAdditionalInfo`, `recipientAddressAdditionalInfo2`, `recipientAttentionName`, `recipientCity`, `recipientCompanyId`, `recipientCompanyName`, `recipientEmail`, `recipientName`, `recipientPhone`, `recipientPostCode`, `recipientProvinceCode`, `recipientState`, `recipientStreet`, `recipientTaxId`, `shipper`, `shipperServiceCode`, `shippingPrice`, `branchId`, `status`, `timestamp`, `requiredExpeditionDate`, `trackingNumbers`, `recipientGln`, `billingGln`, `deliveredAt`, `canceledAt`, `disableShippingReorder`, `updatedAt`, `waitingForPaymentAt`, `productsNotAvailableAt`, `suspendedAt`, `releaseFromSuspendedAt`, `incorrectAt`, `waitingForShipmentAt`, `shipmentOrderedAt`, `inProcessAt`, `packedAt`, `waitingForCarrierAt`, `shippedAt`, `returningBackAt`, `returnedBackAt`, `parentOrderId`, `parentEshopOrderId`, `returnTrackingNumber`, `exchangeTrackingNumber`, `eshopNote`, `orderBoxCount`, `incorrectOrderMessage`.\n(v21 order **write** payloads do not support `recipientAddressAdditionalInfo2` / `billingAddressAdditionalInfo2`; they may still appear as **read-only** grid fields.)\n\n**Column names for `POST /receivings/filter`**:\n`eshopReceivingId`, `deliveryNoteNumber`, `deliveryType`, `description`, `driverCompany`, `driverDispatcherContact`, `driverName`, `driverPhone`, `driverTrailerLicensePlate`, `duty`, `estimatedDelivery`, `status`, `supplier`, `trackingNumber`, `unitsAmount`, `urgent`, `eshopNote`, `priority`, `containerNumber`, `announcedPalletsCount`, `receivingType`, `incoterms`, `realDelivery`, `slaSuspended`, `photoDocumentationTaken`, `deliveredPalletsCount`, `deliveredCartonsCount`, `returnedEurPalletsCount`, `deliveredStandardPalletsCount`, `returnedStandardPalletsCount`, `deliveredOtherPalletsCount`, `deliveredBrokenPalletsCount`, `skladonNote`, `unloadedAt`, `receivedAt`, `confirmedAt`, `canceledAt`.\n\n**Column names for `POST /returns/filter`**:\n`description`, `eshopReturnId`, `eshopOrderId`, `note`, `orderType`, `shipper`, `shipperServiceCode`, `status`, `trackingNumber`, `rma`, `createdAt`, `canceledAt`, `confirmedAt`, `eshopNote`.\n\n**Column names for `POST /claims/filter`**:\n`eshopClaimId`, `eshopOrderId`, `description`, `note`, `claimCause`, `claimOtherType`, `status`, `createdAt`, `resolutionText`, `resolver`, `eshopNote`.\n\n**Column names for `POST /stock-movements/filter`**:\n`count`, `createdAt`, `updatedAt`, `expirationDate`, `id`, `lot`, `sku`, `type`.\n","properties":{"page":{"type":"integer","minimum":1,"default":1},"items":{"type":"integer","minimum":1,"maximum":1000,"default":10},"columns":{"type":"array","items":{"type":"string"}},"sorts":{"type":"array","items":{"type":"object","required":["column","direction"],"properties":{"column":{"type":"string"},"direction":{"type":"string","enum":["ASC","DESC","asc","desc"]}}}},"filters":{"type":"array","description":"Outer array = OR of groups. Each inner array = AND of `{ column, operator, value }`.\nOperators and allowed `column` values are documented on `V21GridRequestGeneric`.\n","items":{"type":"array","items":{"type":"object","required":["column","operator","value"],"properties":{"column":{"type":"string"},"operator":{"type":"string","description":"Filter operator; see `V21GridRequestGeneric` for the full list.\nStock-movement filters also support `likein`.\n"},"value":{"description":"Scalar, array, or null — depends on operator (e.g. `in`/`nin`/`between` use arrays)."}}}}}}}}},"paths":{"/products/filter":{"post":{"tags":["Products"],"summary":"Filter products (grid)","description":"Paged product search. Body: `#/definitions/V21GridRequestGeneric`.\nUse **product** column names in `columns`, `sorts[].column`, and filter `column` (listed under that definition).\n","operationId":"v21_postProductsFilter","parameters":[{"$ref":"#/components/parameters/HeaderXApiKey"},{"$ref":"#/components/parameters/HeaderAuthorization"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V21GenericGridResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V21GridRequestGeneric"}}},"required":true}}}}}
```

## Create product

> For a \*\*bundle/set\*\* (\`productType\` \`pack\`), \*\*\`productSetItems\` is required\*\* (≥1 component line: \`sku\` + \`count\`).\
> Do not send \`scanSerialNumber\`.<br>

```json
{"openapi":"3.1.1","info":{"title":"GWMS API v2.1 (v21)","version":"2.1.0"},"tags":[{"name":"Products","description":"Products, availability, grid (no separate product-sets endpoints)"}],"servers":[{"url":"https://gw.new.skladon.net/v21"}],"security":[{"authorization":[],"XApiKey":[]}],"components":{"securitySchemes":{"authorization":{"type":"apiKey","name":"authorization","in":"header"}},"parameters":{"HeaderXApiKey":{"schema":{"type":"string"},"name":"x-api-key","in":"header","required":true,"description":"Eshop API key from onboarding"},"HeaderAuthorization":{"schema":{"type":"string"},"name":"authorization","in":"header","required":true,"description":"Bearer JWT from POST /v21/users/login"}},"schemas":{"V21ProductResponseEnvelope":{"type":"object","required":["statusCode","message"],"properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/V21ProductResponse"}}},"V21ProductResponse":{"allOf":[{"$ref":"#/components/schemas/V21ProductCreate"},{"type":"object","properties":{"id":{"type":"integer"},"weight":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"length":{"type":"number"},"insertToProductSkus":{"type":"array","items":{"type":"string"}},"insertToCountries":{"type":"array","items":{"type":"string","minLength":2,"maxLength":2}},"insertType":{"type":"string"},"insertByOrderType":{"type":"string","enum":["all","b2c","b2b"]},"insertPriceFrom":{"type":"number"},"insertPriceTo":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"dimensionsChangedAt":{"type":"string"},"deletedAt":{"type":"string"},"quantityConversion":{"type":"integer"}}}]},"V21ProductCreate":{"type":"object","required":["sku","name","expMethod","productType","active","scanImeiSn"],"properties":{"sku":{"type":"string","minLength":1},"guid":{"type":"string"},"name":{"type":"string","minLength":1},"description":{"type":"string"},"price":{"type":"number"},"hsCode":{"type":"string"},"upc":{"type":"string"},"ean":{"type":"string"},"rop":{"type":"integer","default":0},"expMethod":{"type":"string","enum":["FIFO","FEFO"]},"mpn":{"type":"string"},"isbn":{"type":"string"},"note":{"type":"string"},"productType":{"type":"string","enum":["pack","packagingMaterial","semiProduct","finalProduct","promoMaterial","virtual","serviceProduct"]},"customField1":{"type":"string"},"customField2":{"type":"string"},"customField3":{"type":"string"},"ageCheck":{"type":"boolean","default":false},"active":{"type":"boolean"},"scanImeiSn":{"type":"integer","enum":[0,1,2],"description":"Scan mode: 0=No scanning, 1=Serial numbers, 2=IMEI (with automatic regex ^[0-9]{14,16}$ when snRegex is empty). Same as GWMS v2."},"originCountry":{"type":"string"},"isDeleted":{"type":"boolean"},"batteryType":{"type":"string","enum":["no","device","device_lr41","package","alone"]},"snRegex":{"type":"string","default":""},"unitPrice":{"type":"string","description":"Product currency code (ISO 4217, 3 letters). Null or empty string allowed."},"expirationDays":{"type":"integer","default":0},"productSetItems":{"type":"array","items":{"$ref":"#/components/schemas/V21ProductSetItem"},"description":"Component lines for a **pack** (`productType` `pack`): **required on create** (at least one line with `sku` and `count`).\nOn **PATCH**, required when the body sets `productType` to `pack` (same request must include non-empty `productSetItems`).\nIf you send a non-empty array with any other `productType`, the API returns **400** (ignored by core would be misleading).\n"},"files":{"type":"array","items":{"$ref":"#/components/schemas/V21ProductAttachmentFile"}}}},"V21ProductSetItem":{"type":"object","required":["sku","count"],"properties":{"sku":{"type":"string","minLength":1},"count":{"type":"integer","minimum":1}}},"V21ProductAttachmentFile":{"type":"object","required":["type","fileName","fileType"],"properties":{"id":{"type":"integer","minimum":1},"data":{"type":"string"},"type":{"type":"string","enum":["instruction","label","other"]},"fileName":{"type":"string","minLength":1},"fileType":{"type":"string","minLength":1},"fileSize":{"type":"string"}}},"ErrorMessageResponse":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/products":{"post":{"tags":["Products"],"summary":"Create product","description":"For a **bundle/set** (`productType` `pack`), **`productSetItems` is required** (≥1 component line: `sku` + `count`).\nDo not send `scanSerialNumber`.\n","operationId":"v21_postProducts","parameters":[{"$ref":"#/components/parameters/HeaderXApiKey"},{"$ref":"#/components/parameters/HeaderAuthorization"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V21ProductResponseEnvelope"}}}},"400":{"description":"Zod validation or Core error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V21ProductCreate"}}},"required":true}}}}}
```

## GET /products/{sku}

> Get product by SKU

```json
{"openapi":"3.1.1","info":{"title":"GWMS API v2.1 (v21)","version":"2.1.0"},"tags":[{"name":"Products","description":"Products, availability, grid (no separate product-sets endpoints)"}],"servers":[{"url":"https://gw.new.skladon.net/v21"}],"security":[{"authorization":[],"XApiKey":[]}],"components":{"securitySchemes":{"authorization":{"type":"apiKey","name":"authorization","in":"header"}},"schemas":{"V21ProductResponseEnvelope":{"type":"object","required":["statusCode","message"],"properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/V21ProductResponse"}}},"V21ProductResponse":{"allOf":[{"$ref":"#/components/schemas/V21ProductCreate"},{"type":"object","properties":{"id":{"type":"integer"},"weight":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"length":{"type":"number"},"insertToProductSkus":{"type":"array","items":{"type":"string"}},"insertToCountries":{"type":"array","items":{"type":"string","minLength":2,"maxLength":2}},"insertType":{"type":"string"},"insertByOrderType":{"type":"string","enum":["all","b2c","b2b"]},"insertPriceFrom":{"type":"number"},"insertPriceTo":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"dimensionsChangedAt":{"type":"string"},"deletedAt":{"type":"string"},"quantityConversion":{"type":"integer"}}}]},"V21ProductCreate":{"type":"object","required":["sku","name","expMethod","productType","active","scanImeiSn"],"properties":{"sku":{"type":"string","minLength":1},"guid":{"type":"string"},"name":{"type":"string","minLength":1},"description":{"type":"string"},"price":{"type":"number"},"hsCode":{"type":"string"},"upc":{"type":"string"},"ean":{"type":"string"},"rop":{"type":"integer","default":0},"expMethod":{"type":"string","enum":["FIFO","FEFO"]},"mpn":{"type":"string"},"isbn":{"type":"string"},"note":{"type":"string"},"productType":{"type":"string","enum":["pack","packagingMaterial","semiProduct","finalProduct","promoMaterial","virtual","serviceProduct"]},"customField1":{"type":"string"},"customField2":{"type":"string"},"customField3":{"type":"string"},"ageCheck":{"type":"boolean","default":false},"active":{"type":"boolean"},"scanImeiSn":{"type":"integer","enum":[0,1,2],"description":"Scan mode: 0=No scanning, 1=Serial numbers, 2=IMEI (with automatic regex ^[0-9]{14,16}$ when snRegex is empty). Same as GWMS v2."},"originCountry":{"type":"string"},"isDeleted":{"type":"boolean"},"batteryType":{"type":"string","enum":["no","device","device_lr41","package","alone"]},"snRegex":{"type":"string","default":""},"unitPrice":{"type":"string","description":"Product currency code (ISO 4217, 3 letters). Null or empty string allowed."},"expirationDays":{"type":"integer","default":0},"productSetItems":{"type":"array","items":{"$ref":"#/components/schemas/V21ProductSetItem"},"description":"Component lines for a **pack** (`productType` `pack`): **required on create** (at least one line with `sku` and `count`).\nOn **PATCH**, required when the body sets `productType` to `pack` (same request must include non-empty `productSetItems`).\nIf you send a non-empty array with any other `productType`, the API returns **400** (ignored by core would be misleading).\n"},"files":{"type":"array","items":{"$ref":"#/components/schemas/V21ProductAttachmentFile"}}}},"V21ProductSetItem":{"type":"object","required":["sku","count"],"properties":{"sku":{"type":"string","minLength":1},"count":{"type":"integer","minimum":1}}},"V21ProductAttachmentFile":{"type":"object","required":["type","fileName","fileType"],"properties":{"id":{"type":"integer","minimum":1},"data":{"type":"string"},"type":{"type":"string","enum":["instruction","label","other"]},"fileName":{"type":"string","minLength":1},"fileType":{"type":"string","minLength":1},"fileSize":{"type":"string"}}},"ErrorMessageResponse":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/products/{sku}":{"get":{"tags":["Products"],"summary":"Get product by SKU","operationId":"v21_getProductBySku","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V21ProductResponseEnvelope"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}}}}}}}
```

## GET /products/guid/{guid}

> Get product by GUID

```json
{"openapi":"3.1.1","info":{"title":"GWMS API v2.1 (v21)","version":"2.1.0"},"tags":[{"name":"Products","description":"Products, availability, grid (no separate product-sets endpoints)"}],"servers":[{"url":"https://gw.new.skladon.net/v21"}],"security":[{"authorization":[],"XApiKey":[]}],"components":{"securitySchemes":{"authorization":{"type":"apiKey","name":"authorization","in":"header"}},"schemas":{"V21ProductResponseEnvelope":{"type":"object","required":["statusCode","message"],"properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/V21ProductResponse"}}},"V21ProductResponse":{"allOf":[{"$ref":"#/components/schemas/V21ProductCreate"},{"type":"object","properties":{"id":{"type":"integer"},"weight":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"length":{"type":"number"},"insertToProductSkus":{"type":"array","items":{"type":"string"}},"insertToCountries":{"type":"array","items":{"type":"string","minLength":2,"maxLength":2}},"insertType":{"type":"string"},"insertByOrderType":{"type":"string","enum":["all","b2c","b2b"]},"insertPriceFrom":{"type":"number"},"insertPriceTo":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"dimensionsChangedAt":{"type":"string"},"deletedAt":{"type":"string"},"quantityConversion":{"type":"integer"}}}]},"V21ProductCreate":{"type":"object","required":["sku","name","expMethod","productType","active","scanImeiSn"],"properties":{"sku":{"type":"string","minLength":1},"guid":{"type":"string"},"name":{"type":"string","minLength":1},"description":{"type":"string"},"price":{"type":"number"},"hsCode":{"type":"string"},"upc":{"type":"string"},"ean":{"type":"string"},"rop":{"type":"integer","default":0},"expMethod":{"type":"string","enum":["FIFO","FEFO"]},"mpn":{"type":"string"},"isbn":{"type":"string"},"note":{"type":"string"},"productType":{"type":"string","enum":["pack","packagingMaterial","semiProduct","finalProduct","promoMaterial","virtual","serviceProduct"]},"customField1":{"type":"string"},"customField2":{"type":"string"},"customField3":{"type":"string"},"ageCheck":{"type":"boolean","default":false},"active":{"type":"boolean"},"scanImeiSn":{"type":"integer","enum":[0,1,2],"description":"Scan mode: 0=No scanning, 1=Serial numbers, 2=IMEI (with automatic regex ^[0-9]{14,16}$ when snRegex is empty). Same as GWMS v2."},"originCountry":{"type":"string"},"isDeleted":{"type":"boolean"},"batteryType":{"type":"string","enum":["no","device","device_lr41","package","alone"]},"snRegex":{"type":"string","default":""},"unitPrice":{"type":"string","description":"Product currency code (ISO 4217, 3 letters). Null or empty string allowed."},"expirationDays":{"type":"integer","default":0},"productSetItems":{"type":"array","items":{"$ref":"#/components/schemas/V21ProductSetItem"},"description":"Component lines for a **pack** (`productType` `pack`): **required on create** (at least one line with `sku` and `count`).\nOn **PATCH**, required when the body sets `productType` to `pack` (same request must include non-empty `productSetItems`).\nIf you send a non-empty array with any other `productType`, the API returns **400** (ignored by core would be misleading).\n"},"files":{"type":"array","items":{"$ref":"#/components/schemas/V21ProductAttachmentFile"}}}},"V21ProductSetItem":{"type":"object","required":["sku","count"],"properties":{"sku":{"type":"string","minLength":1},"count":{"type":"integer","minimum":1}}},"V21ProductAttachmentFile":{"type":"object","required":["type","fileName","fileType"],"properties":{"id":{"type":"integer","minimum":1},"data":{"type":"string"},"type":{"type":"string","enum":["instruction","label","other"]},"fileName":{"type":"string","minLength":1},"fileType":{"type":"string","minLength":1},"fileSize":{"type":"string"}}},"ErrorMessageResponse":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/products/guid/{guid}":{"get":{"tags":["Products"],"summary":"Get product by GUID","operationId":"v21_getProductByGuid","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V21ProductResponseEnvelope"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}}}}}}}
```

## PUT /products/guid/{guid}

> Update product by GUID

```json
{"openapi":"3.1.1","info":{"title":"GWMS API v2.1 (v21)","version":"2.1.0"},"tags":[{"name":"Products","description":"Products, availability, grid (no separate product-sets endpoints)"}],"servers":[{"url":"https://gw.new.skladon.net/v21"}],"security":[{"authorization":[],"XApiKey":[]}],"components":{"securitySchemes":{"authorization":{"type":"apiKey","name":"authorization","in":"header"}},"schemas":{"V21ProductResponseEnvelope":{"type":"object","required":["statusCode","message"],"properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/V21ProductResponse"}}},"V21ProductResponse":{"allOf":[{"$ref":"#/components/schemas/V21ProductCreate"},{"type":"object","properties":{"id":{"type":"integer"},"weight":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"length":{"type":"number"},"insertToProductSkus":{"type":"array","items":{"type":"string"}},"insertToCountries":{"type":"array","items":{"type":"string","minLength":2,"maxLength":2}},"insertType":{"type":"string"},"insertByOrderType":{"type":"string","enum":["all","b2c","b2b"]},"insertPriceFrom":{"type":"number"},"insertPriceTo":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"dimensionsChangedAt":{"type":"string"},"deletedAt":{"type":"string"},"quantityConversion":{"type":"integer"}}}]},"V21ProductCreate":{"type":"object","required":["sku","name","expMethod","productType","active","scanImeiSn"],"properties":{"sku":{"type":"string","minLength":1},"guid":{"type":"string"},"name":{"type":"string","minLength":1},"description":{"type":"string"},"price":{"type":"number"},"hsCode":{"type":"string"},"upc":{"type":"string"},"ean":{"type":"string"},"rop":{"type":"integer","default":0},"expMethod":{"type":"string","enum":["FIFO","FEFO"]},"mpn":{"type":"string"},"isbn":{"type":"string"},"note":{"type":"string"},"productType":{"type":"string","enum":["pack","packagingMaterial","semiProduct","finalProduct","promoMaterial","virtual","serviceProduct"]},"customField1":{"type":"string"},"customField2":{"type":"string"},"customField3":{"type":"string"},"ageCheck":{"type":"boolean","default":false},"active":{"type":"boolean"},"scanImeiSn":{"type":"integer","enum":[0,1,2],"description":"Scan mode: 0=No scanning, 1=Serial numbers, 2=IMEI (with automatic regex ^[0-9]{14,16}$ when snRegex is empty). Same as GWMS v2."},"originCountry":{"type":"string"},"isDeleted":{"type":"boolean"},"batteryType":{"type":"string","enum":["no","device","device_lr41","package","alone"]},"snRegex":{"type":"string","default":""},"unitPrice":{"type":"string","description":"Product currency code (ISO 4217, 3 letters). Null or empty string allowed."},"expirationDays":{"type":"integer","default":0},"productSetItems":{"type":"array","items":{"$ref":"#/components/schemas/V21ProductSetItem"},"description":"Component lines for a **pack** (`productType` `pack`): **required on create** (at least one line with `sku` and `count`).\nOn **PATCH**, required when the body sets `productType` to `pack` (same request must include non-empty `productSetItems`).\nIf you send a non-empty array with any other `productType`, the API returns **400** (ignored by core would be misleading).\n"},"files":{"type":"array","items":{"$ref":"#/components/schemas/V21ProductAttachmentFile"}}}},"V21ProductSetItem":{"type":"object","required":["sku","count"],"properties":{"sku":{"type":"string","minLength":1},"count":{"type":"integer","minimum":1}}},"V21ProductAttachmentFile":{"type":"object","required":["type","fileName","fileType"],"properties":{"id":{"type":"integer","minimum":1},"data":{"type":"string"},"type":{"type":"string","enum":["instruction","label","other"]},"fileName":{"type":"string","minLength":1},"fileType":{"type":"string","minLength":1},"fileSize":{"type":"string"}}},"ErrorMessageResponse":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/products/guid/{guid}":{"put":{"tags":["Products"],"summary":"Update product by GUID","operationId":"v21_putProductByGuid","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V21ProductResponseEnvelope"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V21ProductCreate"}}},"required":true}}}}}
```

## PUT /products/{sku}

> Update product by SKU (full body)

```json
{"openapi":"3.1.1","info":{"title":"GWMS API v2.1 (v21)","version":"2.1.0"},"tags":[{"name":"Products","description":"Products, availability, grid (no separate product-sets endpoints)"}],"servers":[{"url":"https://gw.new.skladon.net/v21"}],"security":[{"authorization":[],"XApiKey":[]}],"components":{"securitySchemes":{"authorization":{"type":"apiKey","name":"authorization","in":"header"}},"schemas":{"V21ProductResponseEnvelope":{"type":"object","required":["statusCode","message"],"properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/V21ProductResponse"}}},"V21ProductResponse":{"allOf":[{"$ref":"#/components/schemas/V21ProductCreate"},{"type":"object","properties":{"id":{"type":"integer"},"weight":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"length":{"type":"number"},"insertToProductSkus":{"type":"array","items":{"type":"string"}},"insertToCountries":{"type":"array","items":{"type":"string","minLength":2,"maxLength":2}},"insertType":{"type":"string"},"insertByOrderType":{"type":"string","enum":["all","b2c","b2b"]},"insertPriceFrom":{"type":"number"},"insertPriceTo":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"dimensionsChangedAt":{"type":"string"},"deletedAt":{"type":"string"},"quantityConversion":{"type":"integer"}}}]},"V21ProductCreate":{"type":"object","required":["sku","name","expMethod","productType","active","scanImeiSn"],"properties":{"sku":{"type":"string","minLength":1},"guid":{"type":"string"},"name":{"type":"string","minLength":1},"description":{"type":"string"},"price":{"type":"number"},"hsCode":{"type":"string"},"upc":{"type":"string"},"ean":{"type":"string"},"rop":{"type":"integer","default":0},"expMethod":{"type":"string","enum":["FIFO","FEFO"]},"mpn":{"type":"string"},"isbn":{"type":"string"},"note":{"type":"string"},"productType":{"type":"string","enum":["pack","packagingMaterial","semiProduct","finalProduct","promoMaterial","virtual","serviceProduct"]},"customField1":{"type":"string"},"customField2":{"type":"string"},"customField3":{"type":"string"},"ageCheck":{"type":"boolean","default":false},"active":{"type":"boolean"},"scanImeiSn":{"type":"integer","enum":[0,1,2],"description":"Scan mode: 0=No scanning, 1=Serial numbers, 2=IMEI (with automatic regex ^[0-9]{14,16}$ when snRegex is empty). Same as GWMS v2."},"originCountry":{"type":"string"},"isDeleted":{"type":"boolean"},"batteryType":{"type":"string","enum":["no","device","device_lr41","package","alone"]},"snRegex":{"type":"string","default":""},"unitPrice":{"type":"string","description":"Product currency code (ISO 4217, 3 letters). Null or empty string allowed."},"expirationDays":{"type":"integer","default":0},"productSetItems":{"type":"array","items":{"$ref":"#/components/schemas/V21ProductSetItem"},"description":"Component lines for a **pack** (`productType` `pack`): **required on create** (at least one line with `sku` and `count`).\nOn **PATCH**, required when the body sets `productType` to `pack` (same request must include non-empty `productSetItems`).\nIf you send a non-empty array with any other `productType`, the API returns **400** (ignored by core would be misleading).\n"},"files":{"type":"array","items":{"$ref":"#/components/schemas/V21ProductAttachmentFile"}}}},"V21ProductSetItem":{"type":"object","required":["sku","count"],"properties":{"sku":{"type":"string","minLength":1},"count":{"type":"integer","minimum":1}}},"V21ProductAttachmentFile":{"type":"object","required":["type","fileName","fileType"],"properties":{"id":{"type":"integer","minimum":1},"data":{"type":"string"},"type":{"type":"string","enum":["instruction","label","other"]},"fileName":{"type":"string","minLength":1},"fileType":{"type":"string","minLength":1},"fileSize":{"type":"string"}}},"ErrorMessageResponse":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]}}},"paths":{"/products/{sku}":{"put":{"tags":["Products"],"summary":"Update product by SKU (full body)","operationId":"v21_putProductBySku","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V21ProductResponseEnvelope"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V21ProductCreate"}}},"required":true}}}}}
```

## PATCH /products/guid/{guid}

> Patch product by GUID

```json
{"openapi":"3.1.1","info":{"title":"GWMS API v2.1 (v21)","version":"2.1.0"},"tags":[{"name":"Products","description":"Products, availability, grid (no separate product-sets endpoints)"}],"servers":[{"url":"https://gw.new.skladon.net/v21"}],"security":[{"authorization":[],"XApiKey":[]}],"components":{"securitySchemes":{"authorization":{"type":"apiKey","name":"authorization","in":"header"}},"schemas":{"V21ProductResponseEnvelope":{"type":"object","required":["statusCode","message"],"properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/V21ProductResponse"}}},"V21ProductResponse":{"allOf":[{"$ref":"#/components/schemas/V21ProductCreate"},{"type":"object","properties":{"id":{"type":"integer"},"weight":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"length":{"type":"number"},"insertToProductSkus":{"type":"array","items":{"type":"string"}},"insertToCountries":{"type":"array","items":{"type":"string","minLength":2,"maxLength":2}},"insertType":{"type":"string"},"insertByOrderType":{"type":"string","enum":["all","b2c","b2b"]},"insertPriceFrom":{"type":"number"},"insertPriceTo":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"dimensionsChangedAt":{"type":"string"},"deletedAt":{"type":"string"},"quantityConversion":{"type":"integer"}}}]},"V21ProductCreate":{"type":"object","required":["sku","name","expMethod","productType","active","scanImeiSn"],"properties":{"sku":{"type":"string","minLength":1},"guid":{"type":"string"},"name":{"type":"string","minLength":1},"description":{"type":"string"},"price":{"type":"number"},"hsCode":{"type":"string"},"upc":{"type":"string"},"ean":{"type":"string"},"rop":{"type":"integer","default":0},"expMethod":{"type":"string","enum":["FIFO","FEFO"]},"mpn":{"type":"string"},"isbn":{"type":"string"},"note":{"type":"string"},"productType":{"type":"string","enum":["pack","packagingMaterial","semiProduct","finalProduct","promoMaterial","virtual","serviceProduct"]},"customField1":{"type":"string"},"customField2":{"type":"string"},"customField3":{"type":"string"},"ageCheck":{"type":"boolean","default":false},"active":{"type":"boolean"},"scanImeiSn":{"type":"integer","enum":[0,1,2],"description":"Scan mode: 0=No scanning, 1=Serial numbers, 2=IMEI (with automatic regex ^[0-9]{14,16}$ when snRegex is empty). Same as GWMS v2."},"originCountry":{"type":"string"},"isDeleted":{"type":"boolean"},"batteryType":{"type":"string","enum":["no","device","device_lr41","package","alone"]},"snRegex":{"type":"string","default":""},"unitPrice":{"type":"string","description":"Product currency code (ISO 4217, 3 letters). Null or empty string allowed."},"expirationDays":{"type":"integer","default":0},"productSetItems":{"type":"array","items":{"$ref":"#/components/schemas/V21ProductSetItem"},"description":"Component lines for a **pack** (`productType` `pack`): **required on create** (at least one line with `sku` and `count`).\nOn **PATCH**, required when the body sets `productType` to `pack` (same request must include non-empty `productSetItems`).\nIf you send a non-empty array with any other `productType`, the API returns **400** (ignored by core would be misleading).\n"},"files":{"type":"array","items":{"$ref":"#/components/schemas/V21ProductAttachmentFile"}}}},"V21ProductSetItem":{"type":"object","required":["sku","count"],"properties":{"sku":{"type":"string","minLength":1},"count":{"type":"integer","minimum":1}}},"V21ProductAttachmentFile":{"type":"object","required":["type","fileName","fileType"],"properties":{"id":{"type":"integer","minimum":1},"data":{"type":"string"},"type":{"type":"string","enum":["instruction","label","other"]},"fileName":{"type":"string","minLength":1},"fileType":{"type":"string","minLength":1},"fileSize":{"type":"string"}}},"ErrorMessageResponse":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]},"V21ProductPatch":{"type":"object","description":"Any non-empty subset of V21ProductCreate fields (at least one). Matches partial strict Zod.","minProperties":1,"additionalProperties":true}}},"paths":{"/products/guid/{guid}":{"patch":{"tags":["Products"],"summary":"Patch product by GUID","operationId":"v21_patchProductByGuid","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V21ProductResponseEnvelope"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V21ProductPatch"}}},"required":true}}}}}
```

## PATCH /products/{sku}

> Partial update product by SKU (at least one field)

```json
{"openapi":"3.1.1","info":{"title":"GWMS API v2.1 (v21)","version":"2.1.0"},"tags":[{"name":"Products","description":"Products, availability, grid (no separate product-sets endpoints)"}],"servers":[{"url":"https://gw.new.skladon.net/v21"}],"security":[{"authorization":[],"XApiKey":[]}],"components":{"securitySchemes":{"authorization":{"type":"apiKey","name":"authorization","in":"header"}},"schemas":{"V21ProductResponseEnvelope":{"type":"object","required":["statusCode","message"],"properties":{"statusCode":{"type":"number"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/V21ProductResponse"}}},"V21ProductResponse":{"allOf":[{"$ref":"#/components/schemas/V21ProductCreate"},{"type":"object","properties":{"id":{"type":"integer"},"weight":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"length":{"type":"number"},"insertToProductSkus":{"type":"array","items":{"type":"string"}},"insertToCountries":{"type":"array","items":{"type":"string","minLength":2,"maxLength":2}},"insertType":{"type":"string"},"insertByOrderType":{"type":"string","enum":["all","b2c","b2b"]},"insertPriceFrom":{"type":"number"},"insertPriceTo":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"dimensionsChangedAt":{"type":"string"},"deletedAt":{"type":"string"},"quantityConversion":{"type":"integer"}}}]},"V21ProductCreate":{"type":"object","required":["sku","name","expMethod","productType","active","scanImeiSn"],"properties":{"sku":{"type":"string","minLength":1},"guid":{"type":"string"},"name":{"type":"string","minLength":1},"description":{"type":"string"},"price":{"type":"number"},"hsCode":{"type":"string"},"upc":{"type":"string"},"ean":{"type":"string"},"rop":{"type":"integer","default":0},"expMethod":{"type":"string","enum":["FIFO","FEFO"]},"mpn":{"type":"string"},"isbn":{"type":"string"},"note":{"type":"string"},"productType":{"type":"string","enum":["pack","packagingMaterial","semiProduct","finalProduct","promoMaterial","virtual","serviceProduct"]},"customField1":{"type":"string"},"customField2":{"type":"string"},"customField3":{"type":"string"},"ageCheck":{"type":"boolean","default":false},"active":{"type":"boolean"},"scanImeiSn":{"type":"integer","enum":[0,1,2],"description":"Scan mode: 0=No scanning, 1=Serial numbers, 2=IMEI (with automatic regex ^[0-9]{14,16}$ when snRegex is empty). Same as GWMS v2."},"originCountry":{"type":"string"},"isDeleted":{"type":"boolean"},"batteryType":{"type":"string","enum":["no","device","device_lr41","package","alone"]},"snRegex":{"type":"string","default":""},"unitPrice":{"type":"string","description":"Product currency code (ISO 4217, 3 letters). Null or empty string allowed."},"expirationDays":{"type":"integer","default":0},"productSetItems":{"type":"array","items":{"$ref":"#/components/schemas/V21ProductSetItem"},"description":"Component lines for a **pack** (`productType` `pack`): **required on create** (at least one line with `sku` and `count`).\nOn **PATCH**, required when the body sets `productType` to `pack` (same request must include non-empty `productSetItems`).\nIf you send a non-empty array with any other `productType`, the API returns **400** (ignored by core would be misleading).\n"},"files":{"type":"array","items":{"$ref":"#/components/schemas/V21ProductAttachmentFile"}}}},"V21ProductSetItem":{"type":"object","required":["sku","count"],"properties":{"sku":{"type":"string","minLength":1},"count":{"type":"integer","minimum":1}}},"V21ProductAttachmentFile":{"type":"object","required":["type","fileName","fileType"],"properties":{"id":{"type":"integer","minimum":1},"data":{"type":"string"},"type":{"type":"string","enum":["instruction","label","other"]},"fileName":{"type":"string","minLength":1},"fileType":{"type":"string","minLength":1},"fileSize":{"type":"string"}}},"ErrorMessageResponse":{"type":"object","properties":{"statusCode":{"type":"number"},"message":{"type":"string"}},"required":["statusCode","message"]},"V21ProductPatch":{"type":"object","description":"Any non-empty subset of V21ProductCreate fields (at least one). Matches partial strict Zod.","minProperties":1,"additionalProperties":true}}},"paths":{"/products/{sku}":{"patch":{"tags":["Products"],"summary":"Partial update product by SKU (at least one field)","operationId":"v21_patchProductBySku","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V21ProductResponseEnvelope"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessageResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V21ProductPatch"}}},"required":true}}}}}
```
