getProducts

Retrieve your product database.

In addition to product card fields, you can have API to return:

  • inventory quantities (set getStockInfo = 1);
  • costs and purchase prices (set getFIFOCost = 1);
  • price list prices in a particular store (set getPriceListPrices = 1);
  • recipes for assembly and bundle products (set getRecipes = 1);
  • package options (set getPackageInfo = 1);
  • replacement products (set getReplacementProducts = 1);
  • related products (set getRelatedProducts = 1);
  • product parameters (set getParameters = 1);
  • quantities of packaging materials that the product contains (set getPackagingMaterials = 1);
  • product files (manuals, specifications) (set getRelatedFiles = 1);
  • beverage containers (set getContainerInfo = 1);
  • detailed list of variations for a matrix product (set getMatrixVariations = 1).
To add or edit a product, use saveProduct. To retrieve inventory quantities ONLY, or to synchronize that data, use getProductStock. To retrieve only price list prices, use getProductPrices.

Services are also considered a special kind of products — non-stock products.

Input parameters

Parameter name Description Possible value Required
productID  Retrieve one specific product.  Integer    
productIDs  Retrieve specific products. Multiple product IDs, separated by commas, such as: 1,2,3,4,5  String    
type  Filter by product type. You can specify multiple product types, separated by commas (eg. "BUNDLE,ASSEMBLY").

Possible types are:
  • PRODUCT
  • BUNDLE
  • MATRIX
  • ASSEMBLY.

For a more detailed description of each type, please see below.

Please note that matrix variations (specific colors and sizes of a matrix product) are regular products; there is no separate type for those. To include or exclude matrix variations, please see the next filter: includeMatrixVariations
String    
includeMatrixVariations  This filter is for retrieving or excluding matrix variations (specific colors or sizes of a matrix product). By default, variations are included.

This filter helps you with the following two use cases:

1. If you only need to retrieve regular items and matrix parent products (NO variations), set the following filters:
  • type = "PRODUCT,BUNDLE,MATRIX,ASSEMBLY"
  • includeMatrixVariations = 0

2. If you only need to retrieve regular items and matrix variations (ie. only items you can sell; NO matrix parent products), set the following filter:
  • type = "PRODUCT,BUNDLE,ASSEMBLY"
 
Integer (0 or 1),by default 1    
groupID  Retrieve products in this specific product group. (See getProductGroups.)  Integer    
groupIDWithSubgroups  Retrieve products in this product group, or in any of its sub-groups, sub-subgroups etc.  Integer    
groupIDsWithSubgroups  Retrieve products in specific product groups, or in any of their sub-groups, sub-subgroups etc. Multiple group IDs, separated by commas, such as: 1,2,3,4,5  String    
categoryID  Retrieve products in this specific category. (See getProductCategories.)  Integer    
categoryIDWithSubcategories  Retrieve products in this category, or in any of its sub-categories, sub-sub-categories etc.  Integer    
priorityGroupID  Retrieve products in this priority group. (See getProductPriorityGroups.)  Integer    
supplierID  Retrieve products of this supplier. (See getSuppliers.)  Integer    
brandID  Retrieve products of this brand. (See getBrands.)  Integer    
unitID  Retrieve products that have this specific unit. (See getProductUnits.)  Integer    
vatrateID  Retrieve products that have this VAT / tax rate set on product card. (See getVatRates.)  Integer    
parentProductID  Retrieve only the variations of one specific matrix product.  Integer    
code  Search for a product by code, exact matches only.
For more sophisticated product search options, see input parameters findBestMatch or searchNameIncrementally
String    
code2  Search for a product by EAN / UPC, exact matches only.  String    
code3  Search for a product by code 3, exact matches only.  String    
supplierCode  Search for a product by supplier / manufacturer code, exact matches only.  String    
code5  Search for a product by code 5, exact matches only. "Extra product codes" module must be enabled.  String    
code6  Search for a product by code 6, exact matches only. "Extra product codes" module must be enabled.  String    
code7  Search for a product by code 7, exact matches only. "Extra product codes" module must be enabled.  String    
code8  Search for a product by code 8, exact matches only. "Extra product codes" module must be enabled.  String    
name  Search for a product by name, exact matches only.
For more sophisticated product search options, see input parameters findBestMatch or searchNameIncrementally.. 
String    
codePrefix  Search for a product by code. Returns all items where beginning of the code matches.  String    
code2Prefix  Search for a product by EAN/UPC. Returns all items where beginning of the EAN / UPC matches.  String    
code3Prefix  Search for a product by code 3. Returns all items where beginning of the code matches.  String    
supplierCodePrefix  Search for a product by supplier code. Returns all items where beginning of the code matches.  String    
code5Prefix  Search for a product by code 5. Returns all items where beginning of the code matches. "Extra product codes" module must be enabled.  String    
code6Prefix  Search for a product by code 6. Returns all items where beginning of the code matches. "Extra product codes" module must be enabled.  String    
code7Prefix  Search for a product by code 7. Returns all items where beginning of the code matches. "Extra product codes" module must be enabled.  String    
code8Prefix  Search for a product by code 8. Returns all items where beginning of the code matches. "Extra product codes" module must be enabled.  String    
namePrefix  Search for a product by name. Returns all items where beginning of the name matches.  String    
searchCodeFromMiddle  If set to 1, and you have supplied input parameters "seachName" or "searchNameIncrementally", API will search from anywhere within the code field, not just the beginning.  0 or 1    
searchName  Search from product name (anywhere within the name field), product code (from the beginning), or EAN / UPC (from the beginning).
For more sophisticated product search options, see input parameters findBestMatch or searchNameIncrementally
String    
searchNameIncrementally  A more optimized product search. Specify your search phrase, and API will check whether it matches product code, EAN/UPC OR product name. It is meant for cases where API should return quickly the most relevant results, but the search does not have to be exhaustive.

API will also look for partial matches.

When using searchNameIncrementally, the results are not ordered and you cannot use paging (pageNo), nor specify how many results you want to retrieve. Pay no attention to the "recordsTotal" field - it returns a random large number!

API tries the following search combinations:
  1. Exact product code match?
  2. Exact EAN/UPC match?
  3. Product code or EAN beginning matches, or name contents match?
 
String    
findBestMatch  Set findBestMatch = 1 and send input parameters code, code2, and/or name, each of which may contain a different search phrase. API will try to find a best exact match, trying different search combinations:
  1. code, code2, name;
  2. code, code2;
  3. code2, name;
  4. code2;
  5. code, name;
  6. code;
  7. name.
This search option is useful for importing products. You may have a product code, EAN/UPC and product name (or any combination of these) — and you want a certain answer whether this exact item already exists in ERPLY or not.

Therefore, API will only return exact, not partial matches.

You may also use input parameter parentProductID to find a match ONLY from among the variations of a specific matrix product. This is the only additional filter which can be combined with findBestMatch = 1
Integer (0 or 1)    
active  Specify active = 0 to get archived products. (Filter status = ARCHIVED gives the same results.)

Specify active = 1 to get all non-archived products. (Filter status = ALL_EXCEPT_ARCHIVED gives the same results.)

A non-archived product can be either active, no longer ordered, or not for sale. 
0 or 1    
status  Filter products by status: ACTIVE, NO_LONGER_ORDERED, NOT_FOR_SALE, ARCHIVED, or ALL_EXCEPT_ARCHIVED.

The last one returns all non-archived items (ie. items that are active, not for sale or no longer ordered). 
String    
nonStockProduct  If specified, API returns only non-stock products. Salon / SPA module must be enabled.  0 or 1    
quickPosProducts  Set to 1 to retrieve only the frequently-used products that are displayed in POS as quick-select buttons.

Each location may have different quick-select buttons. If you want the buttons for a specific store, use warehouseID input parameter. If you omit it, you will get the "default" selection. 
0 or 1    
giftCards  Set to 1 to retrieve only the products that are serial numbered gift cards.  0 or 1    
displayedInWebshop  Set to 1 to retrieve only the products that are displayed in webshop.  0 or 1    
getStockInfo  Set to 1 to retrieve inventory quantities for selected products.

Note that product's timestamp does not change when its inventory quantity changes. Therefore you cannot use getProducts to synchronize inventory quantitites. For that purpose, see API call getProductStock instead.

Omit if not needed. Retrieving quantities takes extra resources and results are returned slower.  
   
getFIFOCost  Set to 1 to retrieve FIFO costs and purchase prices for selected products.

Omit if not needed. Retrieving costs takes extra resources and results are returned slower.  
   
getContainerInfo  Set to 1 to retrieve more information about the beverage container that goes with this product.

You will be needing this feature if shops are required to show beverage container as a separate item on invoice, and charge an additional fee for that. 
0 or 1    
getPackageInfo  Set to 1 to retrieve information about the various-sized packages for this product.

For each product that has packages, API will return an additional sub-structure named "productPackages". 
0 or 1    
getReplacementProducts  Set to 1 to retrieve replacement products for selected products.      
getRelatedProducts  Set to 1 to retrieve related products for selected products.      
getMatrixVariations  Set to 1 to retrieve a detailed list of variations for a matrix product: product name, code, EAN / UPC, color and size for each variation. See output element variationList. By default (without setting getMatrixVariations = 1) you will only get the IDs of variation products.  0 or 1    
getRelatedFiles  Set to 1 to retrieve related files for selected products.      
getRecipes  Set to 1 to retrieve components for selected products (if selected product is a bundle or an assembly product).      
getParameters  Set to 1 to retrieve parameters for selected products. Parameters module must be enabled.  0 or 1    
getPackagingMaterials  Set to 1 to retrieve quantities of packaging materials for selected products. Packaging module must be enabled.  0 or 1    
getPriceListPrices  Set to 1 to retrieve price list prices. You can use warehouseID parameter to retrieve product's sales price for a specific warehouse. You can use clientID parameter to retrieve product's sales price for a specific customer.      
getPriceCalculationSteps  Set to 1 to retrieve a set of records detailing how price list price was received. If you specify "getPriceCalculationSteps", input parameter getPriceListPrices" is required, too. This feature requires Classic back office, version 4.5.0 or newer.  0 or 1    
getItemsFromFirstPriceListOnly  Set to 1 to retrieve only the products that are in first price list of a specific location.  0 or 1    
getWarehouseSpecificVAT  Set to 1 retrieve sales price (VAT included) that applies to specified sales location.  0 or 1    
getOnlyItemsInStock  Set to 1 to retrieve only the products that are in stock at specific location.  0 or 1    
getProductsFor 

"SALES" or "ORDERING".

A filter to retrieve only sellable products, or only products that can be reordered from supplier. This filter will use product's own status, and also product's status in assortment, if an assortment has been set for the selected location.

If you specify "getProductsFor", input parameter "warehouseID" is required, too.

Cannot be used together with input parameters "active", "status", "addedSince"" and "changedSince" . (The "active" and "status" filters would conflict with the logic of "getProductsFor", and this filtered dataset is complex enough that incrementally synchronizing it is not supported.)

Behavior of this filter if no assortment has been set for the selected location:

  1. "SALES" will return "Active" and "No longer ordered" products.
  2. "ORDERING" will return "Active" and "Not for sale" products.

Behavior of the filter if the selected location has an assortment:

  1. "SALES" will return only products that are present in the assortment, and whose status BOTH on product card, and in assortment, is "Active" or "No longer ordered".
  2. "ORDERING" will return only products that are present in the assortment, and whose status BOTH on product card, and in assortment, is "Active" or "Not for sale".

To enable the assortments module on your account, please contact customer support. This feature requires Classic back office, version 4.5.0 or newer. (This filter, however, can still be used even without the assortments module.)

 
String    
warehouseID  Specify warehouse ID to:

1) retrieve inventory quantities of selected products only in one specific warehouse. If not set, API will return inventory quantities for every warehouse. For performance reasons, it is recommended to always set this parameter if you do not need information about all warehouses simultaneously.

2) retrieve price list prices in one specific location.

3) retrieve POS quick select buttons for one specific location (quickPosProducts = 1
Integer    
clientID  Customer ID (to retrieve price list prices for specified customer)  Integer    
extraField1IDs  IDs of selected values in product card extra field 1. The field on product card is a drop-down, and the possible values can be retrieved with API call getProductExtraField1Values  String    
extraField2IDs  IDs of selected values in product card extra field 2. The field on product card is a drop-down, and the possible values can be retrieved with API call getProductExtraField2Values  String    
extraField3IDs  IDs of selected values in product card extra field 3. The field on product card is a drop-down, and the possible values can be retrieved with API call getProductExtraField3Values  String    
extraField4IDs  IDs of selected values in product card extra field 4. The field on product card is a drop-down, and the possible values can be retrieved with API call getProductExtraField4Values  String    
locationInWarehouseIDs  Filter products by their "location in warehouse" ID. Multiple IDs, separated by commas.  String    
locationInWarehouseText  Filter products by the value of their "location in warehouse" text field. Exact matches only.  String    
searchAttributeName  Search from attribute name.searchAttributeName and searchAttributeValue have to be specified both  String    
searchAttributeValue  Search from attribute value  String    
searchParameterOptionID  Get products that have a specific parameter value.

Example: let us assume that you have defined a parameter "Available colors", with possible options of "white", "red", yellow" and "blue". Use searchParameterOptionID to get all items that are available in blue.

Of course, to make the query, you need to know the ID of the "blue" option. API call getParameters provides all parameters and their options. 
Integer    
searchParameterID
searchParameterValue 
Get products that have a specific parameter value.

Example 1: some product parameters are simple yes/no properties, eg. "does this product have batteries included". Assuming this parameter's ID is "456", you need to make the query searchParameterID = 456 if you want to get all products that have batteries included.

Example 2: Other parameters have scalar values, eg. the inner diameter of a ball bearing. Assuming the parameter ID is 789, you need to make the query searchParameterID = 789, searchParameterValue = "1/2" if you want to get all bearings with inner diameter of 1/2". 
Integer
String  
 
addedSince  Get all new items that have been added since a specific point in time.

NOT RECOMMENDED. Instead, use "changedSince", which returns both new items and changed items. 
Integer (Unix timestamp)    
changedSince  Get all items that have been ADDED AND/OR CHANGED since a specific point in time. Use this field for synchronizing product database. Set changedSince equal to the time of last successful synchronization.

Some tips:
  • Use server's timestamp, eg. the one that is returned in every response header. Your clock may be different from server clock, so if you stamp the synchronization with a locally generated timestamp, you'll risk missing some updates.

  • Product's timestamp changes when product card is updated in Erply. Timestamp DOES NOT CHANGE when product's inventory quantity changes, eg. as a result of a sale, a confirmed Purchase Invoice, or a confirmed Inventory Registration.

    If you want to synchronize inventory quantities, use API call getProductStock instead.

  • For each item that getProducts returns, check if you already have an item with that ID in your local database. If yes, update it. If not, add it as a new item.
 
Integer (Unix timestamp)    
lang  Retrieve item names in a specific language. If omitted, API will return item names in the default language of your ERPLY account.
Possible values:
  • 'eng' - English
  • 'spa' - Spanish
  • 'ger' - German
  • 'swe' - Swedish
  • 'fin' - Finnish
  • 'rus' - Russian
  • 'est' - Estonian
  • 'lat' - Latvian
  • 'lit' - Lithuanian
  • 'gre' - Greek
 
String    
getAllLanguages  Retrive product names in all languages. If you turn on this flag, API will return additional fields nameENG, nameGER, etc. — depending on which languages have been enabled on your account.  0 or 1    
orderBy  'name', 'code', 'productID', 'price', 'parentProductID', 'changed' or 'added'.

'changed' sorts by last modification timestamp. Items that have been created but never changed yet, have a modification timestamp of 0 and are sorted at the end of the list.

'added' sorts by creation timestamp.

'parentProductID', combined with orderByDir = 'asc', is useful if you need to retrieve matrix products first, followed by matrix product variations. (Matrix products have parentProductID = 0; variations have a non-zero value.)

The default value is 'changed'. 
String    
orderByDir  'asc' (ascending order) or 'desc' (descending order). By default items are sorted in descending order.  String    
recordsOnPage  Number of records API should return. By default API returns 20 records.

At most you can request 1000 products at a time (or only 100, if you have set getStockInfo = 1). 
Integer    
pageNo  API returns at most recordsOnPage items at a time. To retrive the next recordsOnPage items, send a new request with pageNo incremented by one. By default, API returns "page 1".  Integer    
recordOffset  As an alternative to pageNo, you can specify an exact list offset like in SQL. recordOffset is 0-based, so if you are retrieving items 20 at a time,
pageNo = 1 is equivalent to recordOffset = 0,
pageNo = 2 is equivalent to recordOffset = 20
and so on. 
Integer    

Response

Field name Type Description
productID  Integer  Product ID  
type  String  Product type. The type can be:
  • PRODUCT - A regular item.
  • BUNDLE - A bundle product. Bundle products do not have an inventory quantity. When a bundle is sold, it is the components that are actually drawn from inventory. A bundle cannot be purchased, counted or taken into stock. The composition of a bundle product is described by its recipe. To retrieve the recipes for all bundle products, set input parameter getRecipes = 1. API then returns the field productComponents.
  • MATRIX - a matrix product. Matrix product has a number of variations - specific colors or sizes of the same design or model. The matrix product itself does not have inventory and cannot be purchased or sold. To get the list of variations for each matrix product, see the output field productVariations (which is always returned, but only contains variation IDs), or variationList (which contains more detailed information, but which you have to specifically request with getMatrixVariations = 1).
  • ASSEMBLY - An assembly product. An assembly is similar to a bundle (it has a list of components), but it is an inventory item in its own right. An assembly can be purchased as a whole, and it can also be "assembled". Assembling is a procedure that subtracts the components from inventory and takes the finished product into stock.
 
active  0 or 1  Value 0 indicates an archived product, and is equivalent to status = ARCHIVED. Archived products should not be displayed to users.

Value 1 indicates an active item. For a more detailed breakdown of active products, see the next field.  
status  String  Product status, possible statuses are 'ACTIVE', 'NO_LONGER_ORDERED', 'NOT_FOR_SALE' and 'ARCHIVED'.  
name  String  Product name.

Products can have different names in each language. Use input parameter lang to specify which language you want to retrieve. By default, API returns product names in account's default language.

If you want to retrieve names in all languages with one API call, set input parameter getAllLanguages = 1. In addition to field name, API will then return fields nameENG, nameGER, etc. — one for each language enabled on your account.  
code  String  First code of the item (by convention, this is used for company's internal code)  
code2  String  Second code of the item (by convention, this is used for EAN/UPC barcode)  
code3  String  Third code of the item (note that this field may not be visible on product card by default)  
supplierCode  String  Supplier's product code  
code5  String  Code 5 of the item. API only returns this field if "Extra product codes" module is enabled on your account.  
code6  String  Code 6 of the item. API only returns this field if "Extra product codes" module is enabled on your account.  
code7  String  Code 7 of the item. API only returns this field if "Extra product codes" module is enabled on your account.  
code8  String  Code 8 of the item. API only returns this field if "Extra product codes" module is enabled on your account.  
groupID  Integer  Product group ID  
groupName  String  Name of the product group  
price  Decimal, 3 places    
priceWithVat  Decimal, 2 places    
displayedInWebshop  0 or 1    
categoryID  Integer    
categoryName  String    
supplierID  Integer    
supplierName  String    
unitID  Integer    
unitName  String    
taxFree  0 or 1  If set to 1, this product is tax free in ALL stores and sales locations, regardless of POS tax rate and regardless of this product's vatrateID. (Eg. a gift card.)  
deliveryTime  String    
vatrateID  Integer  VAT rate (tax rate) of this item. NB! POS tax rate will override this value when selling from POS.  
vatrate  Decimal    
hasQuickSelectButton  0 or 1  Value 1 indicates that this item has a quick-select button in POS.

This field is DEPRECATED, because in Erply backend you can actually define different POS quick select buttons for each shop (location, warehouse). Therefore you should use API call getPointsOfSale to retrieve POS quick buttons. For each register, API will return a quickButtons structure.

(Quick buttons are specified per-store, but getPointsOfSale returns them separately for each register.)

Please note that quick buttons may contain both services and products. We are phasing out services (new accounts do not have this module and should use non-stock products instead), but older accounts still have and use them.

If you are only interested in product buttons, you can still use API call getProducts. Set the filters quickPosProducts = 1 and warehouseID.  
isGiftCard  0 or 1  1 if this item is a serial numbered gift card.

If such a product is sold from POS, its serial number should be recorded and saved into the registry of sold gift cards, using API function saveGiftCard.  
isRegularGiftCard  0 or 1  1 if this item is a regular gift card.  
manufacturerName  String    
priorityGroupID  Integer  Priority group ID. See getProductPriorityGroups.  
countryOfOriginID  Integer  Country ID. See getCountries.  
brandID  Integer    
brandName  String    
width  Integer  Physical dimension. Unit depends on region, check your Erply account (typically inches or mm).  
height  Integer  Physical dimension. Unit depends on region, check your Erply account (typically inches or mm).  
length  Integer  Physical dimension. Unit depends on region, check your Erply account (typically inches or mm).  
lengthInMinutes  Integer  Length in minutes, for a salon service. API returns this attribute if Salon / SPA module is enabled.  
setupTimeInMinutes  Integer  Service set-up time in minutes. API returns this attribute if Salon / SPA module is enabled.  
cleanupTimeInMinutes  Integer  Service cleanup time in minutes. API returns this attribute if Salon / SPA module is enabled.  
walkInService  Integer  0 or 1. API returns this attribute if Salon / SPA module is enabled.  
rewardPointsNotAllowed  Integer  0 or 1. API returns this attribute if Reward Points module is enabled.  
nonStockProduct  Integer  0 or 1.  
cashierMustEnterPrice  0 or 1 

If this field is set to 1, a prompt to enter price will appear in Berlin POS (3.26 and newer) every time the item is sold. (Even if the item has a price on product card or price lists, cashier will override the price every time, so the price lists will not apply.)

This feature is used for random-weighted or random-priced items which are sold in units. (Inventory will be in units, but each unit might have a unique price given to it.)

 
netWeight  Float  Item's net weight. Unit depends on region, check your Erply account (typically lbs or kg)  
grossWeight  Float  Item's gross weight (with packaging). Unit depends on region, check your Erply account (typically lbs or kg)  
volume  Integer  Item's fluid volume, eg. for beverages or perfumery. Unit depends on locale, check your Erply account (typically mL or fl oz)  
description  String (65535) - plain text  Product description in default language, plain text.  
longdesc  String (65535) - HTML  Longer product description in default language, HTML.  
descriptionENG  String (65535) - plain text  Product description in English (if needed besides default language), plain text.  
longdescENG  String (65535) - HTML  Longer product description in English (if needed besides default language), HTML.  
descriptionRUS  String (65535) - plain text  Product description in Russian (if needed besides default language), plain text.  
longdescRUS  String (65535) - HTML  Longer product description in Russian (if needed besides default language), HTML.  
descriptionFIN  String (65535) - plain text  Product description in Finnish (if needed besides default language), plain text.  
longdescFIN  String (65535) - HTML  Longer product description in Finnish (if needed besides default language), HTML.  
cost  Decimal  Product unit cost.

This is an informative, unchanging cost you can edit yourself on Erply's product card. To get real current costs for the batches in stock, use FIFOCost instead.  
FIFOCost  Decimal  Average product unit cost, for the batches currently in stock.

To retrieve this field, set getFIFOCost = 1. If you have specified warehouse ID, API returns FIFO cost of selected products in one specific warehouse. Otherwise, the cost given is an average over all warehouses. See the structure "warehouses" below to get costs for each warehouse separately.

Cost = purchase price + freight and other additional costs.  
purchasePrice  Decimal  Average purchase price, for the batches currently in stock.

Purchase price is basically the same as FIFO cost, but excluding freight and other additional costs.

To retrieve this field, set getFIFOCost = 1. If you have specified warehouse ID, API returns purchase price of selected products in one specific warehouse. Otherwise, the purchase price given is an average over all warehouses. See the structure "warehouses" below to get purchase prices for each warehouse separately.  
backbarCharges  Double  Amount of backbar charges for this service.  
added  Unix timestamp  Creation time.  
addedByUsername  String (16)  An identifier referring to the user who created this product. This is NOT actually the user's name; it's just a string, at most 16 characters long. However, typically it matches the first 16 characters of the user's name.  
lastModified  Unix timestamp  Last modification time.  
lastModifiedByUsername  String (16)  An identifier that refers to the user who last modified this product. This is NOT actually the user's name; it's just a string, at most 16 characters long. However, typically it matches the first 16 characters of the user's name.  
images  Array  Product pictures. For each picture, ERPLY provides 4 URLs for 4 different image sizes. These URLs must not be hotlinked — you need to download the images to your application and serve them from there.

Access to images is currently limited and the images are not accessible by default. If you need to access the files, please contact ERPLY customer support.

For each image, the following information is provided:
Field nameTypeDescription
pictureIDIntegerImage ID
nameString (255)A descriptive name for the file. May be empty.
thumbURLString (255)URL of image thumbnail (by default 100 x 100 px)
smallURLString (255)URL of a small version of the image (by default 200 x 200 px)
largeURLString (255)URL of a large version of the image (by default 800 x 600 px)
fullURLString (255)URL of the full-size original image
externalInteger0 or 1. A flag that indicates whether the image is stored as a local file in Erply, or as a URL to an external location, eg. a content delivery network.
hostingProviderStringA codename for the hosting provider, if the file is stored in an external location. May be empty.

This is used only for ERPLY's internal purposes, eg. to know how to remove image files from a specific CDN when the picture is removed from ERPLY.

The same information is also available through a standalone API call getProductPictures. Use it if you need to fetch all images, or retrieve an image by ID.  
warehouses  Dictionary  Warehouse-specific inventory quantities and/or unit costs.

To retrieve inventory quantities per warehouse, specify getStockInfo = 1. To retrieve costs, specify getFIFOCost = 1.

Keys of the array correspond to warehouse IDs. If only one warehouse was specified, the array will contain only one item. Each item has the following attributes:

warehouseID - Integer - ID of the warehouse

totalInStock - amount currently in stock

reserved - amount reserved to customers

free = totalInStock - reserved

orderPending - amount that has already been ordered from suppliers (purchase orders that have been confirmed)

reorderPoint - reorder point (if stock amount falls below that, it needs to be restocked) for this particular product, in this particular warehouse

restockLevel - restocking level (when placing purchase orders, the item is by default restocked to specified amount) for this particular product, in this particular warehouse.

FIFOCost - FIFO cost.

purchasePrice - purchase price.  
variationDescription  Array  This field describes the color and size of a matrix variation. Only matrix variations (products that are a specific color and size of a matrix product) have this field.

This array contains at most 3 elements (first, second and third dimension) and each item looks like this:

Field nameTypeDescription
nameStringname of the dimension (eg. "Size")
valueStringname of dimension's value (eg. "Medium")
orderIntegerPosition number of the dimension
dimensionIDIntegerID of the dimension (ID of "Size")
variationIDIntegerID of dimension's value (ID of "Medium")


For Berlin POS and Touch POS, this field is not returned by default, but POS can request it with a special input parameter posGetVariationDescription = 1.  
productVariations  Array  A list of the variation product IDs for this matrix product. Only matrix products (type = MATRIX) have this output field.

If you need more detailed information about each item (IDs only are not sufficient), see the next field.  
variationList  Array  Detailed information about the variations of this matrix product. Only matrix products (type = MATRIX) have this output field.

To retrieve this information, you need to set input parameter getMatrixVariations = 1.

Each item looks like this:

Field nameTypeDescription
productIDIntegerID of the variation product (ID of the product "Shirt Red L")
nameStringName of the variation (eg. "Shirt Red L")
codeStringCode of the variation (eg. "10056-Red-L")
code2StringEAN / UPC of the variation
dimensionsArrayA description of the item's color and size (ie. the "dimensions"). This array contains at most 3 elements (first, second and third dimension) and each item looks like this:

Field nameTypeDescription
nameStringname of the dimension (eg. "Size")
valueStringname of dimension's value (eg. "Medium")
codeStringcode of dimension's value (eg. "M")
orderIntegerPosition number of the dimension value (ie. what is the position of this color in the list of all colors).
dimensionIDIntegerID of the dimension (ID of "Size")
dimensionValueIDIntegerID of dimension's value (ID of "Medium")
 
parentProductID  Integer  For matrix variations only: the ID of matrix parent product.  
containerID  Integer  ID of another product, a beverage container that is always sold together with this item.  
containerName  String (255)  Name of the associated product, the beverage container. Set parameter getContainerInfo=1 to retrieve this field.  
containerCode  String (255)  Code of the associated product, the beverage container. Set parameter getContainerInfo=1 to retrieve this field.  
containerAmount  String  Number of beverage containers that this product contains. (Eg. if your product is "A Case of Coca-Cola", it might contain 24 cans.) Set parameter getContainerInfo=1 to retrieve this field.  
packagingType  String  Type of packaging, Packaging module must be enabled, possible values - "ORDINARY_PACKAGE", "METAL_BEVERAGE_PACKAGE", "RETURNABLE_PACKAGE" or empty.  
packages  Dictionary  Deprecated - list of available product packages for this item in old format.  
productPackages  Array  List of product packages.

Information about the various-sized packages for this item (eg. a pack of 4, a crate of 20, a pallet of 500).

Each package record looks like this:

Field nameTypeDescription
packageIDIntegerPackage ID
packageTypeStringPackage type name in current language
packageTypeIDIntegerPackage type ID, full list in getProductPackageTypes
packageAmountDecimalAmount that this package contains
packageCodeStringPackage barcode
packageNetWeightDecimalPackage weight without packing materials
packageGrossWeightDecimalPackage total weight
packageLengthDecimal
packageWidthDecimal
packageHeightDecimal

To have getProducts return product parameters, set input field "getPackageInfo" to 1.

Set the "lang" parameter to retrieve package names in an appropriate language.  
replacementProducts  Array  Replacement products for this item. This element is an array of product IDs. To retrieve this list, specify getReplacementProducts = 1.  
relatedProducts  Array  Related items.

Please note that on ERPLY product card, related products subsection is not visible by default. It needs to be specially enabled.

This is an array of product IDs. To retrieve this list, specify getRelatedProducts = 1.  
relatedFiles  Array  Product files (brochures, manuals, specifications). For each file, API provides a URL.

Please note that the files (as well as product images) are not accessible by default. To get access to the files, please contact ERPLY customer support.

For each file, the following information is provided:
Field nameTypeDescription
fileIDIntegerID of the file
nameStringA descriptive name for the file. May be empty.
typeIDIntegerFile type ID. Types are defined in Settings » Inventory settings » Product file types. See getProductFileTypes.
typeNameStringname of the file type
isInformationFileInteger(0/1)A flag for categorizing the files
fileURLStringURL of file.
externalInteger0 or 1. A flag that indicates whether the file is stored as a local file in Erply, or as a URL to an external location, eg. a content delivery network.
hostingProviderStringA codename for the hosting provider, if the file is stored in an external location. May be empty.

This is used only for ERPLY's internal purposes, eg. to know how to remove files from a specific CDN when the file is removed from ERPLY.

To retrieve this information, specify getRelatedFiles = 1.

The same information is also available through a standalone API call getProductFiles. Use it if you need to fetch all files, or retrieve a file by ID.  
productComponents  Array  Composition, or recipe, of a BUNDLE or ASSEMBLY product.

A bundle product does not have a stock quantity. When a bundle is sold, it is the components that are actually drawn from inventory.

An assembly product, on the other hand, is an inventory item in its own right. It can be purchased as a whole, but it can also be "assembled"; this is a procedure that subtracts the components from inventory and takes the finished product into stock.

Component list provides the following information:
Field nameTypeDescription
componentIDIntegerID of the component product
amountDecimalComponent amount

To retrieve this information, specify getRecipes = 1.  
priceListPrice  Decimal  Sales price (VAT excluded) that applies to specified sales location or customer. API returns this attribute if parameter "getPriceListPrices" is specified.  
priceListPriceWithVat  Decimal  Sales price (VAT included) that applies to specified sales location or customer. API returns this attribute if parameter "getPriceListPrices" is specified.  
priceCalculationSteps  Array  List of records. Each record looks like this:

>
Field nameTypeDescription
priceListIDIntegerPrice list ID
priceListNameStringPrice list name
priceDecimalUnit price specified in this price list
discountDecimalUnit $ discount given by this price list
typeString"PRICE" or "DISCOUNT"
percentageDecimalDiscount percentage from the price list (only present if the price list specified a percentage discount).

API returns this attribute if parameter "getPriceCalculationSteps" is specified.  
locationInWarehouse  String  Location in warehouse. DEPRECATED — this is a merged field that contains both the "location in warehouse" classifier selected from a drop-down, and the contents of the "location in warehouse" text field. To get these values separately, see the following fields.  
locationInWarehouseID  Integer  ID of product's location in warehouse (selected from a drop-down list). To get a list of the classifiers, see getLocationsInWarehouse.  
locationInWarehouseName  String  Name of the "location in warehouse" that the previous ID refers to.  
locationInWarehouseText  String  Contents of the "location in warehouse" text field on product card.

There are two options for classifying products - locations in warehouse can be predefined as a list and selected from a drop-down, or entered as free text on every product card.  
extraField1Title  String (255)  Title for product card extra field 1. (Users can customize field label if they want it to be named something else than "Extra Field 1"). The title is returned in specified language, or account's default language otherwise.

API outputs this field, and all the following "extraField..." fields only if "Extra product card fields" module is enabled on your account.  
extraField1ID  Integer  ID of selected value in product card extra field 1. The field on product card is a drop-down, and the possible values can be retrieved with API call getProductExtraField1Values.  
extraField1Code  String (50)  Code of selected value in product card extra field 1.  
extraField1Name  String (255)  Name of selected value in product card extra field 1.  
extraField2Title  String (255)  Title for product card extra field 2. (Users can customize field label if they want it to be named something else than "Extra Field 2"). The title is returned in specified language, or account's default language otherwise.  
extraField2ID  Integer  ID of selected value in product card extra field 2. The field on product card is a drop-down, and the possible values can be retrieved with API call getProductExtraField2Values.  
extraField2Code  String (50)  Code of selected value in product card extra field 2.  
extraField2Name  String (255)  Name of selected value in product card extra field 2.  
extraField3Title  String (255)  Title for product card extra field 3. (Users can customize field label if they want it to be named something else than "Extra Field 3"). The title is returned in specified language, or account's default language otherwise.  
extraField3ID  Integer  ID of selected value in product card extra field 3. The field on product card is a drop-down, and the possible values can be retrieved with API call getProductExtraField3Values.  
extraField3Code  String (50)  Code of selected value in product card extra field 3.  
extraField3Name  String (255)  Name of selected value in product card extra field 3.  
extraField4Title  String (255)  Title for product card extra field 4. (Users can customize field label if they want it to be named something else than "Extra Field 4"). The title is returned in specified language, or account's default language otherwise.  
extraField4ID  Integer  ID of selected value in product card extra field 4. The field on product card is a drop-down, and the possible values can be retrieved with API call getProductExtraField4Values.  
extraField4Code  String (50)  Code of selected value in product card extra field 4.  
extraField4Name  String (255)  Name of selected value in product card extra field 4.  
****    To retrieve the following fields, set input parameter getPackagingMaterials = "1". These fields are not included in the output by default. Packaging module must be enabled.  
salesPackageClearBrownGlass  Double  Sales package - amount of clear/brown glass.  
salesPackageGreenOtherGlass  Double  Sales package - amount of green/other glass.  
salesPackagePlasticPpPe  Double  Sales package - amount of plastic (PP, PE).  
salesPackagePlasticPet  Double  Sales package - amount of plastic (PET).  
salesPackageMetalFe  Double  Sales package - amount of metal (Fe).  
salesPackageMetalAl  Double  Sales package - amount of metal (Al).  
salesPackageOtherMetal  Double  Sales package - amount of other metal.  
salesPackageCardboard  Double  Sales package - amount of cardboard.  
salesPackageWood  Double  Sales package - amount of wood.  
groupPackagePaper  Double  Group package - amount of paper.  
groupPackagePlastic  Double  Group package - amount of plastic.  
groupPackageMetal  Double  Group package - amount of metal.  
groupPackageWood  Double  Group package - amount of wood.  
transportPackageWood  Double  Transport package - amount of wood.  
transportPackagePlastic  Double  Transport package - amount of plastic.  
transportPackageCardboard  Double  Transport package - amount of cardboard.  
*****  Alcohol details. Alcohol wholesale module must be enabled.    
registryNumber  String  The product's identification number in a state registry (eg. for alcoholic beverages).  
alcoholPercentage  Double  Percentage of alcohol by volume in the beverage.  
batches  String  List of current batches in stock (batch identification numbers), separated by semicolons. This field is only meant to be used for specific reporting purposes (eg. for alcoholic beverages), where batches are identified by an official identification number. Erply does not manage these "batches" automatically 
exciseDeclaration  String  Number and date of the excise declaration for this product (eg. an alcoholic beverage), and other relevant information about the declaration  
exciseFermentedProductUnder6  Double    
exciseWineOver6  Double    
exciseFermentedProductOver6  Double    
exciseIntermediateProduct  Double    
exciseOtherAlcohol  Double    
excisePackaging  Double    
****  ****   
attributes  Array  Additional attributes. Each item looks like this:

Field nameTypeDescription
attributeNameStringAttribute name
attributeTypeStringAttribute type
attributeValueStringAttribute value
 
longAttributes  Array  Additional attributes — longer strings. Each item looks like this:

Field nameTypeDescription
attributeNameStringAttribute name
attributeValueStringAttribute value
 
parameters  Array  List of parameters.

"Product parameters" is a ERPLY add-on module, primarily for web shops. It needs to be set up in a specific way, and is not enabled by default. If you are looking for a simple way to attach extra key-value data to products, see "Attributes" above.

To work with parameters, you first need to define "parameter groups" in Erply backend, and associate these with product groups. Each group defines parameters for a specific type of product. Eg.: inner and outer diameter for bearings; volume, energy rating and physical dimensions for refrigerators etc.

Each parameter record looks like this:

Field nameTypeDescription
parameterIDIntegerParameter ID
parameterNameStringParameter name
parameterTypeStringParameter type. Possible values: TEXT, NUMERIC, BOOLEAN, MULTIVALUE
parameterGroupIDIntegerParameter group ID
parameterValueStringParameter value. Not set for MULTIVALUE parameters.
parameterOptionsArrayOnly for MULTIVALUE parameters — shows which optins from the multi-select list are enabled for this particular item.

Each item in array has the following attributes:

optionID - Integer
optionName - String
optionAdditionalPrice - Decimal.

To have getProducts return product parameters, set input field "getParameters" to 1.