Products
There is quite a lot to cover on products in Daalder. Below are some of the basics that are good to know.
Setting up a structure
Before starting to add products it's a good idea to define an initial structure for your products.
Primary:
Product attribute sets
A group of products that have the same attributes
For example: T-shirts
, Jeans
, Shoes
, etc.
Attributes
Individual quality or characteristic ascribed to a product
For example: size
, color
or material
Attribute options
The possible values of an attribute
For example: if size
has a specific set of possible values (Small
, Medium
, Large
, etc.), every one of these values would be an attribute option.
Attribute options are only needed if the attribute can be defined this way. Price
, for example, cannot reasonably be defined as a set of possible values when working with a large number of products.
Price
would be a free field, accepting a string or int types as values.
Putting the above mentioned together, you should make a list of attribute sets, all the attributes in every set, and the possible values of those attributes (if the attribute is not a free field)
Secondary:
Attribute groups
- If you want to display height, weight and depth attributes in a group called dimensions, for example, then dimensions is an an attribute group.
Types
In Daalder there are currently 2 types of products.
Simple
This is the default product type and suitable for most needs.
Wizard
A wizard type product is used when a customer needs a custom configuration of products, and accordingly walk through configuration steps to combine different products.
State
Daalder ships with three fixed product states by default:
- Concept
- Published
- Hidden
You can, of course, extend Daalder to add more product states.
Pricing
Daalder has support for:
- Multi currency (different prices in different currencies for a single product).
- Customer specific pricing.
- Customer group specific pricing.
- Bulk pricing.
Product prices are presented by the Daalder API in the following format:
"prices": [
{
"price": "47499.00",
"price_excluding_vat": "37999.20",
"currency": "kr",
"min_order_amount": 1,
"vat_rate_percentage": 25,
"type": "default"
}
],
API calls
Endpoint: /products
Endpoint | Method | Payload |
---|---|---|
/products | GET |
|
/products/:product |
GET |
|
/products/ean/:ean |
GET |
|
/products/sku/:sku |
GET |
|
/products | POST |
product payload |
/products/:product |
PUT |
update product payload |
/products/:product |
DELETE |
Product payload
{
sku*: string(4-45),
name*: string(250),
ean: nullable|digits(13),
is_visible: boolean,
status: boolean,
url,
profit: num,
product_type_id*: from a selection of possible types,
productattributeset_id*: int|(productattributeset/id)**,
brand: (brand/id)**,
exclude_bol_export: boolean,
include_scraped_price: boolean,
is_visible_overview: boolean,
price*: digits with (1-4) digits after (.,),
list_price: nullable|same validation as price,
specialprice: same validation as price,
purchase: same validation as price,
bulkprice: same validation as price,
purchasepricebulk: same validation as price,
brutodropshipprice: same validation as price,
deliverydropshipnl: same validation as price,
deliverydropshipbe: same validation as price,
media: [{
int|(media/id)**
}]
}
*required
** must exist in table/column
Update product payload
{
sku: string(4-45),
name: string(250),
ean: nullable|digits(13),
type: string,
price: digits with (1-4) digits after (.,),
list_price: nullable|same validation as price,
profit: num,
description: string,
url: string,
productattributeset_id: int|(productattributeset/id)**,
group_id: int"(groups/id)**,
meta_description: string,
meta_keyword: string,
meta_title: string,
search_aliases: string,
is_visible: boolean,
include_scraped_price: boolean,
exclude_bol_export: boolean,
is_visible_overview: boolean,
weight: int,
brand: (brand/id)**,
shipping_time_id: int|(shipping_times/id)**,
shipping_tier_id: int|(shipping_tiers/id)**,
}
*required ** must exist in table/column
Reference available fields:
Name | Type | Remarks |
---|---|---|
id | integer | |
sku | string | |
ean | string | |
price | Price | |
margin | string | |
stock | Stock | |
name | string | |
short_description | text | |
description | text | |
stars | integer | |
is_visible | boolean | |
visible | deprecated | |
status | deprecated | |
image | deprecated | |
url | string | |
cost_price | string | |
vat_rate_id | Vat Rate | |
profit | deprecated | |
marge | ||
parent_id | deprecated | |
absolute_marge | ||
calculated_price | ||
include_scraped_price | ||
supplier_id | ||
brand_id | ||
group_id | ||
product_type_id | ||
productattributeset_id | ||
producttemplate_id | ||
meta_description | ||
meta_keyword | ||
meta_title | ||
shippingscale | ||
pickup | ||
freeshippingnl | ||
freeshippingbe | ||
sample | ||
video | ||
bulkprice | ||
bulkamount | ||
delivery | ||
brutodropshipprice | ||
deliverydropshipnl | ||
deliverydropshipbe | ||
weight | ||
is_for_sale | ||
is_for_purchase | ||
sale_unit_id | ||
is_visible_overview | ||
pages | ||
productattributeset | ||
activeStores | ||
stores | ||
projects | ||
procurements | ||
preferredProcurements | ||
dropShippingProcurements | ||
saleUnit | ||
article_group | ||
productvariations | ||
should_push_variations | ||
purchase | ||
brand | ||
shippingTime | ||
shippingTier | ||
activities | ||
priceRules | ||
group | ||
vatRate | ||
price_excluding_vat | ||
special_price_excluding_vat | ||
pushed_at | ||
out_of_stock_start_at | ||
out_of_stock_end_at | ||
deleted_at | ||
updated_at | ||
created_at | ||
type | ||
productProductProperties | ||
productproperties | ||
upsells | ||
combinationUpsells | ||
activeCombinationUpsells | ||
list_price | ||
variations |
- required fields