Edara API v3

Edara API v3: Stock Items

Read the guide first: authentication, paging, errors, rate limits and the shared PagedResult, BatchResult and *Reference shapes.

Endpoints

GET /v3/stock-items: Lists stock items.

Operation GetStockItems · permission read:stock-item

Query string: GetStockItemsQuery

field type default validation description
offset int? 0 >= 0 Number of items to skip before returning results. Defaults to 0.
limit int? 100 1..1000 (out of range → 400) Maximum number of items to return. Defaults to 100, maximum 1000.
ids List<int> new List() each: GreaterThan(0) Optional stock-item identifier filter.
codes List<string> new List() each: Must(code => !string.IsNullOrWhiteSpace(code)) Optional codes filter.
partNumbers List<string> new List() each: Must(partNumber => !string.IsNullOrWhiteSpace(partNumber)) Optional part-numbers filter.
externalIds List<string> new List() each: Must(externalId => !string.IsNullOrWhiteSpace(externalId)) Optional external-ids filter.
description string MaximumLength(500) .Must(description => !string.IsNullOrWhiteSpace(description)) .When(x => x.Description != null) Optional description contains filter.
code string MaximumLength(200) .Must(code => !string.IsNullOrWhiteSpace(code)) .When(x => x.Code != null) Optional exact-code filter.
sku string MaximumLength(50) .Must(sku => !string.IsNullOrWhiteSpace(sku)) .When(x => x.Sku != null) Optional SKU filter.
partNumber string MaximumLength(500) .Must(partNumber => !string.IsNullOrWhiteSpace(partNumber)) .When(x => x.PartNumber != null) Optional part-number filter.
externalId string MaximumLength(128) .Must(externalId => !string.IsNullOrWhiteSpace(externalId)) .When(x => x.ExternalId != null) Optional exact external-id filter.
classificationId int? GreaterThan(0) .When(x => x.ClassificationId.HasValue) Optional classification identifier filter.
updateDate DateTime? Updated-after filter.

Responses: OK PagedResult<StockItemResponse>: Paged list of stock items.

Notes


POST /v3/stock-items/list: Lists stock items by filters.

Operation GetStockItemsByFilters · permission read:stock-item

Body: StockItemFiltersRequest

field type default validation description
offset int? 0 >= 0 Number of items to skip before returning results. Defaults to 0.
limit int? 100 1..1000 (out of range → 400) Maximum number of items to return. Defaults to 100, maximum 1000.
description string MaximumLength(500) .Must(d => !string.IsNullOrWhiteSpace(d)) .When(x => x.Description != null) Description text to match.
sku string MaximumLength(50) .Must(s => !string.IsNullOrWhiteSpace(s)) .When(x => x.Sku != null) SKU to match.
partNumber string MaximumLength(500) .Must(p => !string.IsNullOrWhiteSpace(p)) .When(x => x.PartNumber != null) Part number to match.
ids List<int> new List() each: GreaterThan(0) Stock-item identifiers to resolve.

Responses: OK PagedResult<StockItemResponse>: Paged list of stock items.

Notes


GET /v3/stock-items/{id}: Gets a stock item by id.

Operation GetStockItemById · permission read:stock-item

Parameters

name in type default description
id route int The stock item id.

Responses: OK StockItemResponse: The stock item.

Notes


GET /v3/stock-items/search: Searches stock items.

Operation SearchStockItems · permission read:stock-item

Query string: SearchStockItemsQuery

field type default validation description
keywords string NotEmpty() Tokenized expression: , = OR, + = AND, * = all. Example: screwdriver,hammer.

Responses: OK IReadOnlyCollection<StockItemResponse>: Matched stock items.

Notes


POST /v3/stock-items: Creates a stock item.

Operation CreateStockItem · permission create:stock-item

Body: CreateStockItemRequest

field type default validation description
code string MaximumLength(200) .Must(c => !string.IsNullOrWhiteSpace(c)).When(x => x.Code != null) The stock-item code (unique per tenant).
description string NotEmpty().MaximumLength(500) The stock-item description. Required.
otherLanguageDescription string MaximumLength(500) .Must(d => !string.IsNullOrWhiteSpace(d)).When(x => x.OtherLanguageDescription != null) The description in the secondary language (e.g. Arabic).
sku string MaximumLength(50) .Must(s => !string.IsNullOrWhiteSpace(s)).When(x => x.Sku != null) The stock-keeping unit identifier (unique per tenant when supplied).
partNumber string MaximumLength(500) .Must(p => !string.IsNullOrWhiteSpace(p)).When(x => x.PartNumber != null) The manufacturer or vendor part number.
oENumber string MaximumLength(200) The OEM (original equipment manufacturer) number.
externalId string MaximumLength(128) .Must(e => !string.IsNullOrWhiteSpace(e)).When(x => x.ExternalId != null) An external identifier supplied by the caller for reconciliation.
classificationId int? GreaterThan(0).When(x => x.ClassificationId.HasValue) The id of the classification node this item belongs to.
brandId int? GreaterThan(0).When(x => x.BrandId.HasValue) The id of the brand.
parentItemId int? GreaterThan(0).When(x => x.ParentItemId.HasValue) The id of the parent item, when this item is a variant.
isGroupingItem bool? Whether this item is a grouping (parent) item with variants underneath.
tags string[] Must(tags => tags == null || tags.All(tag => !string.IsNullOrWhiteSpace(tag))) .Must(tags => tags == null || string.Join(",", tags).Length <= 4000) The tags to assign to the item.
singleUomId int? GreaterThan(0).When(x => x.SingleUomId.HasValue) The id of the single UOM when the item is not part of a UOM chain.
unitOfMeasureChainId int? GreaterThan(0).When(x => x.UnitOfMeasureChainId.HasValue) The id of the UOM chain the item uses.
unitOfMeasure int? GreaterThan(0).When(x => x.UnitOfMeasure.HasValue) The id of the resolved unit of measure for this item.
stockItemUnitOfMeasures List<StockItemUnitOfMeasureRequest> each: SetValidator(new StockItemUnitOfMeasureRequestValidator()) Per-UOM pricing and identifiers when the item uses a UOM chain.
weight decimal? The item weight.
height decimal? The item height.
width decimal? The item width.
length decimal? The item length.
warranty decimal? The warranty period (interpretation per tenant settings).
validityPeriodInDays decimal? The validity period in days after which the item is treated as expired.
itemLocation string MaximumLength(200) The default storage location of the item within a warehouse.
imageUrl string MaximumLength(200) The URL to the item image.
note string MaximumLength(500) Free-form notes captured against the item.
datasheet string The URL or text of the item datasheet.
attachedDocument string The URL of an attached document.
salesPrice decimal? The default sales price.
purchasePrice decimal? The default purchase price.
dealerPrice decimal? The dealer price.
superDealerPrice decimal? The super-dealer price.
minimumPrice decimal? The minimum allowed sales price.
referencePrice decimal? The reference price used in margin calculations.
unitPrice decimal? The unit price; used by some legacy callers.
openingAverageCost decimal? The opening average cost; this is copied into the current average cost.
openingFifo decimal? The opening FIFO cost; this is copied into the current FIFO valuation.
openingLifo decimal? The opening LIFO cost; this is copied into the current LIFO valuation.
openingLastCost decimal? The opening last cost; this is copied into the current last cost.
averageCost decimal? The current average cost.
fifo decimal? The current FIFO valuation.
lifo decimal? The current LIFO valuation.
lastCost decimal? The current last cost.
globalReorderingPoint decimal? The global reordering point across all warehouses.
globalMinimumPoint decimal? The global minimum stock point across all warehouses.
globalMaximumPoint decimal? The global maximum stock point across all warehouses.
taxId int? GreaterThan(0).When(x => x.TaxId.HasValue) The id of the default sales tax for this item.
withholdingTaxId int? GreaterThan(0).When(x => x.WithholdingTaxId.HasValue) The id of the withholding tax for this item, when applicable.
eInvoiceCode string MaximumLength(50) The e-invoice item code (used by Egypt/KSA e-invoicing).
eInvoiceCodeType string MaximumLength(50) The e-invoice code type (e.g. GS1, EGS).
enforceSerialEntry bool? Whether issuing this item must capture serial numbers.
enforceBatchNumberDateEntry bool? Whether issuing this item must capture a batch number and production date.
enforceExpirationDateEntry bool? Whether issuing this item must capture an expiration date.
autofillBatchNumber bool? Whether batch numbers should be auto-generated when not supplied.
allowSerialDuplication bool? Whether the same serial number may appear on more than one document.
salesPriceDiscount decimal? The discount value applied to the sales price (interpreted per SalesPriceDiscountType).
salesPriceDiscountType int? The discount type for the sales price (0 = amount, 1 = percentage).
salesPriceDiscountIsLimited bool? Whether the sales-price discount is bounded by the date range below.
salesPriceDiscountDateFrom DateTime? The start date of the sales-price discount window.
salesPriceDiscountDateTo DateTime? The end date of the sales-price discount window.
dealerPriceDiscount decimal? The discount value applied to the dealer price.
dealerPriceDiscountType int? The discount type for the dealer price (0 = amount, 1 = percentage).
dealerPriceDiscountIsLimited bool? Whether the dealer-price discount is bounded by the date range below.
dealerPriceDiscountDateFrom DateTime? The start date of the dealer-price discount window.
dealerPriceDiscountDateTo DateTime? The end date of the dealer-price discount window.
superDealerPriceDiscount decimal? The discount value applied to the super-dealer price.
superDealerPriceDiscountType int? The discount type for the super-dealer price (0 = amount, 1 = percentage).
superDealerPriceDiscountIsLimited bool? Whether the super-dealer-price discount is bounded by the date range below.
superDealerPriceDiscountDateFrom DateTime? The start date of the super-dealer-price discount window.
superDealerPriceDiscountDateTo DateTime? The end date of the super-dealer-price discount window.
dynamicPropertiesInfo List<DynamicPropertyInfo> The dynamic-property values to assign to the item.
childItems List<StockItemChildRequest> The child variants of this item when it is a grouping item.

Responses: Created StockItemResponse: Stock item created.

Business errors (HTTP 409, match on errorCode):

Notes


POST /v3/stock-items/batch: Creates stock items in batch.

Operation BatchInsertStockItems · permission create:stock-item

Body: List<CreateStockItemRequest> (JSON array)

field type default validation description
code string MaximumLength(200) .Must(c => !string.IsNullOrWhiteSpace(c)).When(x => x.Code != null) The stock-item code (unique per tenant).
description string NotEmpty().MaximumLength(500) The stock-item description. Required.
otherLanguageDescription string MaximumLength(500) .Must(d => !string.IsNullOrWhiteSpace(d)).When(x => x.OtherLanguageDescription != null) The description in the secondary language (e.g. Arabic).
sku string MaximumLength(50) .Must(s => !string.IsNullOrWhiteSpace(s)).When(x => x.Sku != null) The stock-keeping unit identifier (unique per tenant when supplied).
partNumber string MaximumLength(500) .Must(p => !string.IsNullOrWhiteSpace(p)).When(x => x.PartNumber != null) The manufacturer or vendor part number.
oENumber string MaximumLength(200) The OEM (original equipment manufacturer) number.
externalId string MaximumLength(128) .Must(e => !string.IsNullOrWhiteSpace(e)).When(x => x.ExternalId != null) An external identifier supplied by the caller for reconciliation.
classificationId int? GreaterThan(0).When(x => x.ClassificationId.HasValue) The id of the classification node this item belongs to.
brandId int? GreaterThan(0).When(x => x.BrandId.HasValue) The id of the brand.
parentItemId int? GreaterThan(0).When(x => x.ParentItemId.HasValue) The id of the parent item, when this item is a variant.
isGroupingItem bool? Whether this item is a grouping (parent) item with variants underneath.
tags string[] Must(tags => tags == null || tags.All(tag => !string.IsNullOrWhiteSpace(tag))) .Must(tags => tags == null || string.Join(",", tags).Length <= 4000) The tags to assign to the item.
singleUomId int? GreaterThan(0).When(x => x.SingleUomId.HasValue) The id of the single UOM when the item is not part of a UOM chain.
unitOfMeasureChainId int? GreaterThan(0).When(x => x.UnitOfMeasureChainId.HasValue) The id of the UOM chain the item uses.
unitOfMeasure int? GreaterThan(0).When(x => x.UnitOfMeasure.HasValue) The id of the resolved unit of measure for this item.
stockItemUnitOfMeasures List<StockItemUnitOfMeasureRequest> each: SetValidator(new StockItemUnitOfMeasureRequestValidator()) Per-UOM pricing and identifiers when the item uses a UOM chain.
weight decimal? The item weight.
height decimal? The item height.
width decimal? The item width.
length decimal? The item length.
warranty decimal? The warranty period (interpretation per tenant settings).
validityPeriodInDays decimal? The validity period in days after which the item is treated as expired.
itemLocation string MaximumLength(200) The default storage location of the item within a warehouse.
imageUrl string MaximumLength(200) The URL to the item image.
note string MaximumLength(500) Free-form notes captured against the item.
datasheet string The URL or text of the item datasheet.
attachedDocument string The URL of an attached document.
salesPrice decimal? The default sales price.
purchasePrice decimal? The default purchase price.
dealerPrice decimal? The dealer price.
superDealerPrice decimal? The super-dealer price.
minimumPrice decimal? The minimum allowed sales price.
referencePrice decimal? The reference price used in margin calculations.
unitPrice decimal? The unit price; used by some legacy callers.
openingAverageCost decimal? The opening average cost; this is copied into the current average cost.
openingFifo decimal? The opening FIFO cost; this is copied into the current FIFO valuation.
openingLifo decimal? The opening LIFO cost; this is copied into the current LIFO valuation.
openingLastCost decimal? The opening last cost; this is copied into the current last cost.
averageCost decimal? The current average cost.
fifo decimal? The current FIFO valuation.
lifo decimal? The current LIFO valuation.
lastCost decimal? The current last cost.
globalReorderingPoint decimal? The global reordering point across all warehouses.
globalMinimumPoint decimal? The global minimum stock point across all warehouses.
globalMaximumPoint decimal? The global maximum stock point across all warehouses.
taxId int? GreaterThan(0).When(x => x.TaxId.HasValue) The id of the default sales tax for this item.
withholdingTaxId int? GreaterThan(0).When(x => x.WithholdingTaxId.HasValue) The id of the withholding tax for this item, when applicable.
eInvoiceCode string MaximumLength(50) The e-invoice item code (used by Egypt/KSA e-invoicing).
eInvoiceCodeType string MaximumLength(50) The e-invoice code type (e.g. GS1, EGS).
enforceSerialEntry bool? Whether issuing this item must capture serial numbers.
enforceBatchNumberDateEntry bool? Whether issuing this item must capture a batch number and production date.
enforceExpirationDateEntry bool? Whether issuing this item must capture an expiration date.
autofillBatchNumber bool? Whether batch numbers should be auto-generated when not supplied.
allowSerialDuplication bool? Whether the same serial number may appear on more than one document.
salesPriceDiscount decimal? The discount value applied to the sales price (interpreted per SalesPriceDiscountType).
salesPriceDiscountType int? The discount type for the sales price (0 = amount, 1 = percentage).
salesPriceDiscountIsLimited bool? Whether the sales-price discount is bounded by the date range below.
salesPriceDiscountDateFrom DateTime? The start date of the sales-price discount window.
salesPriceDiscountDateTo DateTime? The end date of the sales-price discount window.
dealerPriceDiscount decimal? The discount value applied to the dealer price.
dealerPriceDiscountType int? The discount type for the dealer price (0 = amount, 1 = percentage).
dealerPriceDiscountIsLimited bool? Whether the dealer-price discount is bounded by the date range below.
dealerPriceDiscountDateFrom DateTime? The start date of the dealer-price discount window.
dealerPriceDiscountDateTo DateTime? The end date of the dealer-price discount window.
superDealerPriceDiscount decimal? The discount value applied to the super-dealer price.
superDealerPriceDiscountType int? The discount type for the super-dealer price (0 = amount, 1 = percentage).
superDealerPriceDiscountIsLimited bool? Whether the super-dealer-price discount is bounded by the date range below.
superDealerPriceDiscountDateFrom DateTime? The start date of the super-dealer-price discount window.
superDealerPriceDiscountDateTo DateTime? The end date of the super-dealer-price discount window.
dynamicPropertiesInfo List<DynamicPropertyInfo> The dynamic-property values to assign to the item.
childItems List<StockItemChildRequest> The child variants of this item when it is a grouping item.

Responses: OK StockItemBatchResult: Batch insert result.

Business errors (HTTP 409, match on errorCode):

Notes


PUT /v3/stock-items/{id}: Updates a stock item by id.

Operation UpdateStockItem · permission update:stock-item

Parameters

name in type default description
id route int The stock item id.

Body (sparse PUT: omitted fields keep their value): UpdateStockItemRequest

field type default validation description
imageUrlProvided bool True when the request body explicitly included ImageUrl. Set by FromBodySparseAttribute; never bound from client JSON. Internal-connector callers that omit ImageUrl keep the stock item's existing image instead of having it nulled out (sparse-PUT semantics).
id int? Stock-item identifier. Optional on single-update; required on batch by-id update.
code string MaximumLength(200) .Must(c => !string.IsNullOrWhiteSpace(c)).When(x => x.Code != null) The stock-item code (unique per tenant).
description string NotEmpty().MaximumLength(500) The stock-item description.
otherLanguageDescription string MaximumLength(500) .Must(d => !string.IsNullOrWhiteSpace(d)).When(x => x.OtherLanguageDescription != null) The description in the secondary language (e.g. Arabic).
sku string MaximumLength(50) .Must(s => !string.IsNullOrWhiteSpace(s)).When(x => x.Sku != null) The stock-keeping unit identifier (unique per tenant when supplied).
partNumber string MaximumLength(500) .Must(p => !string.IsNullOrWhiteSpace(p)).When(x => x.PartNumber != null) The manufacturer or vendor part number.
oENumber string MaximumLength(200) The OEM (original equipment manufacturer) number.
externalId string MaximumLength(128) .Must(e => !string.IsNullOrWhiteSpace(e)).When(x => x.ExternalId != null) An external identifier supplied by the caller for reconciliation.
classificationId int? GreaterThan(0).When(x => x.ClassificationId.HasValue) The id of the classification node this item belongs to.
brandId int? GreaterThan(0).When(x => x.BrandId.HasValue) The id of the brand.
parentItemId int? GreaterThan(0).When(x => x.ParentItemId.HasValue) The id of the parent item, when this item is a variant.
isGroupingItem bool? Whether this item is a grouping (parent) item with variants underneath.
tags string[] Must(tags => tags == null || tags.All(tag => !string.IsNullOrWhiteSpace(tag))) .Must(tags => tags == null || string.Join(",", tags).Length <= 4000) The tags to assign to the item (replaces any existing tags).
singleUomId int? GreaterThan(0).When(x => x.SingleUomId.HasValue) The id of the single UOM when the item is not part of a UOM chain.
unitOfMeasureChainId int? GreaterThan(0).When(x => x.UnitOfMeasureChainId.HasValue) The id of the UOM chain the item uses.
unitOfMeasure int? GreaterThan(0).When(x => x.UnitOfMeasure.HasValue) The id of the resolved unit of measure for this item.
stockItemUnitOfMeasures List<StockItemUnitOfMeasureRequest> each: SetValidator(new StockItemUnitOfMeasureRequestValidator()) Per-UOM pricing and identifiers when the item uses a UOM chain.
weight decimal? The item weight.
height decimal? The item height.
width decimal? The item width.
length decimal? The item length.
warranty decimal? The warranty period (interpretation per tenant settings).
validityPeriodInDays decimal? The validity period in days after which the item is treated as expired.
itemLocation string MaximumLength(200) The default storage location of the item within a warehouse.
imageUrl string MaximumLength(200) The URL to the item image.
note string MaximumLength(500) Free-form notes captured against the item.
datasheet string The URL or text of the item datasheet.
attachedDocument string The URL of an attached document.
salesPrice decimal? The default sales price.
purchasePrice decimal? The default purchase price.
dealerPrice decimal? The dealer price.
superDealerPrice decimal? The super-dealer price.
minimumPrice decimal? The minimum allowed sales price.
referencePrice decimal? The reference price used in margin calculations.
unitPrice decimal? The unit price; used by some legacy callers.
openingAverageCost decimal? The opening average cost.
openingFifo decimal? The opening FIFO cost.
openingLifo decimal? The opening LIFO cost.
openingLastCost decimal? The opening last cost.
averageCost decimal? The current average cost.
fifo decimal? The current FIFO valuation.
lifo decimal? The current LIFO valuation.
lastCost decimal? The current last cost.
globalReorderingPoint decimal? The global reordering point across all warehouses.
globalMinimumPoint decimal? The global minimum stock point across all warehouses.
globalMaximumPoint decimal? The global maximum stock point across all warehouses.
taxId int? GreaterThan(0).When(x => x.TaxId.HasValue) The id of the default sales tax for this item.
withholdingTaxId int? GreaterThan(0).When(x => x.WithholdingTaxId.HasValue) The id of the withholding tax for this item, when applicable.
eInvoiceCode string MaximumLength(50) The e-invoice item code (used by Egypt/KSA e-invoicing).
eInvoiceCodeType string MaximumLength(50) The e-invoice code type (e.g. GS1, EGS).
enforceSerialEntry bool? Whether issuing this item must capture serial numbers.
enforceBatchNumberDateEntry bool? Whether issuing this item must capture a batch number and production date.
enforceExpirationDateEntry bool? Whether issuing this item must capture an expiration date.
autofillBatchNumber bool? Whether batch numbers should be auto-generated when not supplied.
allowSerialDuplication bool? Whether the same serial number may appear on more than one document.
allowForSMS bool? Whether the item is permitted on outbound SMS notifications. Update-only.
salesPriceDiscount decimal? The discount value applied to the sales price (interpreted per SalesPriceDiscountType).
salesPriceDiscountType int? The discount type for the sales price (0 = amount, 1 = percentage).
salesPriceDiscountIsLimited bool? Whether the sales-price discount is bounded by the date range below.
salesPriceDiscountDateFrom DateTime? The start date of the sales-price discount window.
salesPriceDiscountDateTo DateTime? The end date of the sales-price discount window.
dealerPriceDiscount decimal? The discount value applied to the dealer price.
dealerPriceDiscountType int? The discount type for the dealer price (0 = amount, 1 = percentage).
dealerPriceDiscountIsLimited bool? Whether the dealer-price discount is bounded by the date range below.
dealerPriceDiscountDateFrom DateTime? The start date of the dealer-price discount window.
dealerPriceDiscountDateTo DateTime? The end date of the dealer-price discount window.
superDealerPriceDiscount decimal? The discount value applied to the super-dealer price.
superDealerPriceDiscountType int? The discount type for the super-dealer price (0 = amount, 1 = percentage).
superDealerPriceDiscountIsLimited bool? Whether the super-dealer-price discount is bounded by the date range below.
superDealerPriceDiscountDateFrom DateTime? The start date of the super-dealer-price discount window.
superDealerPriceDiscountDateTo DateTime? The end date of the super-dealer-price discount window.
dynamicPropertiesInfo List<DynamicPropertyInfo> The dynamic-property values to assign to the item.
childItems List<StockItemChildRequest> The child variants of this item when it is a grouping item.

Responses: OK StockItemResponse: The updated stock item.

Business errors (HTTP 409, match on errorCode):

Notes


PUT /v3/stock-items/code/{code}: Updates a stock item by code.

Operation UpdateStockItemByCode · permission update:stock-item

Parameters

name in type default description
code route string The stock item code.

Body (sparse PUT: omitted fields keep their value): UpdateStockItemRequest

field type default validation description
imageUrlProvided bool True when the request body explicitly included ImageUrl. Set by FromBodySparseAttribute; never bound from client JSON. Internal-connector callers that omit ImageUrl keep the stock item's existing image instead of having it nulled out (sparse-PUT semantics).
id int? Stock-item identifier. Optional on single-update; required on batch by-id update.
code string MaximumLength(200) .Must(c => !string.IsNullOrWhiteSpace(c)).When(x => x.Code != null) The stock-item code (unique per tenant).
description string NotEmpty().MaximumLength(500) The stock-item description.
otherLanguageDescription string MaximumLength(500) .Must(d => !string.IsNullOrWhiteSpace(d)).When(x => x.OtherLanguageDescription != null) The description in the secondary language (e.g. Arabic).
sku string MaximumLength(50) .Must(s => !string.IsNullOrWhiteSpace(s)).When(x => x.Sku != null) The stock-keeping unit identifier (unique per tenant when supplied).
partNumber string MaximumLength(500) .Must(p => !string.IsNullOrWhiteSpace(p)).When(x => x.PartNumber != null) The manufacturer or vendor part number.
oENumber string MaximumLength(200) The OEM (original equipment manufacturer) number.
externalId string MaximumLength(128) .Must(e => !string.IsNullOrWhiteSpace(e)).When(x => x.ExternalId != null) An external identifier supplied by the caller for reconciliation.
classificationId int? GreaterThan(0).When(x => x.ClassificationId.HasValue) The id of the classification node this item belongs to.
brandId int? GreaterThan(0).When(x => x.BrandId.HasValue) The id of the brand.
parentItemId int? GreaterThan(0).When(x => x.ParentItemId.HasValue) The id of the parent item, when this item is a variant.
isGroupingItem bool? Whether this item is a grouping (parent) item with variants underneath.
tags string[] Must(tags => tags == null || tags.All(tag => !string.IsNullOrWhiteSpace(tag))) .Must(tags => tags == null || string.Join(",", tags).Length <= 4000) The tags to assign to the item (replaces any existing tags).
singleUomId int? GreaterThan(0).When(x => x.SingleUomId.HasValue) The id of the single UOM when the item is not part of a UOM chain.
unitOfMeasureChainId int? GreaterThan(0).When(x => x.UnitOfMeasureChainId.HasValue) The id of the UOM chain the item uses.
unitOfMeasure int? GreaterThan(0).When(x => x.UnitOfMeasure.HasValue) The id of the resolved unit of measure for this item.
stockItemUnitOfMeasures List<StockItemUnitOfMeasureRequest> each: SetValidator(new StockItemUnitOfMeasureRequestValidator()) Per-UOM pricing and identifiers when the item uses a UOM chain.
weight decimal? The item weight.
height decimal? The item height.
width decimal? The item width.
length decimal? The item length.
warranty decimal? The warranty period (interpretation per tenant settings).
validityPeriodInDays decimal? The validity period in days after which the item is treated as expired.
itemLocation string MaximumLength(200) The default storage location of the item within a warehouse.
imageUrl string MaximumLength(200) The URL to the item image.
note string MaximumLength(500) Free-form notes captured against the item.
datasheet string The URL or text of the item datasheet.
attachedDocument string The URL of an attached document.
salesPrice decimal? The default sales price.
purchasePrice decimal? The default purchase price.
dealerPrice decimal? The dealer price.
superDealerPrice decimal? The super-dealer price.
minimumPrice decimal? The minimum allowed sales price.
referencePrice decimal? The reference price used in margin calculations.
unitPrice decimal? The unit price; used by some legacy callers.
openingAverageCost decimal? The opening average cost.
openingFifo decimal? The opening FIFO cost.
openingLifo decimal? The opening LIFO cost.
openingLastCost decimal? The opening last cost.
averageCost decimal? The current average cost.
fifo decimal? The current FIFO valuation.
lifo decimal? The current LIFO valuation.
lastCost decimal? The current last cost.
globalReorderingPoint decimal? The global reordering point across all warehouses.
globalMinimumPoint decimal? The global minimum stock point across all warehouses.
globalMaximumPoint decimal? The global maximum stock point across all warehouses.
taxId int? GreaterThan(0).When(x => x.TaxId.HasValue) The id of the default sales tax for this item.
withholdingTaxId int? GreaterThan(0).When(x => x.WithholdingTaxId.HasValue) The id of the withholding tax for this item, when applicable.
eInvoiceCode string MaximumLength(50) The e-invoice item code (used by Egypt/KSA e-invoicing).
eInvoiceCodeType string MaximumLength(50) The e-invoice code type (e.g. GS1, EGS).
enforceSerialEntry bool? Whether issuing this item must capture serial numbers.
enforceBatchNumberDateEntry bool? Whether issuing this item must capture a batch number and production date.
enforceExpirationDateEntry bool? Whether issuing this item must capture an expiration date.
autofillBatchNumber bool? Whether batch numbers should be auto-generated when not supplied.
allowSerialDuplication bool? Whether the same serial number may appear on more than one document.
allowForSMS bool? Whether the item is permitted on outbound SMS notifications. Update-only.
salesPriceDiscount decimal? The discount value applied to the sales price (interpreted per SalesPriceDiscountType).
salesPriceDiscountType int? The discount type for the sales price (0 = amount, 1 = percentage).
salesPriceDiscountIsLimited bool? Whether the sales-price discount is bounded by the date range below.
salesPriceDiscountDateFrom DateTime? The start date of the sales-price discount window.
salesPriceDiscountDateTo DateTime? The end date of the sales-price discount window.
dealerPriceDiscount decimal? The discount value applied to the dealer price.
dealerPriceDiscountType int? The discount type for the dealer price (0 = amount, 1 = percentage).
dealerPriceDiscountIsLimited bool? Whether the dealer-price discount is bounded by the date range below.
dealerPriceDiscountDateFrom DateTime? The start date of the dealer-price discount window.
dealerPriceDiscountDateTo DateTime? The end date of the dealer-price discount window.
superDealerPriceDiscount decimal? The discount value applied to the super-dealer price.
superDealerPriceDiscountType int? The discount type for the super-dealer price (0 = amount, 1 = percentage).
superDealerPriceDiscountIsLimited bool? Whether the super-dealer-price discount is bounded by the date range below.
superDealerPriceDiscountDateFrom DateTime? The start date of the super-dealer-price discount window.
superDealerPriceDiscountDateTo DateTime? The end date of the super-dealer-price discount window.
dynamicPropertiesInfo List<DynamicPropertyInfo> The dynamic-property values to assign to the item.
childItems List<StockItemChildRequest> The child variants of this item when it is a grouping item.

Responses: OK StockItemResponse: The updated stock item.

Business errors (HTTP 409, match on errorCode):

Notes


PUT /v3/stock-items/external-id: Updates a stock item external id.

Operation UpdateStockItemExternalId · permission update:stock-item

Body: UpdateStockItemExternalIdRequest

field type default validation description
id int? NotNull().GreaterThan(0) Stock-item identifier. Required.
externalId string MaximumLength(128) New external identifier; null/empty to clear.

Responses: OK StockItemResponse: The updated stock item.

Business errors (HTTP 409, match on errorCode):

Notes


PUT /v3/stock-items/batch/by-id: Batch updates stock items by id.

Operation BatchUpdateStockItemsById · permission update:stock-item

Body (sparse PUT: omitted fields keep their value): List<UpdateStockItemRequest> (JSON array)

field type default validation description
imageUrlProvided bool True when the request body explicitly included ImageUrl. Set by FromBodySparseAttribute; never bound from client JSON. Internal-connector callers that omit ImageUrl keep the stock item's existing image instead of having it nulled out (sparse-PUT semantics).
id int? Stock-item identifier. Optional on single-update; required on batch by-id update.
code string MaximumLength(200) .Must(c => !string.IsNullOrWhiteSpace(c)).When(x => x.Code != null) The stock-item code (unique per tenant).
description string NotEmpty().MaximumLength(500) The stock-item description.
otherLanguageDescription string MaximumLength(500) .Must(d => !string.IsNullOrWhiteSpace(d)).When(x => x.OtherLanguageDescription != null) The description in the secondary language (e.g. Arabic).
sku string MaximumLength(50) .Must(s => !string.IsNullOrWhiteSpace(s)).When(x => x.Sku != null) The stock-keeping unit identifier (unique per tenant when supplied).
partNumber string MaximumLength(500) .Must(p => !string.IsNullOrWhiteSpace(p)).When(x => x.PartNumber != null) The manufacturer or vendor part number.
oENumber string MaximumLength(200) The OEM (original equipment manufacturer) number.
externalId string MaximumLength(128) .Must(e => !string.IsNullOrWhiteSpace(e)).When(x => x.ExternalId != null) An external identifier supplied by the caller for reconciliation.
classificationId int? GreaterThan(0).When(x => x.ClassificationId.HasValue) The id of the classification node this item belongs to.
brandId int? GreaterThan(0).When(x => x.BrandId.HasValue) The id of the brand.
parentItemId int? GreaterThan(0).When(x => x.ParentItemId.HasValue) The id of the parent item, when this item is a variant.
isGroupingItem bool? Whether this item is a grouping (parent) item with variants underneath.
tags string[] Must(tags => tags == null || tags.All(tag => !string.IsNullOrWhiteSpace(tag))) .Must(tags => tags == null || string.Join(",", tags).Length <= 4000) The tags to assign to the item (replaces any existing tags).
singleUomId int? GreaterThan(0).When(x => x.SingleUomId.HasValue) The id of the single UOM when the item is not part of a UOM chain.
unitOfMeasureChainId int? GreaterThan(0).When(x => x.UnitOfMeasureChainId.HasValue) The id of the UOM chain the item uses.
unitOfMeasure int? GreaterThan(0).When(x => x.UnitOfMeasure.HasValue) The id of the resolved unit of measure for this item.
stockItemUnitOfMeasures List<StockItemUnitOfMeasureRequest> each: SetValidator(new StockItemUnitOfMeasureRequestValidator()) Per-UOM pricing and identifiers when the item uses a UOM chain.
weight decimal? The item weight.
height decimal? The item height.
width decimal? The item width.
length decimal? The item length.
warranty decimal? The warranty period (interpretation per tenant settings).
validityPeriodInDays decimal? The validity period in days after which the item is treated as expired.
itemLocation string MaximumLength(200) The default storage location of the item within a warehouse.
imageUrl string MaximumLength(200) The URL to the item image.
note string MaximumLength(500) Free-form notes captured against the item.
datasheet string The URL or text of the item datasheet.
attachedDocument string The URL of an attached document.
salesPrice decimal? The default sales price.
purchasePrice decimal? The default purchase price.
dealerPrice decimal? The dealer price.
superDealerPrice decimal? The super-dealer price.
minimumPrice decimal? The minimum allowed sales price.
referencePrice decimal? The reference price used in margin calculations.
unitPrice decimal? The unit price; used by some legacy callers.
openingAverageCost decimal? The opening average cost.
openingFifo decimal? The opening FIFO cost.
openingLifo decimal? The opening LIFO cost.
openingLastCost decimal? The opening last cost.
averageCost decimal? The current average cost.
fifo decimal? The current FIFO valuation.
lifo decimal? The current LIFO valuation.
lastCost decimal? The current last cost.
globalReorderingPoint decimal? The global reordering point across all warehouses.
globalMinimumPoint decimal? The global minimum stock point across all warehouses.
globalMaximumPoint decimal? The global maximum stock point across all warehouses.
taxId int? GreaterThan(0).When(x => x.TaxId.HasValue) The id of the default sales tax for this item.
withholdingTaxId int? GreaterThan(0).When(x => x.WithholdingTaxId.HasValue) The id of the withholding tax for this item, when applicable.
eInvoiceCode string MaximumLength(50) The e-invoice item code (used by Egypt/KSA e-invoicing).
eInvoiceCodeType string MaximumLength(50) The e-invoice code type (e.g. GS1, EGS).
enforceSerialEntry bool? Whether issuing this item must capture serial numbers.
enforceBatchNumberDateEntry bool? Whether issuing this item must capture a batch number and production date.
enforceExpirationDateEntry bool? Whether issuing this item must capture an expiration date.
autofillBatchNumber bool? Whether batch numbers should be auto-generated when not supplied.
allowSerialDuplication bool? Whether the same serial number may appear on more than one document.
allowForSMS bool? Whether the item is permitted on outbound SMS notifications. Update-only.
salesPriceDiscount decimal? The discount value applied to the sales price (interpreted per SalesPriceDiscountType).
salesPriceDiscountType int? The discount type for the sales price (0 = amount, 1 = percentage).
salesPriceDiscountIsLimited bool? Whether the sales-price discount is bounded by the date range below.
salesPriceDiscountDateFrom DateTime? The start date of the sales-price discount window.
salesPriceDiscountDateTo DateTime? The end date of the sales-price discount window.
dealerPriceDiscount decimal? The discount value applied to the dealer price.
dealerPriceDiscountType int? The discount type for the dealer price (0 = amount, 1 = percentage).
dealerPriceDiscountIsLimited bool? Whether the dealer-price discount is bounded by the date range below.
dealerPriceDiscountDateFrom DateTime? The start date of the dealer-price discount window.
dealerPriceDiscountDateTo DateTime? The end date of the dealer-price discount window.
superDealerPriceDiscount decimal? The discount value applied to the super-dealer price.
superDealerPriceDiscountType int? The discount type for the super-dealer price (0 = amount, 1 = percentage).
superDealerPriceDiscountIsLimited bool? Whether the super-dealer-price discount is bounded by the date range below.
superDealerPriceDiscountDateFrom DateTime? The start date of the super-dealer-price discount window.
superDealerPriceDiscountDateTo DateTime? The end date of the super-dealer-price discount window.
dynamicPropertiesInfo List<DynamicPropertyInfo> The dynamic-property values to assign to the item.
childItems List<StockItemChildRequest> The child variants of this item when it is a grouping item.

Responses: OK StockItemBatchResult: Batch update result.

Business errors (HTTP 409, match on errorCode):

Notes


PUT /v3/stock-items/batch/by-code: Batch updates stock items by code.

Operation BatchUpdateStockItemsByCode · permission update:stock-item

Body (sparse PUT: omitted fields keep their value): List<UpdateStockItemRequest> (JSON array)

field type default validation description
imageUrlProvided bool True when the request body explicitly included ImageUrl. Set by FromBodySparseAttribute; never bound from client JSON. Internal-connector callers that omit ImageUrl keep the stock item's existing image instead of having it nulled out (sparse-PUT semantics).
id int? Stock-item identifier. Optional on single-update; required on batch by-id update.
code string MaximumLength(200) .Must(c => !string.IsNullOrWhiteSpace(c)).When(x => x.Code != null) The stock-item code (unique per tenant).
description string NotEmpty().MaximumLength(500) The stock-item description.
otherLanguageDescription string MaximumLength(500) .Must(d => !string.IsNullOrWhiteSpace(d)).When(x => x.OtherLanguageDescription != null) The description in the secondary language (e.g. Arabic).
sku string MaximumLength(50) .Must(s => !string.IsNullOrWhiteSpace(s)).When(x => x.Sku != null) The stock-keeping unit identifier (unique per tenant when supplied).
partNumber string MaximumLength(500) .Must(p => !string.IsNullOrWhiteSpace(p)).When(x => x.PartNumber != null) The manufacturer or vendor part number.
oENumber string MaximumLength(200) The OEM (original equipment manufacturer) number.
externalId string MaximumLength(128) .Must(e => !string.IsNullOrWhiteSpace(e)).When(x => x.ExternalId != null) An external identifier supplied by the caller for reconciliation.
classificationId int? GreaterThan(0).When(x => x.ClassificationId.HasValue) The id of the classification node this item belongs to.
brandId int? GreaterThan(0).When(x => x.BrandId.HasValue) The id of the brand.
parentItemId int? GreaterThan(0).When(x => x.ParentItemId.HasValue) The id of the parent item, when this item is a variant.
isGroupingItem bool? Whether this item is a grouping (parent) item with variants underneath.
tags string[] Must(tags => tags == null || tags.All(tag => !string.IsNullOrWhiteSpace(tag))) .Must(tags => tags == null || string.Join(",", tags).Length <= 4000) The tags to assign to the item (replaces any existing tags).
singleUomId int? GreaterThan(0).When(x => x.SingleUomId.HasValue) The id of the single UOM when the item is not part of a UOM chain.
unitOfMeasureChainId int? GreaterThan(0).When(x => x.UnitOfMeasureChainId.HasValue) The id of the UOM chain the item uses.
unitOfMeasure int? GreaterThan(0).When(x => x.UnitOfMeasure.HasValue) The id of the resolved unit of measure for this item.
stockItemUnitOfMeasures List<StockItemUnitOfMeasureRequest> each: SetValidator(new StockItemUnitOfMeasureRequestValidator()) Per-UOM pricing and identifiers when the item uses a UOM chain.
weight decimal? The item weight.
height decimal? The item height.
width decimal? The item width.
length decimal? The item length.
warranty decimal? The warranty period (interpretation per tenant settings).
validityPeriodInDays decimal? The validity period in days after which the item is treated as expired.
itemLocation string MaximumLength(200) The default storage location of the item within a warehouse.
imageUrl string MaximumLength(200) The URL to the item image.
note string MaximumLength(500) Free-form notes captured against the item.
datasheet string The URL or text of the item datasheet.
attachedDocument string The URL of an attached document.
salesPrice decimal? The default sales price.
purchasePrice decimal? The default purchase price.
dealerPrice decimal? The dealer price.
superDealerPrice decimal? The super-dealer price.
minimumPrice decimal? The minimum allowed sales price.
referencePrice decimal? The reference price used in margin calculations.
unitPrice decimal? The unit price; used by some legacy callers.
openingAverageCost decimal? The opening average cost.
openingFifo decimal? The opening FIFO cost.
openingLifo decimal? The opening LIFO cost.
openingLastCost decimal? The opening last cost.
averageCost decimal? The current average cost.
fifo decimal? The current FIFO valuation.
lifo decimal? The current LIFO valuation.
lastCost decimal? The current last cost.
globalReorderingPoint decimal? The global reordering point across all warehouses.
globalMinimumPoint decimal? The global minimum stock point across all warehouses.
globalMaximumPoint decimal? The global maximum stock point across all warehouses.
taxId int? GreaterThan(0).When(x => x.TaxId.HasValue) The id of the default sales tax for this item.
withholdingTaxId int? GreaterThan(0).When(x => x.WithholdingTaxId.HasValue) The id of the withholding tax for this item, when applicable.
eInvoiceCode string MaximumLength(50) The e-invoice item code (used by Egypt/KSA e-invoicing).
eInvoiceCodeType string MaximumLength(50) The e-invoice code type (e.g. GS1, EGS).
enforceSerialEntry bool? Whether issuing this item must capture serial numbers.
enforceBatchNumberDateEntry bool? Whether issuing this item must capture a batch number and production date.
enforceExpirationDateEntry bool? Whether issuing this item must capture an expiration date.
autofillBatchNumber bool? Whether batch numbers should be auto-generated when not supplied.
allowSerialDuplication bool? Whether the same serial number may appear on more than one document.
allowForSMS bool? Whether the item is permitted on outbound SMS notifications. Update-only.
salesPriceDiscount decimal? The discount value applied to the sales price (interpreted per SalesPriceDiscountType).
salesPriceDiscountType int? The discount type for the sales price (0 = amount, 1 = percentage).
salesPriceDiscountIsLimited bool? Whether the sales-price discount is bounded by the date range below.
salesPriceDiscountDateFrom DateTime? The start date of the sales-price discount window.
salesPriceDiscountDateTo DateTime? The end date of the sales-price discount window.
dealerPriceDiscount decimal? The discount value applied to the dealer price.
dealerPriceDiscountType int? The discount type for the dealer price (0 = amount, 1 = percentage).
dealerPriceDiscountIsLimited bool? Whether the dealer-price discount is bounded by the date range below.
dealerPriceDiscountDateFrom DateTime? The start date of the dealer-price discount window.
dealerPriceDiscountDateTo DateTime? The end date of the dealer-price discount window.
superDealerPriceDiscount decimal? The discount value applied to the super-dealer price.
superDealerPriceDiscountType int? The discount type for the super-dealer price (0 = amount, 1 = percentage).
superDealerPriceDiscountIsLimited bool? Whether the super-dealer-price discount is bounded by the date range below.
superDealerPriceDiscountDateFrom DateTime? The start date of the super-dealer-price discount window.
superDealerPriceDiscountDateTo DateTime? The end date of the super-dealer-price discount window.
dynamicPropertiesInfo List<DynamicPropertyInfo> The dynamic-property values to assign to the item.
childItems List<StockItemChildRequest> The child variants of this item when it is a grouping item.

Responses: OK StockItemBatchResult: Batch update result.

Business errors (HTTP 409, match on errorCode):

Notes


PUT /v3/stock-items/batch/by-sku: Batch updates stock items by SKU.

Operation BatchUpdateStockItemsBySKU · permission update:stock-item

Body (sparse PUT: omitted fields keep their value): List<UpdateStockItemRequest> (JSON array)

field type default validation description
imageUrlProvided bool True when the request body explicitly included ImageUrl. Set by FromBodySparseAttribute; never bound from client JSON. Internal-connector callers that omit ImageUrl keep the stock item's existing image instead of having it nulled out (sparse-PUT semantics).
id int? Stock-item identifier. Optional on single-update; required on batch by-id update.
code string MaximumLength(200) .Must(c => !string.IsNullOrWhiteSpace(c)).When(x => x.Code != null) The stock-item code (unique per tenant).
description string NotEmpty().MaximumLength(500) The stock-item description.
otherLanguageDescription string MaximumLength(500) .Must(d => !string.IsNullOrWhiteSpace(d)).When(x => x.OtherLanguageDescription != null) The description in the secondary language (e.g. Arabic).
sku string MaximumLength(50) .Must(s => !string.IsNullOrWhiteSpace(s)).When(x => x.Sku != null) The stock-keeping unit identifier (unique per tenant when supplied).
partNumber string MaximumLength(500) .Must(p => !string.IsNullOrWhiteSpace(p)).When(x => x.PartNumber != null) The manufacturer or vendor part number.
oENumber string MaximumLength(200) The OEM (original equipment manufacturer) number.
externalId string MaximumLength(128) .Must(e => !string.IsNullOrWhiteSpace(e)).When(x => x.ExternalId != null) An external identifier supplied by the caller for reconciliation.
classificationId int? GreaterThan(0).When(x => x.ClassificationId.HasValue) The id of the classification node this item belongs to.
brandId int? GreaterThan(0).When(x => x.BrandId.HasValue) The id of the brand.
parentItemId int? GreaterThan(0).When(x => x.ParentItemId.HasValue) The id of the parent item, when this item is a variant.
isGroupingItem bool? Whether this item is a grouping (parent) item with variants underneath.
tags string[] Must(tags => tags == null || tags.All(tag => !string.IsNullOrWhiteSpace(tag))) .Must(tags => tags == null || string.Join(",", tags).Length <= 4000) The tags to assign to the item (replaces any existing tags).
singleUomId int? GreaterThan(0).When(x => x.SingleUomId.HasValue) The id of the single UOM when the item is not part of a UOM chain.
unitOfMeasureChainId int? GreaterThan(0).When(x => x.UnitOfMeasureChainId.HasValue) The id of the UOM chain the item uses.
unitOfMeasure int? GreaterThan(0).When(x => x.UnitOfMeasure.HasValue) The id of the resolved unit of measure for this item.
stockItemUnitOfMeasures List<StockItemUnitOfMeasureRequest> each: SetValidator(new StockItemUnitOfMeasureRequestValidator()) Per-UOM pricing and identifiers when the item uses a UOM chain.
weight decimal? The item weight.
height decimal? The item height.
width decimal? The item width.
length decimal? The item length.
warranty decimal? The warranty period (interpretation per tenant settings).
validityPeriodInDays decimal? The validity period in days after which the item is treated as expired.
itemLocation string MaximumLength(200) The default storage location of the item within a warehouse.
imageUrl string MaximumLength(200) The URL to the item image.
note string MaximumLength(500) Free-form notes captured against the item.
datasheet string The URL or text of the item datasheet.
attachedDocument string The URL of an attached document.
salesPrice decimal? The default sales price.
purchasePrice decimal? The default purchase price.
dealerPrice decimal? The dealer price.
superDealerPrice decimal? The super-dealer price.
minimumPrice decimal? The minimum allowed sales price.
referencePrice decimal? The reference price used in margin calculations.
unitPrice decimal? The unit price; used by some legacy callers.
openingAverageCost decimal? The opening average cost.
openingFifo decimal? The opening FIFO cost.
openingLifo decimal? The opening LIFO cost.
openingLastCost decimal? The opening last cost.
averageCost decimal? The current average cost.
fifo decimal? The current FIFO valuation.
lifo decimal? The current LIFO valuation.
lastCost decimal? The current last cost.
globalReorderingPoint decimal? The global reordering point across all warehouses.
globalMinimumPoint decimal? The global minimum stock point across all warehouses.
globalMaximumPoint decimal? The global maximum stock point across all warehouses.
taxId int? GreaterThan(0).When(x => x.TaxId.HasValue) The id of the default sales tax for this item.
withholdingTaxId int? GreaterThan(0).When(x => x.WithholdingTaxId.HasValue) The id of the withholding tax for this item, when applicable.
eInvoiceCode string MaximumLength(50) The e-invoice item code (used by Egypt/KSA e-invoicing).
eInvoiceCodeType string MaximumLength(50) The e-invoice code type (e.g. GS1, EGS).
enforceSerialEntry bool? Whether issuing this item must capture serial numbers.
enforceBatchNumberDateEntry bool? Whether issuing this item must capture a batch number and production date.
enforceExpirationDateEntry bool? Whether issuing this item must capture an expiration date.
autofillBatchNumber bool? Whether batch numbers should be auto-generated when not supplied.
allowSerialDuplication bool? Whether the same serial number may appear on more than one document.
allowForSMS bool? Whether the item is permitted on outbound SMS notifications. Update-only.
salesPriceDiscount decimal? The discount value applied to the sales price (interpreted per SalesPriceDiscountType).
salesPriceDiscountType int? The discount type for the sales price (0 = amount, 1 = percentage).
salesPriceDiscountIsLimited bool? Whether the sales-price discount is bounded by the date range below.
salesPriceDiscountDateFrom DateTime? The start date of the sales-price discount window.
salesPriceDiscountDateTo DateTime? The end date of the sales-price discount window.
dealerPriceDiscount decimal? The discount value applied to the dealer price.
dealerPriceDiscountType int? The discount type for the dealer price (0 = amount, 1 = percentage).
dealerPriceDiscountIsLimited bool? Whether the dealer-price discount is bounded by the date range below.
dealerPriceDiscountDateFrom DateTime? The start date of the dealer-price discount window.
dealerPriceDiscountDateTo DateTime? The end date of the dealer-price discount window.
superDealerPriceDiscount decimal? The discount value applied to the super-dealer price.
superDealerPriceDiscountType int? The discount type for the super-dealer price (0 = amount, 1 = percentage).
superDealerPriceDiscountIsLimited bool? Whether the super-dealer-price discount is bounded by the date range below.
superDealerPriceDiscountDateFrom DateTime? The start date of the super-dealer-price discount window.
superDealerPriceDiscountDateTo DateTime? The end date of the super-dealer-price discount window.
dynamicPropertiesInfo List<DynamicPropertyInfo> The dynamic-property values to assign to the item.
childItems List<StockItemChildRequest> The child variants of this item when it is a grouping item.

Responses: OK StockItemBatchResult: Batch update result.

Business errors (HTTP 409, match on errorCode):

Notes


DELETE /v3/stock-items/{id}: Deletes a stock item by id.

Operation DeleteStockItemById · permission delete:stock-item

Parameters

name in type default description
id route int The stock item id.

Responses: NoContent: (not declared; read from the method body)

Business errors (HTTP 409, match on errorCode):

Notes


PUT /v3/stock-items/{id}/deactivate: Deactivates a stock item by id.

Operation DeactivateStockItemById · permission update:stock-item

Parameters

name in type default description
id route int The stock item id.

Responses: NoContent: Stock item deactivated.

Notes


PUT /v3/stock-items/code/{code}/deactivate: Deactivates a stock item by code.

Operation DeactivateStockItemByCode · permission update:stock-item

Parameters

name in type default description
code route string The stock item code.

Responses: NoContent: Stock item deactivated.

Notes


POST /v3/stock-items/link-to-parent: Links a stock item to a parent.

Operation LinkStockItemToParent · permission update:stock-item

Body: LinkStockItemToParentRequest

field type default validation description
childItemId int? NotNull() .GreaterThan(0) Child stock-item identifier.
parentItemId int? NotNull() .GreaterThan(0) Parent (grouping) stock-item identifier.
dynamicPropertiesValuesIds string NotEmpty(); Must(value => { var tokens = SplitTokens(value); return tokens.All(t => int.TryParse(t, out )); }) .When(x => !string.IsNullOrWhiteSpace(x.DynamicPropertiesValuesIds)); Must(value => { var tokens = SplitTokens(value); return tokens.Length == tokens.Distinct().Count(); }) .When(x => !string.IsNullOrWhiteSpace(x.DynamicPropertiesValuesIds) && SplitTokens(x.DynamicPropertiesValuesIds).All(t => int.TryParse(t, out ))); Must(value => SplitTokens(value).Length <= 3) .When(x => !string.IsNullOrWhiteSpace(x.DynamicPropertiesValuesIds)) Comma-separated dynamic-property value identifiers (1-3 distinct positive integers) identifying the variant.

Responses: NoContent: Stock item linked.

Business errors (HTTP 409, match on errorCode):

Notes


GET /v3/stock-items/{stockItemId}/validate/serial/{serialNo}/returns/{customerId}: Validates an item serial for return.

Operation ValidateItemSerialForReturn · permission read:stock-item

Parameters

name in type default description
stockItemId route int The stock item id.
serialNo route string The serial number to validate.
customerId route int? The customer id.

Responses: OK bool: True when the serial is valid for return.

Notes


GET /v3/stock-items/{stockItemId}/validate/serial/{serialNo}/returned/{rrCode}: Validates an item serial returned.

Operation ValidateItemSerialReturned · permission read:stock-item

Parameters

name in type default description
stockItemId route int The stock item id.
serialNo route string The serial number to validate.
rrCode route string The return-receipt code.

Responses: OK bool: True when the serial has been returned.

Notes


GET /v3/stock-items/balances: Lists stock item balances.

Operation GetStockItemBalances · permission read:stock-item:balance

Query string: GetStockItemBalancesQuery

field type default validation description
offset int? 0 >= 0 Number of items to skip before returning results. Defaults to 0.
limit int? 100 1..1000 (out of range → 400) Maximum number of items to return. Defaults to 100, maximum 1000.
stockItemId int? GreaterThan(0) .When(x => x.StockItemId.HasValue) Optional stock-item identifier filter.
warehouseId int? GreaterThan(0) .When(x => x.WarehouseId.HasValue) Optional warehouse identifier filter.

Responses: OK PagedResult<StockItemBalanceResponse>: Paged list of stock item balances.

Notes


GET /v3/stock-items/warehouse-summary: Gets stock item sales and stock position by warehouse.

Operation GetStockItemWarehouseSummary · permission read:stock-item:balance

Query string: GetStockItemWarehouseSummaryQuery

field type default validation description
dateFrom DateTime NotEmpty() Start of the sales/sales-return summary period.
dateTo DateTime NotEmpty(); GreaterThanOrEqualTo(x => x.DateFrom) .When(x => x.DateFrom != default(DateTime) && x.DateTo != default(DateTime)) End of the sales/sales-return summary period.
warehouseId List<int> new List() each: GreaterThan(0) Optional warehouse identifiers filter.
stockitemId int? GreaterThan(0) .When(x => x.StockitemId.HasValue) Optional stock-item identifier filter.
excludeOtherParty bool When true, excludes Issue/Receive Other Party transactions from the sales summary.
offset int? 0 GreaterThanOrEqualTo(0) .When(x => x.Offset.HasValue) Number of stock items to skip before returning results. Defaults to 0.
limit int? 1000 InclusiveBetween(1, GetStockItemWarehouseSummaryQuery.MaxLimit) .When(x => x.Limit.HasValue) Maximum number of stock items to return. Defaults to 1000, maximum 1000.

Responses: OK PagedResult<StockItemWarehouseSummaryResponse>: Paged list of stock item warehouse summaries.

Notes


GET /v3/stock-items/{stockItemId}/balance: Gets a stock item balance.

Operation GetStockItemBalanceByStockItemId · permission read:stock-item:balance

Parameters

name in type default description
stockItemId route int The stock item id.

Responses: OK List<StockItemBalanceResponse>: Stock item balance. · NotFound ProblemDetails: No balance found for the specified stock item.

Notes


GET /v3/stock-items/{stockItemId}/balance/warehouses/{warehouseId}: Gets a stock item balance by warehouse.

Operation GetStockItemBalanceByWarehouse · permission read:stock-item:balance

Parameters

name in type default description
stockItemId route int The stock item id.
warehouseId route int The warehouse id.

Responses: OK List<StockItemBalanceResponse>: Stock item balance for the warehouse. · NotFound ProblemDetails: No balance found for the specified stock item and warehouse.

Notes


GET /v3/stock-items/{stockItemId}/cost: Gets a stock item cost.

Operation GetStockItemCost · permission read:stock-item:balance

Parameters

name in type default description
stockItemId route int The stock item id.

Query string: GetStockItemCostQuery

field type default validation description
date DateTime? NotNull() Cost date.

Responses: OK decimal: Stock item cost. · NotFound ProblemDetails: No stock item with the specified identifier was found.

Notes


GET /v3/stock-items/cost/by-skus: Gets stock item costs by SKUs.

Operation GetStockItemCostsBySkus · permission read:stock-item:balance

Query string: GetStockItemCostsBySkusQuery

field type default validation description
skus string Comma-separated stock-item SKUs (max 200).
date DateTime? NotNull() Cost evaluation date (on or before).
(object rule) RuleFor(x => x) .Custom((query, context) => { if (string.IsNullOrWhiteSpace(query?.Skus)) { return; } if (query.Skus.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length > 200) { context.AddFailure("Skus", "Skus count cannot exceed 200."); } })

Responses: OK IReadOnlyCollection<StockItemCostResponse>: Stock item costs.

Notes


GET /v3/stock-items/cost/by-part-numbers: Gets stock item costs by part numbers.

Operation GetStockItemCostsByPartNumbers · permission read:stock-item:balance

Query string: GetStockItemCostsByPartNumbersQuery

field type default validation description
partNumbers string Comma-separated stock-item part numbers (max 200).
date DateTime? NotNull() Cost evaluation date (on or before).
(object rule) RuleFor(x => x) .Custom((query, context) => { if (string.IsNullOrWhiteSpace(query?.PartNumbers)) { return; } if (query.PartNumbers.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length > 200) { context.AddFailure("PartNumbers", "Part numbers count cannot exceed 200."); } })

Responses: OK IReadOnlyCollection<StockItemCostResponse>: Stock item costs.

Notes


GET /v3/stock-items/cost/by-ids: Gets stock item costs by ids.

Operation GetStockItemCostsByIds · permission read:stock-item:balance

Query string: GetStockItemCostsByIdsQuery

field type default validation description
ids string Comma-separated stock-item identifiers (max 100).
date DateTime? NotNull() Cost evaluation date (on or before).
(object rule) RuleFor(x => x) .Custom((query, context) => { if (string.IsNullOrWhiteSpace(query?.Ids)) { return; } if (query.Ids.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length > 100) { context.AddFailure("Ids", "Ids count cannot exceed 100."); } })

Responses: OK IReadOnlyCollection<StockItemCostResponse>: Stock item costs.

Notes


GET /v3/stock-items/{stockItemId}/global-balance: Gets a stock item global balance by id.

Operation GetStockItemGlobalBalanceById · permission read:stock-item:balance

Parameters

name in type default description
stockItemId route int The stock item id.

Responses: OK StockItemGlobalBalanceResponse: Stock item global balance. · NotFound ProblemDetails: No stock item with the specified identifier was found.

Notes


GET /v3/stock-items/global-balances: Gets a stock item global balance.

Operation GetStockItemGlobalBalance · permission read:stock-item:balance

Query string: GetStockItemGlobalBalanceQuery

field type default validation description
code string Stock-item code. Mutually exclusive with Sku.
sku string Stock-item SKU. Mutually exclusive with Code.

Responses: OK decimal: Stock item global balance. · NotFound ProblemDetails: No stock item was found for the supplied code or SKU.

Notes

Types

BrandReference

Lightweight brand reference (id + name).

field type description
id int The brand id.
name string The brand name.

ClassificationReference

Lightweight stock-item classification reference (id + code + name).

field type description
id int The classification id.
code string The classification code.
name string The classification name.

DynamicPropertyInfo

Dynamic-property value assignment for a grouping or child stock item.

field type description
dynamicPropertyId int Dynamic-property identifier (e.g. "Color").
dynamicProperty string Dynamic-property name; corrected from DB on write.
dynamicValueId int Dynamic-property value identifier (e.g. "Red").
dynamicValue string Dynamic-property value text; corrected from DB on write.

StockItemBalanceResponse

Response describing a stock-item balance row in a specific warehouse and (optional) batch.

field type description
warehouse WarehouseReference The warehouse the balance applies to.
stockItem StockItemReference The stock item the balance applies to.
balance decimal The available on-hand quantity in the primary UOM.
reservedBalance decimal The quantity reserved against pending issues.
batchNumber string The batch number, when the stock item is batch-tracked.
productionDate DateTime? The batch production date, when applicable.
expirationDate DateTime? The batch expiration date, when applicable.

StockItemBatchResult

Response describing the result of a stock-item batch operation.

field type description
succeeded List<StockItemResponse> Successfully processed stock items.
failed Dictionary<string,string> Failed items keyed by description with the failure reason.

StockItemChildRequest

Request to create a child (variant) of a grouping stock item.

field type description
code string Child code.
sku string Child SKU.
price decimal? Child price.
partNumber string Child part number.
dynamicPropertiesInfo List<DynamicPropertyInfo> Dynamic-property value combination defining this variant.
isCurrent bool? Marks this child as the carry-over of the existing item when an Update transforms a simple item into a grouping item. Exactly one child must set this in the transform case; ignored otherwise.

StockItemChildResponse

Response describing a child stock item of a grouping item.

field type description
id int Child identifier.
description string Description.
code string Code.
sku string SKU.
price decimal Displayed price.
partNumber string Part number.
dynamicPropertiesInfo List<DynamicPropertyInfo> Dynamic-property assignments defining this variant.
salesPriceDiscount decimal? The discount value applied to the sales price (interpreted per SalesPriceDiscountType).
salesPriceDiscountType int? The discount type for the sales price (0 = amount, 1 = percentage).
salesPriceDiscountIsLimited bool? Whether the sales-price discount is bounded by the date range below.
salesPriceDiscountDateFrom DateTime? The start date of the sales-price discount window.
salesPriceDiscountDateTo DateTime? The end date of the sales-price discount window.
dealerPriceDiscount decimal? The discount value applied to the dealer price.
dealerPriceDiscountType int? The discount type for the dealer price (0 = amount, 1 = percentage).
dealerPriceDiscountIsLimited bool? Whether the dealer-price discount is bounded by the date range below.
dealerPriceDiscountDateFrom DateTime? The start date of the dealer-price discount window.
dealerPriceDiscountDateTo DateTime? The end date of the dealer-price discount window.
superDealerPriceDiscount decimal? The discount value applied to the super-dealer price.
superDealerPriceDiscountType int? The discount type for the super-dealer price (0 = amount, 1 = percentage).
superDealerPriceDiscountIsLimited bool? Whether the super-dealer-price discount is bounded by the date range below.
superDealerPriceDiscountDateFrom DateTime? The start date of the super-dealer-price discount window.
superDealerPriceDiscountDateTo DateTime? The end date of the super-dealer-price discount window.

StockItemCostResponse

Response describing the current cost of a stock item.

field type description
stockItemId int The stock-item id.
stockItemCode string The stock-item code.
stockItemSku string The stock-item SKU.
stockItemPartNumber string The stock-item part number.
cost decimal The unit cost in the system currency.

StockItemGlobalBalanceResponse

Response describing a stock item's global balance summary across all warehouses.

field type description
stockItem StockItemReference The stock item the balance applies to.
globalBalance decimal The total on-hand quantity across all warehouses, in the primary UOM.
globalReservedBalance decimal The total reserved quantity across all warehouses, in the primary UOM.

StockItemReference

Lightweight stock-item reference (id + code + description).

field type description
id int The stock-item id.
code string The stock-item code.
description string The stock-item description.

StockItemResponse

Response describing a stock item.

field type description
id int Identifier.
code string Code.
description string Description.
otherLanguageDescription string Alternate-language description.
sku string SKU.
partNumber string Part number.
externalId string External identifier.
classification ClassificationReference Classification.
brand BrandReference Brand.
unitOfMeasureChainId int? Unit-of-measure chain identifier.
unitOfMeasure int? Unit-of-measure identifier.
singleUomId int? Single UOM identifier.
primaryUomId int? Primary unit-of-measure identifier resolved from the chain.
isGroupingItem bool Whether the item is a grouping item.
tags string[] Item tags.
dynamicPropertiesInfo List<DynamicPropertyInfo> Dynamic-property assignments.
childItems List<StockItemChildResponse> Child items.
stockItemUnitOfMeasures List<StockItemUnitOfMeasureResponse> UOM chain.
salesPrice decimal Sales price.
purchasePrice decimal Purchase price.
dealerPrice decimal Dealer price.
superDealerPrice decimal Super-dealer price.
minimumPrice decimal Minimum price.
referencePrice decimal Reference price.
salesPriceDiscount decimal? The discount value applied to the sales price (interpreted per SalesPriceDiscountType).
salesPriceDiscountType int? The discount type for the sales price (0 = amount, 1 = percentage).
salesPriceDiscountIsLimited bool? Whether the sales-price discount is bounded by the date range below.
salesPriceDiscountDateFrom DateTime? The start date of the sales-price discount window.
salesPriceDiscountDateTo DateTime? The end date of the sales-price discount window.
dealerPriceDiscount decimal? The discount value applied to the dealer price.
dealerPriceDiscountType int? The discount type for the dealer price (0 = amount, 1 = percentage).
dealerPriceDiscountIsLimited bool? Whether the dealer-price discount is bounded by the date range below.
dealerPriceDiscountDateFrom DateTime? The start date of the dealer-price discount window.
dealerPriceDiscountDateTo DateTime? The end date of the dealer-price discount window.
superDealerPriceDiscount decimal? The discount value applied to the super-dealer price.
superDealerPriceDiscountType int? The discount type for the super-dealer price (0 = amount, 1 = percentage).
superDealerPriceDiscountIsLimited bool? Whether the super-dealer-price discount is bounded by the date range below.
superDealerPriceDiscountDateFrom DateTime? The start date of the super-dealer-price discount window.
superDealerPriceDiscountDateTo DateTime? The end date of the super-dealer-price discount window.
averageCost double? Average cost.
lastCost double? Last cost.
fifo double? FIFO value.
lifo double? LIFO value.
openingAverageCost double? Opening average cost.
openingFifo double? Opening FIFO valuation.
openingLifo double? Opening LIFO valuation.
openingLastCost double? Opening last cost.
tax TaxReference Tax.
taxRate decimal Tax rate.
withholdingTax TaxReference Withholding tax.
withholdingTaxRate decimal Withholding tax rate.
globalOpeningBalance decimal Global opening balance.
globalReorderingPoint decimal? Global reordering point.
globalMinimumPoint decimal? Global minimum point.
globalMaximumPoint decimal? Global maximum point.
unitPrice decimal Unit price.
length decimal Length.
width decimal Width.
height decimal Height.
weight decimal Weight.
warranty decimal Warranty.
note string Note.
itemLocation string Item location.
datasheet string Datasheet.
imageUrl string Image URL.
parentItemId int? Parent item identifier.
enforceSerialEntry bool Whether serial entry is enforced.
enforceBatchNumberDateEntry bool Whether batch-number date entry is enforced.
enforceExpirationDateEntry bool Whether expiry-date entry is enforced.
allowSerialDuplication bool Whether serial duplication is allowed.
autofillBatchNumber bool Whether batch numbers are autofilled.
allowForSMS bool Whether SMS is allowed.

StockItemUnitOfMeasureRequest

Request to create or update an entry in the stock-item unit-of-measure chain.

field type validation description
unitOfMeasureId int GreaterThan(0) The id of the unit of measure.
uomName string MaximumLength(200) The display name of the unit of measure as it appears for this stock item.
uomPartNumber string MaximumLength(200) The part number captured at this UOM level.
uomPrice decimal The sales price at this UOM level.
uomDealerPrice decimal The dealer price at this UOM level.
uomSuperDealerPrice decimal The super-dealer price at this UOM level.
isPrimary bool Whether this UOM is the primary (smallest) unit of the chain. Exactly one entry must be primary.
ratioToPrimary decimal GreaterThan(0m) .When(x => !x.IsPrimary) The conversion ratio to the primary UOM. 1 for the primary; larger for parent units.

StockItemUnitOfMeasureResponse

Response describing a stock-item UOM entry.

field type description
id int Identifier.
stockItemId int Stock-item identifier.
unitOfMeasureId int Unit-of-measure identifier.
uomName string UOM name.
code string Code.
uomPartNumber string UOM part number.
uomPrice decimal UOM price.
uomDealerPrice decimal Dealer price.
uomSuperDealerPrice decimal Super-dealer price.
ratioToPrimary decimal Ratio to the primary UOM.
isPrimary bool Whether this is the primary UOM.
isDefault bool Whether this is the default UOM.
isUsedInTransaction bool Whether the UOM is used in transactions.
uomChainName string Chain name.
unitOfMeasureChainId int Unit-of-measure chain identifier.
stockItemPartNumber string Stock-item part number for this UOM.

StockItemWarehouseSummaryResponse

Response describing a stock item's sales and stock position, broken down by warehouse.

field type description
stockitemId int Stock item identifier.
description string Description.
partNumber string Part number.
sku string SKU.
warehouses List<StockItemWarehouseSummaryWarehouseResponse> Per-warehouse sales and stock position.

StockItemWarehouseSummaryWarehouseResponse

A single warehouse's sales and stock position for a stock item.

field type description
warehouseId int Warehouse identifier.
description string Warehouse description.
sales decimal Sales quantity in Primary UOM for the requested period.
salesReturn decimal Sales-return quantity in Primary UOM for the requested period.
balance decimal Current on-hand stock balance.
reserved decimal Reserved stock quantity.
expectedReceive decimal Expected receiving quantity from open purchase orders.
expectedTransfer decimal Expected incoming transfer quantity.

TaxReference

Lightweight tax reference (id + name + rate).

field type description
id int The tax id.
name string The tax name.
rate decimal The tax rate as a percentage.

WarehouseReference

Lightweight warehouse reference (id + code + name).

field type description
id int The warehouse id.
code string The warehouse code.
name string The warehouse name.