Download OpenAPI specification:Download
REST API of the Adore e-shop for the shopfront and integrations.
Reference of the Adore backend JSON API (Laravel, simploSHOP core + Adore theme).
This specification describes endpoints, parameters and response shapes. Cross-cutting
conventions (how embed, only, filters and pagination work, headers, errors) and
multi-step flows (e.g. how to show stock availability) are described in the guides:
Scope today: products, product variations and the Adore restock endpoints. Write operations
(POST, PATCH, DELETE) on products and variations exist for the admin and are not
documented here yet.
Paginated list of products the caller may access. Guests and customers see only active,
non-hidden products accessible to their customer group; admin users with products:read
see all.
Listings on the shopfront (category, search) use POST /api/v0/products/filter instead,
which understands shopfront filter URLs.
| embed | string Examples:
Comma-separated embeds returned under |
| only | string Example: only=id,code,stock_state Comma-separated props to return ( |
| except | string Comma-separated props to leave out. Cannot be combined with |
| filters | string Example: filters=W3siZiI6InByb2R1Y3RfaWQiLCJvIjoiZXEiLCJ2Ijo3MX1d Base64-encoded JSON array of conditions |
| sort | string Comma-separated sort fields, |
| search | string <= 100 characters Full-text search (max 100 characters). Enables the sort field |
| paginate | integer Enum: 0 1
|
| page | integer >= 1 Default: 1 |
| per_page | integer >= 1 Default: 100 Items per page. No upper limit is enforced; keep it reasonable. |
| Language-Preference | string Example: cs-CZ Locale(s) of multilingual props in the response: |
| Currency-Preference | string Example: CZK Currency ID(s) of money props in the response. With one currency a money prop is
|
{- "items": [
- {
- "id": 0,
- "name": "string",
- "slug": "string",
- "short_description": "string",
- "description": "string",
- "code": "string",
- "sku": "string",
- "ean": "string",
- "brand_id": 0,
- "default_category_id": 0,
- "product_type": 0,
- "is_active": true,
- "is_hidden": true,
- "has_variations": true,
- "update_stock": true,
- "stock_state": 0,
- "reserved_state": 0,
- "expected_count": 0,
- "expected_date_min": "2026-11-20T06:00:00+0100",
- "expected_date_max": "2026-11-20T06:00:00+0100",
- "expected_days": 0,
- "product_availability_id": 0,
- "purchasable_since": "2026-11-20T06:00:00+0100",
- "purchasable_until": "2026-11-20T06:00:00+0100",
- "min_purchasable_amount": 0,
- "max_purchasable_amount": 0,
- "step_purchasable_amount": 0,
- "price": {
- "value": 0,
- "formatted": "string"
}, - "taxed_price": {
- "value": 0,
- "formatted": "string"
}, - "created_at": "2026-11-20T06:00:00+0100",
- "updated_at": "2026-11-20T06:00:00+0100",
- "_links": [
- {
- "href": "string",
- "rel": "string",
- "type": "string"
}
], - "_embedded": {
- "expected_restocks": {
- "items": [
- {
- "datetime": "2026-11-20T06:00:00+0100",
- "count": 0
}
], - "total_count": 0
}, - "additional_data": {
- "product_variation_type": "unknown",
- "available_lead_time_days": 0
}, - "stock_states": [
- {
- "stock_id": 0,
- "state": 0
}
], - "product_variations": [
- {
- "id": 0,
- "product_id": 0,
- "name": "string",
- "code": "string",
- "sku": "string",
- "ean": "string",
- "is_active": true,
- "is_default": true,
- "is_hidden": true,
- "position": 0,
- "update_stock": true,
- "stock_state": 0,
- "reserved_state": 0,
- "expected_count": 0,
- "expected_date_min": "2026-11-20T06:00:00+0100",
- "expected_date_max": "2026-11-20T06:00:00+0100",
- "product_availability_id": 0,
- "purchasable_since": "2026-11-20T06:00:00+0100",
- "min_purchasable_amount": 0,
- "max_purchasable_amount": 0,
- "step_purchasable_amount": 0,
- "price": {
- "value": 0,
- "formatted": "string"
}, - "taxed_price": {
- "value": 0,
- "formatted": "string"
}, - "created_at": "2026-11-20T06:00:00+0100",
- "updated_at": "2026-11-20T06:00:00+0100",
- "_links": [
- {
- "href": "string",
- "rel": "string",
- "type": "string"
}
], - "_embedded": {
- "expected_restocks": {
- "items": [
- {
- "datetime": null,
- "count": null
}
], - "total_count": 0
}, - "additional_data": {
- "is_included_in_feed": true,
- "product_variation_type": "unknown",
- "available_lead_time_days": 0
}, - "stock_states": [
- {
- "stock_id": 0,
- "state": 0
}
], - "product_availability": { },
- "properties": [
- {
- "product_property_id": 0,
- "product_property_attribute_id": 0,
- "attribute_name": "string",
- "property_name": "string"
}
], - "image_url": "string",
- "computed_prices": { },
- "computed_taxed_prices": { },
- "quantity_prices": [
- { }
]
}
}
], - "active_product_variations_count": 0,
- "product_availability": { },
- "computed_prices": {
- "price": {
- "value": 0,
- "formatted": "string"
}, - "discounted_price": {
- "value": 0,
- "formatted": "string"
}
}, - "computed_taxed_prices": {
- "taxed_price": {
- "value": 0,
- "formatted": "string"
}, - "discounted_taxed_price": {
- "value": 0,
- "formatted": "string"
}
}, - "urls": { },
- "default_image_url": "string"
}
}
], - "_meta": {
- "page": 0,
- "total_pages": 0,
- "records": 0,
- "per_page": 0
}
}Product detail. filters, sort and search are not allowed here. The embeds
product_review_parameters and product_review_parameter_ratings are available only on
this endpoint (not in lists).
| productId required | integer |
| embed | string Examples:
Comma-separated embeds returned under |
| only | string Example: only=id,code,stock_state Comma-separated props to return ( |
| except | string Comma-separated props to leave out. Cannot be combined with |
| Language-Preference | string Example: cs-CZ Locale(s) of multilingual props in the response: |
| Currency-Preference | string Example: CZK Currency ID(s) of money props in the response. With one currency a money prop is
|
{- "id": 71,
- "code": "1101310",
- "stock_state": 50,
- "expected_count": 0,
- "expected_date_min": null,
- "has_variations": true,
- "_embedded": {
- "expected_restocks": {
- "items": [
- {
- "datetime": "2026-05-06T00:00:00+0000",
- "count": 70000
}, - {
- "datetime": null,
- "count": 120000
}
], - "total_count": 190000
}, - "additional_data": {
- "product_variation_type": "variant",
- "available_lead_time_days": 3
}
}
}Returns the products of a shopfront listing (category, brand, search, filter page) for the
given shopfront URL, together with the available filters, sort options and pagination.
Filters, sorting and pagination are read from request_uri; the query parameters
filters, sort and search are not allowed. embed and only apply to the items.
| embed | string Examples:
Comma-separated embeds returned under |
| only | string Example: only=id,code,stock_state Comma-separated props to return ( |
| Language-Preference | string Example: cs-CZ Locale(s) of multilingual props in the response: |
| Currency-Preference | string Example: CZK Currency ID(s) of money props in the response. With one currency a money prop is
|
| request_uri required | string Shopfront path including the query string, e.g. a category URL with filter segments. |
| source | string Optional identifier of the caller. |
{- "request_uri": "/obleceni/tricka?page=2",
- "source": "string"
}{- "request_uri": "string",
- "filters": [
- { }
], - "sort_options": [
- { }
], - "pagination_data": { },
- "products_in_package": [
- { }
], - "additional_data": { },
- "items": [
- {
- "id": 0,
- "name": "string",
- "slug": "string",
- "short_description": "string",
- "description": "string",
- "code": "string",
- "sku": "string",
- "ean": "string",
- "brand_id": 0,
- "default_category_id": 0,
- "product_type": 0,
- "is_active": true,
- "is_hidden": true,
- "has_variations": true,
- "update_stock": true,
- "stock_state": 0,
- "reserved_state": 0,
- "expected_count": 0,
- "expected_date_min": "2026-11-20T06:00:00+0100",
- "expected_date_max": "2026-11-20T06:00:00+0100",
- "expected_days": 0,
- "product_availability_id": 0,
- "purchasable_since": "2026-11-20T06:00:00+0100",
- "purchasable_until": "2026-11-20T06:00:00+0100",
- "min_purchasable_amount": 0,
- "max_purchasable_amount": 0,
- "step_purchasable_amount": 0,
- "price": {
- "value": 0,
- "formatted": "string"
}, - "taxed_price": {
- "value": 0,
- "formatted": "string"
}, - "created_at": "2026-11-20T06:00:00+0100",
- "updated_at": "2026-11-20T06:00:00+0100",
- "_links": [
- {
- "href": "string",
- "rel": "string",
- "type": "string"
}
], - "_embedded": {
- "expected_restocks": {
- "items": [
- {
- "datetime": "2026-11-20T06:00:00+0100",
- "count": 0
}
], - "total_count": 0
}, - "additional_data": {
- "product_variation_type": "unknown",
- "available_lead_time_days": 0
}, - "stock_states": [
- {
- "stock_id": 0,
- "state": 0
}
], - "product_variations": [
- {
- "id": 0,
- "product_id": 0,
- "name": "string",
- "code": "string",
- "sku": "string",
- "ean": "string",
- "is_active": true,
- "is_default": true,
- "is_hidden": true,
- "position": 0,
- "update_stock": true,
- "stock_state": 0,
- "reserved_state": 0,
- "expected_count": 0,
- "expected_date_min": "2026-11-20T06:00:00+0100",
- "expected_date_max": "2026-11-20T06:00:00+0100",
- "product_availability_id": 0,
- "purchasable_since": "2026-11-20T06:00:00+0100",
- "min_purchasable_amount": 0,
- "max_purchasable_amount": 0,
- "step_purchasable_amount": 0,
- "price": {
- "value": 0,
- "formatted": "string"
}, - "taxed_price": {
- "value": 0,
- "formatted": "string"
}, - "created_at": "2026-11-20T06:00:00+0100",
- "updated_at": "2026-11-20T06:00:00+0100",
- "_links": [
- {
- "href": "string",
- "rel": "string",
- "type": "string"
}
], - "_embedded": {
- "expected_restocks": {
- "items": [
- {
- "datetime": null,
- "count": null
}
], - "total_count": 0
}, - "additional_data": {
- "is_included_in_feed": true,
- "product_variation_type": "unknown",
- "available_lead_time_days": 0
}, - "stock_states": [
- {
- "stock_id": 0,
- "state": 0
}
], - "product_availability": { },
- "properties": [
- {
- "product_property_id": 0,
- "product_property_attribute_id": 0,
- "attribute_name": "string",
- "property_name": "string"
}
], - "image_url": "string",
- "computed_prices": { },
- "computed_taxed_prices": { },
- "quantity_prices": [
- { }
]
}
}
], - "active_product_variations_count": 0,
- "product_availability": { },
- "computed_prices": {
- "price": {
- "value": 0,
- "formatted": "string"
}, - "discounted_price": {
- "value": 0,
- "formatted": "string"
}
}, - "computed_taxed_prices": {
- "taxed_price": {
- "value": 0,
- "formatted": "string"
}, - "discounted_taxed_price": {
- "value": 0,
- "formatted": "string"
}
}, - "urls": { },
- "default_image_url": "string"
}
}
]
}Purchasable variants of a product (size, colour, …). Only variations can be bought.
Paginated list of variations. Callers without products:read see only active variations.
Typical use: all variations of one product,
filters=[{"f":"product_id","o":"eq","v":71}] (base64) with paginate=0.
There is no search on this endpoint.
| embed | string Examples:
Comma-separated embeds returned under |
| only | string Example: only=id,code,stock_state Comma-separated props to return ( |
| except | string Comma-separated props to leave out. Cannot be combined with |
| filters | string Example: filters=W3siZiI6InByb2R1Y3RfaWQiLCJvIjoiZXEiLCJ2Ijo3MX1d Base64-encoded JSON array of conditions |
| sort | string Comma-separated sort fields, |
| paginate | integer Enum: 0 1
|
| page | integer >= 1 Default: 1 |
| per_page | integer >= 1 Default: 100 Items per page. No upper limit is enforced; keep it reasonable. |
| Language-Preference | string Example: cs-CZ Locale(s) of multilingual props in the response: |
| Currency-Preference | string Example: CZK Currency ID(s) of money props in the response. With one currency a money prop is
|
{- "items": [
- {
- "id": 0,
- "product_id": 0,
- "name": "string",
- "code": "string",
- "sku": "string",
- "ean": "string",
- "is_active": true,
- "is_default": true,
- "is_hidden": true,
- "position": 0,
- "update_stock": true,
- "stock_state": 0,
- "reserved_state": 0,
- "expected_count": 0,
- "expected_date_min": "2026-11-20T06:00:00+0100",
- "expected_date_max": "2026-11-20T06:00:00+0100",
- "product_availability_id": 0,
- "purchasable_since": "2026-11-20T06:00:00+0100",
- "min_purchasable_amount": 0,
- "max_purchasable_amount": 0,
- "step_purchasable_amount": 0,
- "price": {
- "value": 0,
- "formatted": "string"
}, - "taxed_price": {
- "value": 0,
- "formatted": "string"
}, - "created_at": "2026-11-20T06:00:00+0100",
- "updated_at": "2026-11-20T06:00:00+0100",
- "_links": [
- {
- "href": "string",
- "rel": "string",
- "type": "string"
}
], - "_embedded": {
- "expected_restocks": {
- "items": [
- {
- "datetime": "2026-11-20T06:00:00+0100",
- "count": 0
}
], - "total_count": 0
}, - "additional_data": {
- "is_included_in_feed": true,
- "product_variation_type": "unknown",
- "available_lead_time_days": 0
}, - "stock_states": [
- {
- "stock_id": 0,
- "state": 0
}
], - "product_availability": { },
- "properties": [
- {
- "product_property_id": 0,
- "product_property_attribute_id": 0,
- "attribute_name": "string",
- "property_name": "string"
}
], - "image_url": "string",
- "computed_prices": { },
- "computed_taxed_prices": { },
- "quantity_prices": [
- { }
]
}
}
], - "_meta": {
- "page": 0,
- "total_pages": 0,
- "records": 0,
- "per_page": 0
}
}| productVariationId required | integer |
| embed | string Examples:
Comma-separated embeds returned under |
| only | string Example: only=id,code,stock_state Comma-separated props to return ( |
| except | string Comma-separated props to leave out. Cannot be combined with |
| Language-Preference | string Example: cs-CZ Locale(s) of multilingual props in the response: |
| Currency-Preference | string Example: CZK Currency ID(s) of money props in the response. With one currency a money prop is
|
{- "id": 299,
- "product_id": 71,
- "code": "1101310-01",
- "is_active": true,
- "stock_state": 50,
- "expected_count": 0,
- "expected_date_min": null,
- "_embedded": {
- "expected_restocks": {
- "items": [
- {
- "datetime": "2025-03-20T00:00:00+0000",
- "count": 5000
}, - {
- "datetime": null,
- "count": 20000
}
], - "total_count": 25000
}, - "additional_data": {
- "is_included_in_feed": true,
- "product_variation_type": "variant",
- "available_lead_time_days": 3
}
}
}Adore theme endpoints with the planned restocks (ordered goods) synchronized from Vario.
For new code prefer the expected_restocks embed on products and variations.
Restock rows of one variation, as synchronized from Vario (quantityIncoming).
Not paginated. Prefer the expected_restocks embed on the variation, which returns the
same data without an extra request.
| productVariationId required | integer |
| filters | string Example: filters=W3siZiI6InByb2R1Y3RfaWQiLCJvIjoiZXEiLCJ2Ijo3MX1d Base64-encoded JSON array of conditions |
| sort | string Comma-separated sort fields, |
| only | string Example: only=id,code,stock_state Comma-separated props to return ( |
{- "items": [
- {
- "id": 0,
- "product_variation_id": 0,
- "datetime": "2026-11-20T06:00:00+0100",
- "count": 0
}
]
}All restock rows, paginated by default (per_page 100). Filter by variations with
filters=[{"f":"product_variation_id","o":"in","v":[299,300]}] (base64) and use
paginate=0 to get all rows at once. Rows of inactive variations are included.
Prefer the expected_restocks embed on product variations (or products, which return the
sums over active variations).
| filters | string Example: filters=W3siZiI6InByb2R1Y3RfaWQiLCJvIjoiZXEiLCJ2Ijo3MX1d Base64-encoded JSON array of conditions |
| sort | string Comma-separated sort fields, |
| only | string Example: only=id,code,stock_state Comma-separated props to return ( |
| paginate | integer Enum: 0 1
|
| page | integer >= 1 Default: 1 |
| per_page | integer >= 1 Default: 100 Items per page. No upper limit is enforced; keep it reasonable. |
{- "items": [
- {
- "id": 0,
- "product_variation_id": 0,
- "datetime": "2026-11-20T06:00:00+0100",
- "count": 0
}
], - "_meta": {
- "page": 0,
- "total_pages": 0,
- "records": 0,
- "per_page": 0
}
}