---
url: /objects.md
---
# Object Types

**in preparation** - not yet available in templates

## AccountingDocument

**Attributes of object AccountingDocument**

| Name | Type | Description |
|---|---|---|
| code | string | Code |
| name | string | Document name (e.g. Invoice 2330011) |
| date | datetime | Issue date |
| totalPrice | [Price](#price) | Total price |
| pdfUrl | [Url](#url) | PDF download URL |

Examples:

```twig
{{ accountingdocument.code }}
{{ accountingdocument.name }}
{{ accountingdocument.date|date('d. m. Y H:i') }}
{{ accountingdocument.totalPrice }} {# Price #}
{{ accountingdocument.pdfUrl }} {# Url #}
```

## Actuality

**Attributes of object Actuality**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| name | string | Name |
| date | datetime | Date |
| url | [Url](#url) | Actuality URL or external URL (takes precedence) |
| annotation | string | null | Annotation |
| text | string | null | Text |
| image | [Image](#image) | null | Main image |

Examples:

```twig
{{ actuality.id }}
{{ actuality.name }}
{{ actuality.date|date('d. m. Y H:i') }}
{{ actuality.url }} {# Url #}
{% if actuality.annotation %} {{ actuality.annotation }} {% endif %}
{% if actuality.text %} {{ actuality.text }} {% endif %}
{% if actuality.image %} {{ actuality.image }} {# Image #} {% endif %}
```

## Address

**Attributes of object Address**

| Name | Type | Description |
|---|---|---|
| name | [Address/Name](#address-name) | Name |
| city | string | null | City |
| company | string | null | Company |
| companyId | string | null | Company ID |
| email | string | null | Email |
| phone | string | null | Phone |
| region | string | null | Region (state, district, ...) |
| street | string | null | Street and house number |
| vatId | string | null | VAT ID |
| web | string | null | Website URL |
| zip | string | null | ZIP code |
| purpose | [Address/AddressPurpose](#address-addresspurpose) | null | Contact purpose |
| country | [Address/Country](#address-country) | null | Country |

Examples:

```twig
{{ address.name }} {# Name #}
{% if address.city %} {{ address.city }} {% endif %}
{% if address.company %} {{ address.company }} {% endif %}
{% if address.companyId %} {{ address.companyId }} {% endif %}
{% if address.email %} {{ address.email }} {% endif %}
{% if address.phone %} {{ address.phone }} {% endif %}
{% if address.region %} {{ address.region }} {% endif %}
{% if address.street %} {{ address.street }} {% endif %}
{% if address.vatId %} {{ address.vatId }} {% endif %}
{% if address.web %} {{ address.web }} {% endif %}
{% if address.zip %} {{ address.zip }} {% endif %}
{% if address.purpose %} {{ address.purpose }} {# AddressPurpose #} {% endif %}
{% if address.country %} {{ address.country }} {# Country #} {% endif %}
```

## Address/AddressPurpose

**Attributes of object Address/AddressPurpose**

| Name | Type | Description |
|---|---|---|
| headline | string | Headline |

Examples:

```twig
{{ addresspurpose.headline }}
```

## Address/Country

**Attributes of object Address/Country**

| Name | Type | Description |
|---|---|---|
| code | string | Code (e.g. cz) |
| flagCircleUrl | string | Flag SVG URL (circular) |
| flagUrl | string | Flag SVG URL (rectangular 3:4) |
| name | string | Name |
| eU | bool | Is in EU? |

Examples:

```twig
{{ country.code }}
{{ country.flagCircleUrl }}
{{ country.flagUrl }}
{{ country.name }}
{% if country.eU %} ... {% endif %}
```

## Address/Name

**Attributes of object Address/Name**

| Name | Type | Description |
|---|---|---|
| first | string | null | First name |
| last | string | null | Last name |

Examples:

```twig
{{ name }}
{% if name.first %} {{ name.first }} {% endif %}
{% if name.last %} {{ name.last }} {% endif %}
```

## Addresses

**Attributes of object Addresses**

| Name | Type | Description |
|---|---|---|
| delivery | [Address](#address) | Delivery address |
| invoice | [Address](#address) | Billing address |

Examples:

```twig
{{ addresses.delivery }} {# Address #}
{{ addresses.invoice }} {# Address #}
```

## Admin

E-shop administrator

**Attributes of object Admin**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| email | string | Email |
| phone | string | Phone |
| position | string | Position |
| name | [Address/Name](#address-name) | First and last name |
| image | [Image](#image) | Image |
| text | html | null | Text |

Examples:

```twig
{{ admin.id }}
{{ admin.email }}
{{ admin.phone }}
{{ admin.position }}
{{ admin.name }} {# Name #}
{{ admin.image }} {# Image #}
{% if admin.text %} {{ admin.text }} {% endif %}
```

## AnalyticsReport

**Attributes of object AnalyticsReport**

| Name | Type | Description |
|---|---|---|
| name | string | Name |
| url | [Url](#url) | URL |

Examples:

```twig
{{ analyticsreport.name }}
{{ analyticsreport.url }} {# Url #}
```

## Article

**Attributes of object Article**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| commentType | string | Comment type for this entity |
| name | string | Name |
| datePublished | datetime | Publication date |
| attributes | [Attribute/AttributeInstance](#attribute-attributeinstance)\[] | Attributes and values |
| author | [Author](#author) | Author |
| files | [File](#file)\[] | Files (manuals, specifications, ...) |
| images | [Image](#image)\[] | Images |
| topic | [Topic](#topic) | Topic (classification) |
| topics | [Topic](#topic)\[] | Topics |
| url | [Url](#url) | Article URL |
| videos | [Video](#video)\[] | Videos |
| text | html | null | Text |
| attribute | [Attribute/AttributeInstance](#attribute-attributeinstance) | null | Attribute with values |
| image | [Image](#image) | null | Main image |
| seo | [Seo](#seo) | null | SEO attributes |
| contentGrid | array | null | Content grid |

Examples:

```twig
{{ article.id }}
{{ article.commentType }}
{{ article.name }}
{{ article.datePublished|date('d. m. Y H:i') }}
{% for attributeInstance in article.attributes %} ... {% endfor %}
{{ article.author }} {# Author #}
{% for file in article.files %} ... {% endfor %}
{% for image in article.images %} ... {% endfor %}
{{ article.topic }} {# Topic #}
{% for topic in article.topics %} ... {% endfor %}
{{ article.url }} {# Url #}
{% for video in article.videos %} ... {% endfor %}
{% if article.text %} {{ article.text }} {% endif %}
{% if article.attribute %} {{ article.attribute }} {# AttributeInstance #} {% endif %}
{% if article.image %} {{ article.image }} {# Image #} {% endif %}
{% if article.seo %} {{ article.seo }} {# Seo #} {% endif %}
{% if article.contentGrid %} {{ article.contentGrid }} {% endif %}
```

## Attribute/Attribute

**Attributes of object Attribute/Attribute**

| Name | Type | Description |
|---|---|---|
| id | int | ID |
| name | string | Name |
| values | [Attribute/AttributeValue](#attribute-attributevalue)\[] | Values |
| text | string | null | Description |
| group | [Attribute/AttributeGroup](#attribute-attributegroup) | null | Attribute group |
| meaning | [AttributeMeaning](#attributemeaning) | null | Meaning |
| image | [Image](#image) | null | Image |

Examples:

```twig
{{ attribute.id }}
{{ attribute.name }}
{% for attributeValue in attribute.values %} ... {% endfor %}
{% if attribute.text %} {{ attribute.text }} {% endif %}
{% if attribute.group %} {{ attribute.group }} {# AttributeGroup #} {% endif %}
{% if attribute.meaning %} {{ attribute.meaning }} {# AttributeMeaning #} {% endif %}
{% if attribute.image %} {{ attribute.image }} {# Image #} {% endif %}
```

## Attribute/AttributeGroup

**Attributes of object Attribute/AttributeGroup**

| Name | Type | Description |
|---|---|---|
| id | int | ID |

Examples:

```twig
{{ attributegroup.id }}
```

## Attribute/AttributeInstance

**Attributes of object Attribute/AttributeInstance**

| Name | Type | Description |
|---|---|---|
| name | string | Name |
| valuesHtml | html | Value names including optional link and title, separated by comma |
| values | [Attribute/AttributeValueInstance](#attribute-attributevalueinstance)\[] | Values |
| description | string | null | Description |
| group | [Attribute/AttributeGroup](#attribute-attributegroup) | null | Attribute group |
| image | [Image](#image) | null | Image |

Examples:

```twig
{{ attributeinstance.name }}
{{ attributeinstance.valuesHtml }}
{% for attributeValueInstance in attributeinstance.values %} ... {% endfor %}
{% if attributeinstance.description %} {{ attributeinstance.description }} {% endif %}
{% if attributeinstance.group %} {{ attributeinstance.group }} {# AttributeGroup #} {% endif %}
{% if attributeinstance.image %} {{ attributeinstance.image }} {# Image #} {% endif %}
```

## Attribute/AttributeValue

Attribute value

**Attributes of object Attribute/AttributeValue**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| name | string | Name |
| attribute | [Attribute/Attribute](#attribute-attribute) | Attribute |
| colorCode | string | null | Hex color code |
| text | html | null | Text |
| image | [Image](#image) | null | Image |

Examples:

```twig
{{ attributevalue.id }}
{{ attributevalue.name }}
{{ attributevalue.attribute }} {# Attribute #}
{% if attributevalue.colorCode %} {{ attributevalue.colorCode }} {% endif %}
{% if attributevalue.text %} {{ attributevalue.text }} {% endif %}
{% if attributevalue.image %} {{ attributevalue.image }} {# Image #} {% endif %}
```

## Attribute/AttributeValueInstance

**Attributes of object Attribute/AttributeValueInstance**

| Name | Type | Description |
|---|---|---|
| nameHtml | html | Name including title and optional link |
| colorCode | string | null | Hex color code |
| text | string | null | Description |
| unit | string | null | Unit |
| image | [Image](#image) | null | Image |
| name | string | int | float | null | Name |

Examples:

```twig
{{ attributevalueinstance }}
{{ attributevalueinstance.nameHtml }}
{% if attributevalueinstance.colorCode %} {{ attributevalueinstance.colorCode }} {% endif %}
{% if attributevalueinstance.text %} {{ attributevalueinstance.text }} {% endif %}
{% if attributevalueinstance.unit %} {{ attributevalueinstance.unit }} {% endif %}
{% if attributevalueinstance.image %} {{ attributevalueinstance.image }} {# Image #} {% endif %}
{% if attributevalueinstance.name %} {{ attributevalueinstance.name }} {% endif %}
```

## AttributeMeaning

**Attributes of object AttributeMeaning**

| Name | Type | Description |
|---|---|---|
| code | string | Code |

Examples:

```twig
{{ attributemeaning.code }}
```

## Author

Article author

**Attributes of object Author**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| name | [Address/Name](#address-name) | First and last name |
| image | [Image](#image) | Image |
| socialProfiles | [SocialProfile](#socialprofile)\[] | Social networks |
| url | [Url](#url) | URL |
| email | string | null | Email |
| nickname | string | null | Nickname |
| phone | string | null | Phone |
| text | html | null | Text |

Examples:

```twig
{{ author.id }}
{{ author.name }} {# Name #}
{{ author.image }} {# Image #}
{% for socialProfile in author.socialProfiles %} ... {% endfor %}
{{ author.url }} {# Url #}
{% if author.email %} {{ author.email }} {% endif %}
{% if author.nickname %} {{ author.nickname }} {% endif %}
{% if author.phone %} {{ author.phone }} {% endif %}
{% if author.text %} {{ author.text }} {% endif %}
```

## Availability

**Attributes of object Availability**

| Name | Type | Description |
|---|---|---|
| availableAmount | int | Available pieces |
| availableAmountExpectedToStorageRoom | int | Available pieces by source warehouse to be transferred to the selected warehouse (total) |
| availableAmountInShowroom | int | Available showroom pieces |
| availableAmountInStockroom | int | Available pieces in a specific stock room |
| availableAmountInStorageCenter | int | Available pieces in a specific storage center |
| availableAmountOnWayToStorageRoom | int | Available pieces by source warehouse currently in transit to the selected warehouse (total) |
| availableDemandsAmountFromSupplierToStorageRoom | int | Available pieces from supplier demand that will be available at the selected warehouse (total) |
| hours | int | Availability in hours |
| totalAmount | int | Total pieces (without deducting reservations) |
| inShowroom | bool | Is in showroom? |
| inStock | bool | Is in stock? |
| preorder | bool | Is preorder? |
| watchdogSupported | bool | Is watchdog supported? |
| deliveryOptions | [DeliveryOption](#deliveryoption)\[] | Available delivery options with dates |
| availableAmountsExpectedToStorageRoom | [ExpectedAmount](#expectedamount)\[] | Available pieces by source warehouse to be transferred to the selected warehouse (list) |
| availableAmountsOnWayToStorageRoom | [ExpectedAmount](#expectedamount)\[] | Available pieces by source warehouse currently in transit to the selected warehouse (list) |
| availableDemandsFromSupplierToStorageRoom | [ExpectedSupplierAmount](#expectedsupplieramount)\[] | Available pieces from supplier demand that will be available at the selected warehouse (list) |
| text | string | null | Availability description |
| dateExpected | datetime | null | Expected restocking date |
| deliveryOption | [DeliveryOption](#deliveryoption) | null | Fastest delivery option |

Examples:

```twig
{{ availability.availableAmount }}
{{ availability.availableAmountExpectedToStorageRoom }}
{{ availability.availableAmountInShowroom }}
{{ availability.availableAmountInStockroom }}
{{ availability.availableAmountInStorageCenter }}
{{ availability.availableAmountOnWayToStorageRoom }}
{{ availability.availableDemandsAmountFromSupplierToStorageRoom }}
{{ availability.hours }}
{{ availability.totalAmount }}
{% if availability.inShowroom %} ... {% endif %}
{% if availability.inStock %} ... {% endif %}
{% if availability.preorder %} ... {% endif %}
{% if availability.watchdogSupported %} ... {% endif %}
{% for deliveryOption in availability.deliveryOptions %} ... {% endfor %}
{% for expectedAmount in availability.availableAmountsExpectedToStorageRoom %} ... {% endfor %}
{% for expectedAmount in availability.availableAmountsOnWayToStorageRoom %} ... {% endfor %}
{% for expectedSupplierAmount in availability.availableDemandsFromSupplierToStorageRoom %} ... {% endfor %}
{% if availability.text %} {{ availability.text }} {% endif %}
{{ availability.dateExpected|date('d. m. Y H:i') }}
{% if availability.deliveryOption %} {{ availability.deliveryOption }} {# DeliveryOption #} {% endif %}
```

## AvailableUpsellGroup

**Attributes of object AvailableUpsellGroup**

| Name | Type | Description |
|---|---|---|
| id | int | ID |
| name | string | Group name |
| singleSelection | bool | Selection mode |
| upsells | [Upsell](#upsell)\[] | Available upsells |
| code | string | null | Group name |

Examples:

```twig
{{ availableupsellgroup.id }}
{{ availableupsellgroup.name }}
{% if availableupsellgroup.singleSelection %} ... {% endif %}
{% for upsell in availableupsellgroup.upsells %} ... {% endfor %}
{% if availableupsellgroup.code %} {{ availableupsellgroup.code }} {% endif %}
```

## Banner

Banner

**Attributes of object Banner**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| validFrom | datetime | Valid from |
| validTo | datetime | Valid to |
| vector | bool | Vector image |
| section | [BannerSection](#bannersection) | Banner section |
| height | int | null | Height (px) |
| width | int | null | Width (px) |
| alt | string | null | Description |
| backgroundColorCode | string | null | Background color hex code |
| ctaClass | string | null | CTA class (button) |
| ctaText | string | null | CTA text (button) |
| name | string | null | Name |
| url | string | null | Url |
| urlTarget | string | null | Link open target |
| text | html | null | Text |
| image | [Image](#image) | null | Image |
| product | [Product](#product) | null | Product |

Examples:

```twig
{{ banner.id }}
{{ banner.validFrom|date('d. m. Y H:i') }}
{{ banner.validTo|date('d. m. Y H:i') }}
{% if banner.vector %} ... {% endif %}
{{ banner.section }} {# BannerSection #}
{% if banner.height %} {{ banner.height }} {% endif %}
{% if banner.width %} {{ banner.width }} {% endif %}
{% if banner.alt %} {{ banner.alt }} {% endif %}
{% if banner.backgroundColorCode %} {{ banner.backgroundColorCode }} {% endif %}
{% if banner.ctaClass %} {{ banner.ctaClass }} {% endif %}
{% if banner.ctaText %} {{ banner.ctaText }} {% endif %}
{% if banner.name %} {{ banner.name }} {% endif %}
{% if banner.url %} {{ banner.url }} {% endif %}
{% if banner.urlTarget %} {{ banner.urlTarget }} {% endif %}
{% if banner.text %} {{ banner.text }} {% endif %}
{% if banner.image %} {{ banner.image }} {# Image #} {% endif %}
{% if banner.product %} {{ banner.product }} {# Product #} {% endif %}
```

## BannerSection

Banner section

**Attributes of object BannerSection**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| height | int | null | Height (px) |
| width | int | null | Width (px) |
| code | string | null | Section code |
| name | string | null | Name |

Examples:

```twig
{{ bannersection.id }}
{% if bannersection.height %} {{ bannersection.height }} {% endif %}
{% if bannersection.width %} {{ bannersection.width }} {% endif %}
{% if bannersection.code %} {{ bannersection.code }} {% endif %}
{% if bannersection.name %} {{ bannersection.name }} {% endif %}
```

## Brand

**Attributes of object Brand**

| Name | Type | Description |
|---|---|---|
| id | int | ID |
| headline | string | Headline |
| name | string | Name |
| flagImportant | bool | Important |
| publicContacts | [Address](#address)\[] | Public contacts |
| categories | [Category](#category)\[] | Brand categories (pretty URL or classic filter) |
| url | [Url](#url) | Brand URL |
| categoryUrl | [Url](#url) | Brand category URL |
| code | string | null | Code |
| web | string | null | Brand website |
| text | html | null | Text |
| image | [Image](#image) | null | Image |
| seo | [Seo](#seo) | null | SEO attributes |
| contentGrid | array | null | Content grid |

Examples:

```twig
{{ brand.id }}
{{ brand.headline }}
{{ brand.name }}
{% if brand.flagImportant %} ... {% endif %}
{% for address in brand.publicContacts %} ... {% endfor %}
{% for category in brand.categories %} ... {% endfor %}
{{ brand.url }} {# Url #}
{{ brand.categoryUrl }} {# Url #}
{% if brand.code %} {{ brand.code }} {% endif %}
{% if brand.web %} {{ brand.web }} {% endif %}
{% if brand.text %} {{ brand.text }} {% endif %}
{% if brand.image %} {{ brand.image }} {# Image #} {% endif %}
{% if brand.seo %} {{ brand.seo }} {# Seo #} {% endif %}
{% if brand.contentGrid %} {{ brand.contentGrid }} {% endif %}
```

## BrandCategory

**Attributes of object BrandCategory**

| Name | Type | Description |
|---|---|---|
| brand | [Brand](#brand) | Brand |
| category | [Category](#category) | Category |
| url | [Url](#url) | URL |
| parent | [BrandCategory](#brandcategory) | null | Parent category |

Examples:

```twig
{{ brandcategory.brand }} {# Brand #}
{{ brandcategory.category }} {# Category #}
{{ brandcategory.url }} {# Url #}
{% if brandcategory.parent %} {{ brandcategory.parent }} {# BrandCategory #} {% endif %}
```

## Breadcrumb

**Attributes of object Breadcrumb**

| Name | Type | Description |
|---|---|---|
| label | string | Label |
| url | [Url](#url) | null | URL (the last breadcrumb has no URL) |

Examples:

```twig
{{ breadcrumb.label }}
{% if breadcrumb.url %} {{ breadcrumb.url }} {# Url #} {% endif %}
```

## Bundle

**Attributes of object Bundle**

| Name | Type | Description |
|---|---|---|
| multiPack | bool | Is a multi-pack? (multiple pieces of another item) |
| parts | [BundlePart](#bundlepart)\[] | Bundle parts (component items) |
| price | [Price](#price) | null | Bundle price (price before discount is sum of part prices) |

Examples:

```twig
{% if bundle.multiPack %} ... {% endif %}
{% for bundlePart in bundle.parts %} ... {% endfor %}
{% if bundle.price %} {{ bundle.price }} {# Price #} {% endif %}
```

## BundlePart

**Attributes of object BundlePart**

| Name | Type | Description |
|---|---|---|
| quantity | int | Quantity of this part in the bundle |
| item | [Item](#item) | Component item (stock item) |
| product | [Product](#product) | Component product |

Examples:

```twig
{{ bundlepart.quantity }}
{{ bundlepart.item }} {# Item #}
{{ bundlepart.product }} {# Product #}
```

## Category

**Attributes of object Category**

| Name | Type | Description |
|---|---|---|
| id | int | Internal category ID |
| productCount | int | Number of products in category (approximate) |
| productInStockCount | int | Number of products in stock in category (approximate) |
| totalStockQuantity | int | Total stock quantity in category (approximate) |
| commentType | string | Comment type for this entity |
| headline | string | Headline |
| menuName | string | Category name in menu |
| name | string | Category name |
| flagErotic | bool | Erotic |
| flagImportant | bool | Important |
| noFollow | bool | Should search engines not follow the link? In templates typically: \<a href={{ category.url }} if:rel="category.noFollow ? 'nofollow'"> |
| subcategories | [Category](#category)\[] | Subcategories |
| url | [Url](#url) | URL |
| variantType | [VariantType](#varianttype) | Variant type |
| videos | [Video](#video)\[] | Videos |
| pathNames | array | Path to category (names) |
| pathIds | array | Path to category (IDs) |
| templateAttribute | mixed | Category layout settings |
| subHeadline | string | null | Subheadline |
| text | html | null | Text content |
| parent | [Category](#category) | null | Parent category |
| image | [Image](#image) | null | Image |
| contentGrid | array | null | Content grid |

Examples:

**Category breadcrumb and heading**

```twig
<h1>{{ kategorie.name }}</h1>
{% if kategorie.description %}
<div>{{ kategorie.description }}</div>
{% endif %}
```

**Category subcategories**

```twig
{% for child in kategorie.children %}
<a href="{{ child.url }}">
{% if child.image %}<i:img src="child.image" format="200x200" fill />{% endif %}
{{ child.name }}
</a>
{% endfor %}
```

## Comment

**Attributes of object Comment**

| Name | Type | Description |
|---|---|---|
| depth | int | Nesting depth |
| id | int | Id |
| date | datetime | Date |
| important | bool | Important? |
| replies | [Comment](#comment)\[] | Replies to the post |
| rating | int | null | Rating (1 to 5) |
| authorName | string | null | Author name |
| email | string | null | Author email |
| phone | string | null | Author phone |
| title | string | null | Title |
| text | html | null | Post text |
| admin | [Admin](#admin) | null | E-shop administrator |

Examples:

```twig
{{ comment.depth }}
{{ comment.id }}
{{ comment.date|date('d. m. Y H:i') }}
{% if comment.important %} ... {% endif %}
{% for comment in comment.replies %} ... {% endfor %}
{% if comment.rating %} {{ comment.rating }} {% endif %}
{% if comment.authorName %} {{ comment.authorName }} {% endif %}
{% if comment.email %} {{ comment.email }} {% endif %}
{% if comment.phone %} {{ comment.phone }} {% endif %}
{% if comment.title %} {{ comment.title }} {% endif %}
{% if comment.text %} {{ comment.text }} {% endif %}
{% if comment.admin %} {{ comment.admin }} {# Admin #} {% endif %}
```

## Compatibility/CompatibilityAttribute

**Attributes of object Compatibility/CompatibilityAttribute**

| Name | Type | Description |
|---|---|---|
| id | int | ID |
| name | string | Name |
| values | [Compatibility/CompatibilityAttributeValue](#compatibility-compatibilityattributevalue)\[] | Values |

Examples:

```twig
{{ compatibilityattribute.id }}
{{ compatibilityattribute.name }}
{% for compatibilityAttributeValue in compatibilityattribute.values %} ... {% endfor %}
```

## Compatibility/CompatibilityAttributeValue

Compatibility attribute value

**Attributes of object Compatibility/CompatibilityAttributeValue**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| name | string | Name |
| attribute | [Compatibility/CompatibilityAttribute](#compatibility-compatibilityattribute) | Attribute |

Examples:

```twig
{{ compatibilityattributevalue.id }}
{{ compatibilityattributevalue.name }}
{{ compatibilityattributevalue.attribute }} {# CompatibilityAttribute #}
```

## Customer

Registered customer

**Attributes of object Customer**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| userPointsAvailable | int | Current loyalty program points balance |
| userPointsExpiringOn | int | Number of points expiring on a given date |
| userPointsTotal | int | Total earned loyalty program points |
| name | string | Customer name |
| dateCreated | datetime | Registration date |
| productOnWishlist | bool | Is product on wishlist? |
| vatCharged | bool | Charge VAT |
| wholesale | bool | Wholesaler |
| receipts | [AccountingDocument](#accountingdocument)\[] | Receipts |
| address | [Addresses](#addresses) | Addresses |
| analyticReports | [AnalyticsReport](#analyticsreport)\[] | Analytics reports |
| childOrders | [Order](#order)\[] | Subordinate customer orders |
| orders | [Order](#order)\[] | use App/Template/Repository/TemplateEntityPaginatedCollection | Customer ordersWithout "page" the newest {@see self::ORDERS\_LIMIT} orders are returned as a plainarray. Passing "page" switches to a paginated collection that also exposes`.pagination`, so a template can page through the whole history instead ofrendering it in one request — a wholesale customer can have thousands of orders,and each one renders its items, which is enough to hit the execution-time limit. |
| userPointChanges | [UserPointChange](#userpointchange)\[] | Loyalty program points history |
| alternativeAddresses | array | Customer alternative addresses |
| loyaltyCard | string | null | Loyalty card code |
| socialLoginId | string | null | User ID in the service used for login |

Examples:

**Logged-in customer greeting**

```twig
{% if customer.logged %}
Welcome, {{ customer.name }}
<a href="{{ customer.logoutUrl }}">Logout</a>
{% else %}
<a href="{{ customer.loginUrl }}">Login</a>
{% endif %}
```

## DayBlock

**Attributes of object DayBlock**

| Name | Type | Description |
|---|---|---|
| dayName | string | Day of week name |
| dayNameShort | string | Abbreviated day of week name |
| date | datetime | Date |
| timeBlocks | [TimeBlock](#timeblock)\[] | null | Opening times |

Examples:

```twig
{{ dayblock.dayName }}
{{ dayblock.dayNameShort }}
{{ dayblock.date|date('d. m. Y H:i') }}
{% for timeBlock in dayblock.timeBlocks %} ... {% endfor %}
```

## Delivery

**Attributes of object Delivery**

| Name | Type | Description |
|---|---|---|
| name | string | Name |
| vatRate | float | VAT rate |
| deliveryAddressRequired | bool | Is delivery address required in cart? |
| payment | [Delivery/Payment](#delivery-payment) | Payment method |
| transport | [Delivery/Transport](#delivery-transport) | Delivery method |
| price | [Price](#price) | Price |
| id | int | null | ID |
| freeLimit | [Order/FreeLimit](#order-freelimit) | null | Free delivery threshold |

Examples:

```twig
{{ delivery.name }}
{{ delivery.vatRate }}
{% if delivery.deliveryAddressRequired %} ... {% endif %}
{{ delivery.payment }} {# Payment #}
{{ delivery.transport }} {# Transport #}
{{ delivery.price }} {# Price #}
{% if delivery.id %} {{ delivery.id }} {% endif %}
{% if delivery.freeLimit %} {{ delivery.freeLimit }} {# FreeLimit #} {% endif %}
```

## Delivery/BankAccount

**Attributes of object Delivery/BankAccount**

| Name | Type | Description | Example output |
|---|---|---|---|
| currency | string | Currency |  |
| bankName | string | null | Bank name shown to the customer in payment instructions | Fio banka, a.s. |
| bic | string | null | BIC |  |
| displayBic | string | null | BIC, but only when the customer's bank will ask for it: with an IBANshown AND the customer paying from outside SEPA. Inside SEPA the BIC islegally superfluous (Reg. (EU) 260/2012 Art. 5(7)) and only cluttersthe instructions; an unknown customer country is treated as insideSEPA — most customers are EU and the row is optional extra info. | FIOBCZPP |
| displayIban | string | null | IBAN, but only when the customer actually needs it — i.e. when thelocal format is not usable for them (cross-border customer or anaccount without a local format). | CZ12 3456 7890 1234 5678 9012 |
| displayLocal | string | null | Local (domestic) account format, but only when this customer can useit: a national format is only accepted by the transfer forms of its owncountry's banks, so it renders for a domestic customer (account countryfrom the IBAN prefix matches the customer country) or when the customercountry is unknown. An account without an IBAN has nothing better tooffer, so its local format renders for everyone. | 123456789/2010 |
| holder | string | null | Account holder (payment beneficiary) | Netbiznis s.r.o. |
| iban | string | null | IBAN |  |
| local | string | null | Local format | 123456789/2010 |
| name | string | null | Internal admin-only label of the account - NOT the bank name and neversafe to show a customer: a quarter of the fleet stores things like"CZK", "EUR" or a nickname here. Use bankName for payment instructions. | Fio CZK |

Examples:

```twig
{{ bankaccount }}
{{ bankaccount.currency }}
{% if bankaccount.bankName %} {{ bankaccount.bankName }} {% endif %}
{% if bankaccount.bic %} {{ bankaccount.bic }} {% endif %}
{% if bankaccount.displayBic %} {{ bankaccount.displayBic }} {% endif %}
{% if bankaccount.displayIban %} {{ bankaccount.displayIban }} {% endif %}
{% if bankaccount.displayLocal %} {{ bankaccount.displayLocal }} {% endif %}
{% if bankaccount.holder %} {{ bankaccount.holder }} {% endif %}
{% if bankaccount.iban %} {{ bankaccount.iban }} {% endif %}
{% if bankaccount.local %} {{ bankaccount.local }} {% endif %}
{% if bankaccount.name %} {{ bankaccount.name }} {% endif %}
```

## Delivery/Branch

**Attributes of object Delivery/Branch**

| Name | Type | Description |
|---|---|---|
| code | string | Code |
| name | string | Name |
| address | [Delivery/Branch/Address](#delivery-branch-address) | Address |
| openingHoursLines | string\[] | Opening hours, one printable line per record. Carrier branches carry asingle free-text openTime string, in practice a whole week glued togetherwith literal \<br> tags or newlines — it is split back apart and stripped ofmarkup here. Own stores (StoreBranchRO) build the lines from the store'sWorkingHours relation instead. |
| imageUrl | string | null | Photo of the pickup place |
| mapUrl | string | null | Map link (built from GPS; null when the branch has no coordinates) |
| phone | string | null | Phone |
| pickupInstructions | string | null | Per-place pickup instructions. Carrier branches have none; own stores(StoreBranchRO) read the store-scoped `email-pickup` text. |
| url | string | null | Web page of the pickup place |

Examples:

```twig
{{ branch.code }}
{{ branch.name }}
{{ branch.address }} {# Address #}
{% for item in branch.openingHoursLines %} ... {% endfor %}
{% if branch.imageUrl %} {{ branch.imageUrl }} {% endif %}
{% if branch.mapUrl %} {{ branch.mapUrl }} {% endif %}
{% if branch.phone %} {{ branch.phone }} {% endif %}
{% if branch.pickupInstructions %} {{ branch.pickupInstructions }} {% endif %}
{% if branch.url %} {{ branch.url }} {% endif %}
```

## Delivery/Branch/Address

**Attributes of object Delivery/Branch/Address**

| Name | Type | Description |
|---|---|---|
| city | string | null | City |
| company | string | null | Company name |
| street | string | null | Street and house number |
| country | [Address/Country](#address-country) | null | Country |

Examples:

```twig
{{ address }}
{% if address.city %} {{ address.city }} {% endif %}
{% if address.company %} {{ address.company }} {% endif %}
{% if address.street %} {{ address.street }} {% endif %}
{% if address.country %} {{ address.country }} {# Country #} {% endif %}
```

## Delivery/Carrier

**Attributes of object Delivery/Carrier**

| Name | Type | Description |
|---|---|---|
| code | string | Code |
| name | string | Name |

Examples:

```twig
{{ carrier.code }}
{{ carrier.name }}
```

## Delivery/DeliveryDate

**Attributes of object Delivery/DeliveryDate**

| Name | Type | Description |
|---|---|---|
| dateDelivered | datetime | Delivery date to customer |
| dateSent | datetime | Shipment dispatch date |
| orderDeadline | datetime | Date and time by which the order must be placed to meet deadlines |
| timeDelivered | string | null | Delivery time to customer (e.g. "08:00-12:00") |

Examples:

```twig
{{ deliverydate.dateDelivered|date('d. m. Y H:i') }}
{{ deliverydate.dateSent|date('d. m. Y H:i') }}
{{ deliverydate.orderDeadline|date('d. m. Y H:i') }}
{% if deliverydate.timeDelivered %} {{ deliverydate.timeDelivered }} {% endif %}
```

## Delivery/PackageType

**Attributes of object Delivery/PackageType**

| Name | Type | Description |
|---|---|---|
| code | string | Code |

Examples:

```twig
{{ packagetype.code }}
```

## Delivery/Payment

**Attributes of object Delivery/Payment**

| Name | Type | Description | Example output |
|---|---|---|---|
| inputId | string | ID for binding input with label |  |
| name | string | Name | Bank transfer |
| url | string | Payment URL |  |
| vatRate | float | VAT rate | 21 |
| bankTransfer | bool | Is this a plain bank transfer (the customer wires the money themselves)?The only method whose e-mail may carry transfer coordinates (QR code,account, VS): an online/gateway order gets the pay button instead, andshowing both made customers pay twice (#84679). |  |
| free | bool | Is free? |  |
| inAdvance | bool | Is advance payment required? |  |
| online | bool | Is this an online-gateway payment (card / gateway checkout)?Mirrors the legacy CSablonaPravidla::PAYMENT\_ONLINE grouping exactly, i.e.TemplateRuleMatcher's in\_array($order->getPayment(), \['online', 'paypal', 'ekonto']). |  |
| selected | bool | Is selected? |  |
| price | [Price](#price) | Price |  |
| code | null | string | Code | P123 |
| subcode | null | string | Sub-code | P123 |
| vs | string | null | Variable symbol | 2160001 |
| qRCodeHTML | html | null | HTML image code with QR code for bank transfer payment |  |
| text | html | null | Text |  |
| bankAccount | [Delivery/BankAccount](#delivery-bankaccount) | null | Bank account | 111111111/2010 |
| image | [Image](#image) | null | Image |  |

Examples:

```twig
{{ payment.inputId }}
{{ payment.name }}
{{ payment.url }}
{{ payment.vatRate }}
{% if payment.bankTransfer %} ... {% endif %}
{% if payment.free %} ... {% endif %}
{% if payment.inAdvance %} ... {% endif %}
{% if payment.online %} ... {% endif %}
{% if payment.selected %} ... {% endif %}
{{ payment.price }} {# Price #}
{% if payment.code %} {{ payment.code }} {% endif %}
{% if payment.subcode %} {{ payment.subcode }} {% endif %}
{% if payment.vs %} {{ payment.vs }} {% endif %}
{% if payment.qRCodeHTML %} {{ payment.qRCodeHTML }} {% endif %}
{% if payment.text %} {{ payment.text }} {% endif %}
{% if payment.bankAccount %} {{ payment.bankAccount }} {# BankAccount #} {% endif %}
{% if payment.image %} {{ payment.image }} {# Image #} {% endif %}
```

## Delivery/StoreBranch

**Attributes of object Delivery/StoreBranch**

| Name | Type | Description |
|---|---|---|
| code | string | Code |
| name | string | Name |
| address | [Delivery/Branch/Address](#delivery-branch-address) | Address |
| openingHoursLines | string\[] | Opening hours from the store's WorkingHours relation, one line permerged-day record ("Po-Pá 9:00-17:00"); closed records are skipped. |
| imageUrl | string | null | Photo of the store |
| mapUrl | string | null | Map link (built from GPS; null when the store has no coordinates) |
| phone | string | null | Phone |
| pickupInstructions | string | null | Per-place pickup instructions: the store-scoped `email-pickup` codedtext (spec §3.4 — unconfigured is the normal case and yields null). |
| url | string | null | Web page of the store |

Examples:

```twig
{{ storebranch.code }}
{{ storebranch.name }}
{{ storebranch.address }} {# Address #}
{% for item in storebranch.openingHoursLines %} ... {% endfor %}
{% if storebranch.imageUrl %} {{ storebranch.imageUrl }} {% endif %}
{% if storebranch.mapUrl %} {{ storebranch.mapUrl }} {% endif %}
{% if storebranch.phone %} {{ storebranch.phone }} {% endif %}
{% if storebranch.pickupInstructions %} {{ storebranch.pickupInstructions }} {% endif %}
{% if storebranch.url %} {{ storebranch.url }} {% endif %}
```

## Delivery/Transport

**Attributes of object Delivery/Transport**

| Name | Type | Description |
|---|---|---|
| inputId | string | ID for binding input with label |
| name | string | Name |
| vatRate | float | VAT rate |
| branchRequired | bool | Is branch required? |
| currier | bool | Is personal courier? |
| dateGuaranteed | bool | Is delivery date guaranteed? |
| deliveryToAddress | bool | Is delivery to (home) address? |
| digital | bool | Is digital? |
| free | bool | Is free? |
| pickup | bool | Is pickup? |
| selected | bool | Is selected? |
| price | [Price](#price) | Price |
| text | html | null | Text |
| branch | [Delivery/Branch](#delivery-branch) | null | Branch |
| carrier | [Delivery/Carrier](#delivery-carrier) | null | Carrier |
| deliveryDate | [Delivery/DeliveryDate](#delivery-deliverydate) | null | Expected delivery date |
| packageType | [Delivery/PackageType](#delivery-packagetype) | null | Package type |
| image | [Image](#image) | null | Image |

Examples:

```twig
{{ transport.inputId }}
{{ transport.name }}
{{ transport.vatRate }}
{% if transport.branchRequired %} ... {% endif %}
{% if transport.currier %} ... {% endif %}
{% if transport.dateGuaranteed %} ... {% endif %}
{% if transport.deliveryToAddress %} ... {% endif %}
{% if transport.digital %} ... {% endif %}
{% if transport.free %} ... {% endif %}
{% if transport.pickup %} ... {% endif %}
{% if transport.selected %} ... {% endif %}
{{ transport.price }} {# Price #}
{% if transport.text %} {{ transport.text }} {% endif %}
{% if transport.branch %} {{ transport.branch }} {# Branch #} {% endif %}
{% if transport.carrier %} {{ transport.carrier }} {# Carrier #} {% endif %}
{% if transport.deliveryDate %} {{ transport.deliveryDate }} {# DeliveryDate #} {% endif %}
{% if transport.packageType %} {{ transport.packageType }} {# PackageType #} {% endif %}
{% if transport.image %} {{ transport.image }} {# Image #} {% endif %}
```

## DeliveryOption

**Attributes of object DeliveryOption**

| Name | Type | Description |
|---|---|---|
| dateDelivered | datetime | Delivery date to customer |
| dateSent | datetime | Shipment dispatch date |
| orderDeadline | datetime | Date and time by which the order must be placed to meet deadlines |
| transport | [Delivery/Transport](#delivery-transport) | Transport |
| timeDelivered | string | null | Delivery time to customer (e.g. "08:00-12:00") |

Examples:

```twig
{{ deliveryoption.dateDelivered|date('d. m. Y H:i') }}
{{ deliveryoption.dateSent|date('d. m. Y H:i') }}
{{ deliveryoption.orderDeadline|date('d. m. Y H:i') }}
{{ deliveryoption.transport }} {# Transport #}
{% if deliveryoption.timeDelivered %} {{ deliveryoption.timeDelivered }} {% endif %}
```

## Dimensions

**Attributes of object Dimensions**

| Name | Type | Description |
|---|---|---|
| unit | string | Unit |
| height | float | Height |
| length | float | Depth |
| width | float | Width |

Examples:

```twig
{{ dimensions }}
{{ dimensions.unit }}
{{ dimensions.height }}
{{ dimensions.length }}
{{ dimensions.width }}
```

## DynamicCategory

**Attributes of object DynamicCategory**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| name | string | Name |
| dynamic | bool | Dynamic category? (always true) |
| url | [Url](#url) | Brand URL |
| text | html | null | Text |
| image | [Image](#image) | null | Image |
| seo | [Seo](#seo) | null | SEO attributes |

Examples:

```twig
{{ dynamiccategory.id }}
{{ dynamiccategory.name }}
{% if dynamiccategory.dynamic %} ... {% endif %}
{{ dynamiccategory.url }} {# Url #}
{% if dynamiccategory.text %} {{ dynamiccategory.text }} {% endif %}
{% if dynamiccategory.image %} {{ dynamiccategory.image }} {# Image #} {% endif %}
{% if dynamiccategory.seo %} {{ dynamiccategory.seo }} {# Seo #} {% endif %}
```

## EmptyOrder

**Attributes of object EmptyOrder**

| Name | Type | Description |
|---|---|---|
| catalogItemTotalAmount | int | Total item quantity in order |
| price | [Order/Price](#order-price) | Total prices |
| closestFreeDelivery | [Delivery](#delivery) | null | Closest available free delivery |

Examples:

```twig
{{ emptyorder.catalogItemTotalAmount }}
{{ emptyorder.price }} {# Price #}
{% if emptyorder.closestFreeDelivery %} {{ emptyorder.closestFreeDelivery }} {# Delivery #} {% endif %}
```

## EnumValue

Enum value

**Attributes of object EnumValue**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| name | string | Name |
| enum | [ProductEnum](#productenum) | Enum |
| text | html | null | Text |
| image | [Image](#image) | null | Image |

Examples:

```twig
{{ enumvalue.id }}
{{ enumvalue.name }}
{{ enumvalue.enum }} {# ProductEnum #}
{% if enumvalue.text %} {{ enumvalue.text }} {% endif %}
{% if enumvalue.image %} {{ enumvalue.image }} {# Image #} {% endif %}
```

## Event/CartItemChange

**Attributes of object Event/CartItemChange**

| Name | Type | Description |
|---|---|---|
| amountChange | int | Number of added/removed pieces |
| rowId | int | Order row ID for tracking deduplication |
| catalogItem | [Item](#item) | Item (variant or product) |
| price | [Price](#price) | Unit price |

Examples:

```twig
{{ cartitemchange.amountChange }}
{{ cartitemchange.rowId }}
{{ cartitemchange.catalogItem }} {# Item #}
{{ cartitemchange.price }} {# Price #}
```

## ExpectedAmount

**Attributes of object ExpectedAmount**

| Name | Type | Description |
|---|---|---|
| amount | int | Number of available pieces |
| sourceStorageRoom | [StorageRoom](#storageroom) | Source warehouse from which items are replenished |

Examples:

```twig
{{ expectedamount.amount }}
{{ expectedamount.sourceStorageRoom }} {# StorageRoom #}
```

## ExpectedSupplierAmount

**Attributes of object ExpectedSupplierAmount**

| Name | Type | Description |
|---|---|---|
| amount | int | Number of available pieces |
| sourceStorageCenter | [StorageCenter](#storagecenter) | Destination center where the order will arrive (and items will be transferred) |
| expectedDate | datetime | null | When delivery is expected |
| orderDate | datetime | null | When the order was sent (if it was) |

Examples:

```twig
{{ expectedsupplieramount.amount }}
{{ expectedsupplieramount.sourceStorageCenter }} {# StorageCenter #}
{{ expectedsupplieramount.expectedDate|date('d. m. Y H:i') }}
{{ expectedsupplieramount.orderDate|date('d. m. Y H:i') }}
```

## File

File

**Attributes of object File**

| Name | Type | Description |
|---|---|---|
| bytes | int | Size in bytes |
| url | string | Url |
| usage | [FileUsage](#fileusage) | Usage type |
| mime | string | null | Mime type |
| name | string | null | Name |

Examples:

```twig
{{ file.bytes }}
{{ file.url }}
{{ file.usage }} {# FileUsage #}
{% if file.mime %} {{ file.mime }} {% endif %}
{% if file.name %} {{ file.name }} {% endif %}
```

## FileUsage

**Attributes of object FileUsage**

| Name | Type | Description |
|---|---|---|
| archive | bool | Archive |
| graphic | bool | Graphic |
| manual | bool | Manual |
| other | bool | Other |
| sound | bool | Sound |
| specification | bool | Specification |

Examples:

```twig
{% if fileusage.archive %} ... {% endif %}
{% if fileusage.graphic %} ... {% endif %}
{% if fileusage.manual %} ... {% endif %}
{% if fileusage.other %} ... {% endif %}
{% if fileusage.sound %} ... {% endif %}
{% if fileusage.specification %} ... {% endif %}
```

## Image

Images should not be output via \<img src=, but always via the helper tag \<i:img, which handles retina displays and responsiveness.

If the image does not exist, a fallback image is shown based on admin settings - existence can be checked with the "exists" attribute to optionally hide it on the site.
If the object has multiple images (e.g. a gallery), they will always all exist and no check is needed.

**Attributes of object Image**

| Name | Type | Description |
|---|---|---|
| originalHeight | int | Height (px) of original photo |
| originalWidth | int | Width (px) of original photo |
| url | string | Image URL by parameters (for background-image only!) |
| alt | string | null | Image description or related item name |
| text | string | null | Image description |

Examples:

**Image with i:img component**

```twig
<i:img src="product.image" format="400x400" fill />
{{ product.image.alt }}
```

## Invoice

**Attributes of object Invoice**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| code | string | Code |

Examples:

```twig
{{ invoice.id }}
{{ invoice.code }}
```

## Item

**Attributes of object Item**

| Name | Type | Description |
|---|---|---|
| cartAmountRequiredMultiplier | int | Cart quantity must be a multiple of this value |
| id | int | Id |
| loyaltyPointsAmount | int | Number of loyalty points earned for purchasing the item |
| name | string | Name |
| trackingId | string | ID used in feeds and tracking scripts |
| digital | bool | Digital item? |
| sellable | bool | Is sellable? (show add to cart?) |
| service | bool | Is the item a service? (non-stock item) |
| availability | [Availability](#availability) | Availability |
| availableUpsellGroups | [AvailableUpsellGroup](#availableupsellgroup)\[] | Available upsell groups |
| product | [Product](#product) | Product |
| availableUpsells | [Upsell](#upsell)\[] | Available upsell items |
| trackingIds | array | ID used in feeds and tracking scripts (product and variant) |
| storageLocations | array | Storage locations |
| packageWeight | int | null | Package weight (g) |
| code | string | null | Code |
| packageHeight | float | null | Package height (cm) |
| packageLength | float | null | Package length (cm) |
| packageWidth | float | null | Package width (cm) |
| bundle | [Bundle](#bundle) | null | Bundle |
| cheapestDelivery | [Delivery/Transport](#delivery-transport) | null | Cheapest transport (does not consider cart or personal pickup) |
| freeDelivery | [Delivery](#delivery) | null | Is delivery free? (and which one) |
| closestFreeDelivery | [Delivery](#delivery) | null | Closest available free delivery |
| packageDimensions | [Dimensions](#dimensions) | null | Package dimensions |
| image | [Image](#image) | null | Image |
| price | [Price](#price) | null | Item price |
| url | [Url](#url) | null | Product/variant URL |
| variant | [Variant](#variant) | null | Variant |

Examples:

**Product item (purchasable unit) with price and availability**

```twig
{{ product.item.price.current.formatted }}
{% if product.item.price.discount %}
<del>{{ product.item.price.beforeDiscount.formatted }}</del>
-{{ product.item.price.discountPercent }}%
{% endif %}
{% if product.item.available %}
<a href="{{ product.item.cartUrl }}">Add to cart</a>
{% endif %}
```

## Label

**Attributes of object Label**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| name | string | Name |
| code | string | null | Code for identification in template |
| colorCode | string | null | Hex color code |
| text | html | null | Configurable text field (e.g. supplementary text shown near the price);defined per shop in config.json under fields.label.text. |
| image | [Image](#image) | null | Image |

Examples:

```twig
{{ label.id }}
{{ label.name }}
{% if label.code %} {{ label.code }} {% endif %}
{% if label.colorCode %} {{ label.colorCode }} {% endif %}
{% if label.text %} {{ label.text }} {% endif %}
{% if label.image %} {{ label.image }} {# Image #} {% endif %}
```

## LanguageUrl

**Attributes of object LanguageUrl**

| Name | Type | Description |
|---|---|---|
| url | string | Target URL |
| shop | [Shop](#shop) | Eshop |
| hreflang | string | null | Locale for the hreflang attribute, if available |
| shortDomain | string | null | Domain without WWW |

Examples:

```twig
{{ languageurl.url }}
{{ languageurl.shop }} {# Shop #}
{% if languageurl.hreflang %} {{ languageurl.hreflang }} {% endif %}
{% if languageurl.shortDomain %} {{ languageurl.shortDomain }} {% endif %}
```

## Link

**Attributes of object Link**

| Name | Type | Description |
|---|---|---|
| label | string | Link text |
| url | string | Link URL |
| title | string | null | Title |

Examples:

```twig
{{ link.label }}
{{ link.url }}
{% if link.title %} {{ link.title }} {% endif %}
```

## LoyaltyLevel

**Attributes of object LoyaltyLevel**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| pointsAmount | float | Points amount |
| minimumTotalPrice | [PriceValue](#pricevalue) | Minimum amount |
| maximumTotalPrice | [PriceValue](#pricevalue) | Maximum amount |

Examples:

```twig
{{ loyaltylevel.id }}
{{ loyaltylevel.pointsAmount }}
{{ loyaltylevel.minimumTotalPrice }} {# PriceValue #}
{{ loyaltylevel.maximumTotalPrice }} {# PriceValue #}
```

## Order

**Attributes of object Order**

| Name | Type | Description |
|---|---|---|
| amountOfItem | int | Total quantity of a specific item in the order |
| catalogItemCount | int | Number of items in the order |
| catalogItemTotalAmount | int | Total quantity of pieces in the order |
| id | int | Id |
| loyaltyPoints | int | Number of loyalty points earned for the order |
| usableLoyaltyPoints | int | Number of loyalty points applicable to the order |
| language | string | Order language |
| vs | string | Variable symbol (payment reference number) |
| containsAnyOfLabels | bool | Contains item with any of the labels? |
| containsItem | bool | Contains item? |
| containsLabel | bool | Contains item with label? |
| digitalPhysicalCombination | bool | Cart contains both digital and physical items |
| erotic | bool | Does the order contain an erotic item? |
| externalReviewAllowed | bool | Did the customer consent to a satisfaction survey? |
| paid | bool | Is the order paid? |
| preOrder | bool | Does the order contain a pre-order item? |
| useLoyaltyPoints | bool | Use loyalty points? |
| useLoyaltyPointsManually | bool | Are loyalty points applied only after manual selection? |
| accountingDocuments | [AccountingDocument](#accountingdocument)\[] | Accounting documents |
| address | [Addresses](#addresses) | Addresses |
| availablePaymentMethods | [Delivery/Payment](#delivery-payment)\[] | Available payment methods |
| payments | [Delivery/Payment](#delivery-payment)\[] | Order payments |
| availableTransportMethods | [Delivery/Transport](#delivery-transport)\[] | Available transport methods |
| delivery | [Delivery](#delivery) | Delivery |
| catalogItems | [Order/Item/CatalogItem](#order-item-catalogitem)\[] | Order items (products) |
| items | [Order/Item/CatalogItem](#order-item-catalogitem)\[] | [Order/Item/DiscountItem](#order-item-discountitem)\[] | Order items (products, discounts) |
| discountItems | [Order/Item/DiscountItem](#order-item-discountitem)\[] | Discounts |
| price | [Order/Price](#order-price) | Total prices |
| status | [Order/Status](#order-status) | Order status |
| shop | [Shop](#shop) | E-shop |
| url | [Url](#url) | URL for tracking order status (or cart for unsubmitted orders) |
| purchasedGiftVouchers | [Voucher/GiftVoucher](#voucher-giftvoucher)\[] | Purchased gift vouchers |
| vouchers | [Voucher/GiftVoucher](#voucher-giftvoucher)\[] | Applied discount codes or gift vouchers |
| code | string | null | Code |
| note | string | null | Customer note |
| returnUrl | string | null | Return wizard deep-link, or null when returns are disabled or the order is not eligible |
| date | datetime | null | Date created |
| dateInStatus | datetime | null | Date moved to current status |
| expectedShippingDate | datetime | null | Expected package shipping date (automatically calculated from availability or manually adjusted in admin) |
| customer | [Customer](#customer) | null | Registered customer |
| closestFreeDelivery | [Delivery](#delivery) | null | Closest available free delivery |
| parentOrder | [Order](#order) | null | Parent order |
| package | [Package](#package) | null | Package |
| store | [Store](#store) | null | Store for pickup |

Examples:

**Cart items and totals**

```twig
{% for item in cart.items %}
{{ item.name }} x {{ item.amount }} = {{ item.price.current.formatted }}
{% endfor %}
Total: {{ cart.price.current.formatted }}
```

**Discount and voucher display**

```twig
{% if cart.price.discount %}
Discount: -{{ cart.price.discountValue.formatted }}
{% endif %}
{% for voucher in cart.vouchers %}
Voucher: {{ voucher.code }} (-{{ voucher.discount.formatted }})
{% endfor %}
```

## Order/DiscountCode

**Attributes of object Order/DiscountCode**

| Name | Type | Description |
|---|---|---|
| code | string | Code |
| name | string | Discount code name |
| validFrom | datetime | Validity start date |
| validTo | datetime | Expiration date |

Examples:

```twig
{{ discountcode.code }}
{{ discountcode.name }}
{{ discountcode.validFrom|date('d. m. Y H:i') }}
{{ discountcode.validTo|date('d. m. Y H:i') }}
```

## Order/FreeLimit

**Attributes of object Order/FreeLimit**

| Name | Type | Description |
|---|---|---|
| percent | int | Percentage reached of total |
| total | [PriceValue](#pricevalue) | Order value to reach |
| remains | [PriceValue](#pricevalue) | Amount remaining to reach free delivery |

Examples:

```twig
{{ freelimit.percent }}
{{ freelimit.total }} {# PriceValue #}
{{ freelimit.remains }} {# PriceValue #}
```

## Order/Item/CatalogItem

**Attributes of object Order/Item/CatalogItem**

| Name | Type | Description |
|---|---|---|
| amount | int | Quantity |
| id | int | Id |
| name | string | Item name |
| productName | string | Product name |
| trackingId | string | ID used in feeds and tracking scripts |
| vatRate | float | VAT rate (%) |
| amountChangeAllowed | bool | Is quantity change allowed? |
| catalogItem | bool | Is a catalog item? |
| deleteAllowed | bool | Is removal from order allowed? |
| discountItem | bool | Is the item a discount? |
| gift | bool | Is the item a gift? |
| availableUpsellGroups | [AvailableUpsellGroup](#availableupsellgroup)\[] | Available upsell groups |
| availableConfiguratorUpsellGroups | [AvailableUpsellGroup](#availableupsellgroup)\[] | Available upsell groups for customization |
| children | [Order/Item/CatalogItem](#order-item-catalogitem)\[] | [Order/Item/DiscountItem](#order-item-discountitem)\[] | Child items (e.g. bundle parts) |
| relatedDiscounts | [Order/Item/DiscountItem](#order-item-discountitem)\[] | Related order discounts for the item (e.g. applied discount codes) |
| errors | [Order/Item/OrderItemError](#order-item-orderitemerror)\[] | Item errors (unavailable pieces, etc.) |
| price | [Price](#price) | Price per unit |
| priceTotal | [Price](#price) | Total price |
| availableConfigurators | [ProductDesigner/ProductDesigner](#productdesigner-productdesigner)\[] | Available configurators for customization |
| configuratorsWithResult | [ProductDesigner/ProductDesigner](#productdesigner-productdesigner)\[] | Returns available configurators that have customization results |
| availableUpsells | [Upsell](#upsell)\[] | Available upsell items |
| trackingIds | array | ID used in feeds and tracking scripts (variant and product) |
| code | string | null | Item code |
| note | string | null | Note |
| variantName | string | null | Variant name |
| image | [Image](#image) | null | Item image |
| item | [Item](#item) | null | Item (purchasable unit) |
| product | [Product](#product) | null | Product |
| unit | [Unit](#unit) | null | Unit of measure |
| upsell | [Upsell](#upsell) | null | Is the item an upsell? |
| variant | [Variant](#variant) | null | Variant |

Examples:

```twig
{{ catalogitem.amount }}
{{ catalogitem.id }}
{{ catalogitem.name }}
{{ catalogitem.productName }}
{{ catalogitem.trackingId }}
{{ catalogitem.vatRate }}
{% if catalogitem.amountChangeAllowed %} ... {% endif %}
{% if catalogitem.catalogItem %} ... {% endif %}
{% if catalogitem.deleteAllowed %} ... {% endif %}
{% if catalogitem.discountItem %} ... {% endif %}
{% if catalogitem.gift %} ... {% endif %}
{% for availableUpsellGroup in catalogitem.availableUpsellGroups %} ... {% endfor %}
{% for availableUpsellGroup in catalogitem.availableConfiguratorUpsellGroups %} ... {% endfor %}
{% for catalogItem in catalogitem.children %} ... {% endfor %}
{% for discountItem in catalogitem.relatedDiscounts %} ... {% endfor %}
{% for orderItemError in catalogitem.errors %} ... {% endfor %}
{{ catalogitem.price }} {# Price #}
{{ catalogitem.priceTotal }} {# Price #}
{% for productDesigner in catalogitem.availableConfigurators %} ... {% endfor %}
{% for productDesigner in catalogitem.configuratorsWithResult %} ... {% endfor %}
{% for upsell in catalogitem.availableUpsells %} ... {% endfor %}
{{ catalogitem.trackingIds }}
{% if catalogitem.code %} {{ catalogitem.code }} {% endif %}
{% if catalogitem.note %} {{ catalogitem.note }} {% endif %}
{% if catalogitem.variantName %} {{ catalogitem.variantName }} {% endif %}
{% if catalogitem.image %} {{ catalogitem.image }} {# Image #} {% endif %}
{% if catalogitem.item %} {{ catalogitem.item }} {# Item #} {% endif %}
{% if catalogitem.product %} {{ catalogitem.product }} {# Product #} {% endif %}
{% if catalogitem.unit %} {{ catalogitem.unit }} {# Unit #} {% endif %}
{% if catalogitem.upsell %} {{ catalogitem.upsell }} {# Upsell #} {% endif %}
{% if catalogitem.variant %} {{ catalogitem.variant }} {# Variant #} {% endif %}
```

## Order/Item/DiscountItem

**Attributes of object Order/Item/DiscountItem**

| Name | Type | Description |
|---|---|---|
| amount | int | Quantity |
| id | int | Discount ID |
| name | string | Discount name |
| vatRate | float | VAT rate (%) |
| amountChangeAllowed | bool | Is quantity change allowed? |
| catalogItem | bool | Is a catalog item? |
| deleteAllowed | bool | Is removal from order allowed? |
| discountItem | bool | Is a discount item? |
| children | [Order/Item/DiscountItem](#order-item-discountitem)\[] | Child items (e.g. bundle parts) |
| note | string | null | Note |
| trackingId | null | string | ID for tracking codes |
| percent | float | null | Value in percent (only if discount was created as percentage) |
| discountCode | [Order/DiscountCode](#order-discountcode) | null | Discount code |
| voucher | [Order/Voucher](#order-voucher) | null | Discount code / gift voucher |
| price | [Price](#price) | null | Discount value |
| priceTotal | [Price](#price) | null | Total price |
| unit | [Unit](#unit) | null | Quantity unit |

Examples:

```twig
{{ discountitem.amount }}
{{ discountitem.id }}
{{ discountitem.name }}
{{ discountitem.vatRate }}
{% if discountitem.amountChangeAllowed %} ... {% endif %}
{% if discountitem.catalogItem %} ... {% endif %}
{% if discountitem.deleteAllowed %} ... {% endif %}
{% if discountitem.discountItem %} ... {% endif %}
{% for discountItem in discountitem.children %} ... {% endfor %}
{% if discountitem.note %} {{ discountitem.note }} {% endif %}
{% if discountitem.trackingId %} {{ discountitem.trackingId }} {% endif %}
{% if discountitem.percent %} {{ discountitem.percent }} {% endif %}
{% if discountitem.discountCode %} {{ discountitem.discountCode }} {# DiscountCode #} {% endif %}
{% if discountitem.voucher %} {{ discountitem.voucher }} {# Voucher #} {% endif %}
{% if discountitem.price %} {{ discountitem.price }} {# Price #} {% endif %}
{% if discountitem.priceTotal %} {{ discountitem.priceTotal }} {# Price #} {% endif %}
{% if discountitem.unit %} {{ discountitem.unit }} {# Unit #} {% endif %}
```

## Order/Item/OrderItemError

**Attributes of object Order/Item/OrderItemError**

| Name | Type | Description |
|---|---|---|
| recommendedAmount | int | Recommended valid quantity |
| code | string | Error code |
| itemName | string | Problematic item name |
| message | string | Error message |

Examples:

```twig
{{ orderitemerror.recommendedAmount }}
{{ orderitemerror.code }}
{{ orderitemerror.itemName }}
{{ orderitemerror.message }}
```

## Order/Price

**Attributes of object Order/Price**

| Name | Type | Description |
|---|---|---|
| total | [PriceValue](#pricevalue) | Total value |
| unpaid | [PriceValue](#pricevalue) | Total amount due |
| paid | [PriceValue](#pricevalue) | Total paid |

Examples:

```twig
{{ price.total }} {# PriceValue #}
{{ price.unpaid }} {# PriceValue #}
{{ price.paid }} {# PriceValue #}
```

## Order/Status

**Attributes of object Order/Status**

| Name | Type | Description |
|---|---|---|
| id | int | ID |
| name | string | Name |

Examples:

```twig
{{ status.id }}
{{ status.name }}
```

## Order/Voucher

**Attributes of object Order/Voucher**

| Name | Type | Description |
|---|---|---|
| code | string | Code |
| validTo | datetime | Expiration date |

Examples:

```twig
{{ voucher.code }}
{{ voucher.validTo|date('d. m. Y H:i') }}
```

## Order/ZeroPrice

**Attributes of object Order/ZeroPrice**

| Name | Type | Description |
|---|---|---|
| total | [PriceValue](#pricevalue) | Total value |
| unpaid | [PriceValue](#pricevalue) | Total amount due |
| paid | [PriceValue](#pricevalue) | Total paid |

Examples:

```twig
{{ zeroprice.total }} {# PriceValue #}
{{ zeroprice.unpaid }} {# PriceValue #}
{{ zeroprice.paid }} {# PriceValue #}
```

## Package

**Attributes of object Package**

| Name | Type | Description |
|---|---|---|
| parcelCount | int | Number of parcels |
| date | datetime | Dispatch date |
| history | [PackageHistory](#packagehistory)\[] | List of package delivery history records |
| status | [PackageStatus](#packagestatus) | Package status |
| code | string | null | Code |
| trackingUrl | string | null | Tracking URL |

Examples:

```twig
{{ package.parcelCount }}
{{ package.date|date('d. m. Y H:i') }}
{% for packageHistory in package.history %} ... {% endfor %}
{{ package.status }} {# PackageStatus #}
{% if package.code %} {{ package.code }} {% endif %}
{% if package.trackingUrl %} {{ package.trackingUrl }} {% endif %}
```

## PackageHistory

**Attributes of object PackageHistory**

| Name | Type | Description |
|---|---|---|
| date | datetime | Change date |
| delivered | bool | Delivered |
| deposited | bool | Deposited at branch |
| inTransit | bool | In transit |
| notification | bool | General notification |
| returned | bool | Returned to e-shop |
| description | string | null | Description from carrier |

Examples:

```twig
{{ packagehistory.date|date('d. m. Y H:i') }}
{% if packagehistory.delivered %} ... {% endif %}
{% if packagehistory.deposited %} ... {% endif %}
{% if packagehistory.inTransit %} ... {% endif %}
{% if packagehistory.notification %} ... {% endif %}
{% if packagehistory.returned %} ... {% endif %}
{% if packagehistory.description %} {{ packagehistory.description }} {% endif %}
```

## PackageStatus

**Attributes of object PackageStatus**

| Name | Type | Description |
|---|---|---|
| delivered | bool | Has the package been delivered? |
| deposited | bool | Is the package deposited? |
| inTransit | bool | Is the package in transit? |
| returned | bool | Has the package been returned? (uncollected/refused) |

Examples:

```twig
{% if packagestatus.delivered %} ... {% endif %}
{% if packagestatus.deposited %} ... {% endif %}
{% if packagestatus.inTransit %} ... {% endif %}
{% if packagestatus.returned %} ... {% endif %}
```

## Pagination

**Attributes of object Pagination**

| Name | Type | Description |
|---|---|---|
| currentPage | int | Current page number |
| nextPageResultCount | int | Number of results on next page |
| pageCount | int | Number of available pages |
| perPage | int | Results per page (maximum) |
| resultsFrom | int | Starting result number |
| resultsTo | int | Ending result number |
| totalResults | int | Total number of results |
| html | html | HTML page links |
| nextPageUrl | string | null | Next page URL |

Examples:

```twig
{{ pagination.currentPage }}
{{ pagination.nextPageResultCount }}
{{ pagination.pageCount }}
{{ pagination.perPage }}
{{ pagination.resultsFrom }}
{{ pagination.resultsTo }}
{{ pagination.totalResults }}
{{ pagination.html }}
{% if pagination.nextPageUrl %} {{ pagination.nextPageUrl }} {% endif %}
```

## Payment

**Attributes of object Payment**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| name | string | Name |
| amount | [PriceValue](#pricevalue) | Amount |
| text | string | null | Payment description |

Examples:

```twig
{{ payment.id }}
{{ payment.name }}
{{ payment.amount }} {# PriceValue #}
{% if payment.text %} {{ payment.text }} {% endif %}
```

## PaymentCalculator

**Attributes of object PaymentCalculator**

| Name | Type | Description |
|---|---|---|
| url | string | Calculator URL |
| windowJavascript | string | JavaScript to open calculator window |

Examples:

```twig
{{ paymentcalculator.url }}
{{ paymentcalculator.windowJavascript }}
```

## PaymentCalculators

**Attributes of object PaymentCalculators**

| Name | Type | Description |
|---|---|---|
| essox | [PaymentCalculator](#paymentcalculator) | null | Essox installment calculator |
| homecredit | [PaymentCalculator](#paymentcalculator) | null | Homecredit installment calculator |
| homecreditSK | [PaymentCalculator](#paymentcalculator) | null | Homecredit SK installment calculator |
| santander | [PaymentCalculator](#paymentcalculator) | null | Santander installment calculator |
| cofidis | [PaymentCalculator](#paymentcalculator) | null | Cofidis installment calculator |
| cofidisHU | [PaymentCalculator](#paymentcalculator) | null | Cofidis HU installment calculator |

Examples:

```twig
{% if paymentcalculators.essox %} {{ paymentcalculators.essox }} {# PaymentCalculator #} {% endif %}
{% if paymentcalculators.homecredit %} {{ paymentcalculators.homecredit }} {# PaymentCalculator #} {% endif %}
{% if paymentcalculators.homecreditSK %} {{ paymentcalculators.homecreditSK }} {# PaymentCalculator #} {% endif %}
{% if paymentcalculators.santander %} {{ paymentcalculators.santander }} {# PaymentCalculator #} {% endif %}
{% if paymentcalculators.cofidis %} {{ paymentcalculators.cofidis }} {# PaymentCalculator #} {% endif %}
{% if paymentcalculators.cofidisHU %} {{ paymentcalculators.cofidisHU }} {# PaymentCalculator #} {% endif %}
```

## Price

**Attributes of object Price**

| Name | Type | Description |
|---|---|---|
| vatRate | float | VAT rate |
| current | [PriceValue](#pricevalue) | Price |
| discountPercent | int | null | Discount (percentage) |
| discountValidTo | datetime | null | Discount expiry date (null if no discount or date is far away) |
| beforeDiscount | [PriceValue](#pricevalue) | null | Price before discount |
| discount | [PriceValue](#pricevalue) | null | Discount (amount) |

Examples:

```twig
{{ price.vatRate }}
{{ price.current }} {# PriceValue #}
{% if price.discountPercent %} {{ price.discountPercent }} {% endif %}
{{ price.discountValidTo|date('d. m. Y H:i') }}
{% if price.beforeDiscount %} {{ price.beforeDiscount }} {# PriceValue #} {% endif %}
{% if price.discount %} {{ price.discount }} {# PriceValue #} {% endif %}
```

## PriceValue

**Attributes of object PriceValue**

| Name | Type | Description |
|---|---|---|
| currency | string | Currency |
| currencySymbol | string | Currency symbol (e.g. Kč) |
| formatted | string | Formatted output (e.g. 1 123 Kč) |
| formattedValue | string | Formatted value without the currency symbol (e.g. 1 123) |
| value | float | Value |
| currencySymbolBefore | bool | Whether the currency symbol belongs before the value ($10) instead of after it (10 Kč) |
| perUnit | [UnitPrice](#unitprice) | null | Price per base volume unit |

Examples:

```twig
{{ pricevalue.currency }}
{{ pricevalue.currencySymbol }}
{{ pricevalue.formatted }}
{{ pricevalue.formattedValue }}
{{ pricevalue.value }}
{% if pricevalue.currencySymbolBefore %} ... {% endif %}
{% if pricevalue.perUnit %} {{ pricevalue.perUnit }} {# UnitPrice #} {% endif %}
```

## PrintedLabel

**Attributes of object PrintedLabel**

| Name | Type | Description |
|---|---|---|
| quantity | int | Label count |
| barcodeContent | string | Barcode content |
| name | string | Item name (including variant name) |
| productName | string | Product name |
| qrDataUri | string | QR code with fixed item URL (redirects to current and allows additional tracking) |
| shortUrl | string | Short URL for QR code (redirects to current URL) |
| visibleCode | string | Visible code |
| item | [Item](#item) | Stock item |
| product | [Product](#product) | Product (with selected variant) |
| secondVisibleCode | string | null | Second visible code |
| variantName | string | null | Variant system name |
| price | [Price](#price) | null | Price (if to be displayed) |

Examples:

```twig
{{ printedlabel.quantity }}
{{ printedlabel.barcodeContent }}
{{ printedlabel.name }}
{{ printedlabel.productName }}
{{ printedlabel.qrDataUri }}
{{ printedlabel.shortUrl }}
{{ printedlabel.visibleCode }}
{{ printedlabel.item }} {# Item #}
{{ printedlabel.product }} {# Product #}
{% if printedlabel.secondVisibleCode %} {{ printedlabel.secondVisibleCode }} {% endif %}
{% if printedlabel.variantName %} {{ printedlabel.variantName }} {% endif %}
{% if printedlabel.price %} {{ printedlabel.price }} {# Price #} {% endif %}
```

## Product

**Attributes of object Product**

| Name | Type | Description |
|---|---|---|
| id | int | Internal product ID |
| commentType | string | Comment type for this entity |
| name | string | Product name |
| trackingId | string | ID used in feeds and tracking scripts |
| dateCreated | datetime | Date created |
| active | bool | Active |
| compared | bool | Is in comparison list? |
| differentVariantPrices | bool | Do variants have different prices? |
| flagNew | bool | New product |
| flagPromo | bool | Promo / on sale |
| flagSecondHand | bool | Second-hand goods |
| flagSellout | bool | Clearance sale |
| otherDiscountApplicable | bool | Can a coupon or user discount be applied? |
| soldSeparately | bool | Sold separately |
| publicContacts | [Address](#address)\[] | Public contacts |
| attributes | [Attribute/AttributeInstance](#attribute-attributeinstance)\[] | Attributes and values |
| availableUpsellGroups | [AvailableUpsellGroup](#availableupsellgroup)\[] | Available upsell groups |
| category | [Category](#category) | Main category |
| categories | [Category](#category)\[] | Categories |
| otherCategories | [Category](#category)\[] | Other categories |
| files | [File](#file)\[] | Files (manuals, specifications, ...) |
| images | [Image](#image)\[] | Images |
| imagesWithEnumValue | [Image](#image)\[] | Images with enum value |
| images360 | [Image](#image)\[] | Images for 360° view |
| currentImages | [Image](#image)\[] | Images with the currently displayed enum value |
| imagesWithoutEnumValue | [Image](#image)\[] | Images without enum value |
| otherImages | [Image](#image)\[] | Other images |
| item | [Item](#item) | Item (purchasable unit) |
| labels | [Label](#label)\[] | Labels (indexed by code) |
| configurators | [ProductDesigner/ProductDesigner](#productdesigner-productdesigner)\[] | Available configurators for customization |
| enumValues | [ProductEnumValue](#productenumvalue)\[] | Enum values |
| packTemplateProducts | [Product](#product)\[] | Products for set selection |
| rating | [Rating](#rating) | Rating |
| availableUpsells | [Upsell](#upsell)\[] | Available upsell items |
| canonicalUrl | [Url](#url) | Product URL without the user-selected ?varianta=/?enum= parametersthat getUrl() appends — the address of the product itself, e.g. forthe canonical link. |
| url | [Url](#url) | Product URL |
| variantChoiceSteps | [VariantChoiceStep](#variantchoicestep)\[] | Variant selection steps |
| currentVariants | [Variant](#variant)\[] | Variants with the currently displayed enum value |
| variants | [Variant](#variant)\[] | Variants |
| variantsWithEnumValueIds | [Variant](#variant)\[] | Variants filtered by enum values (each variant will have all values) |
| variantType | [VariantType](#varianttype) | Variant type |
| videos | [Video](#video)\[] | Videos |
| trackingIds | array | ID used in feeds and tracking scripts - including all variants |
| currentSubName | string | null | Current selection name (color name, selected variant, ...) |
| nameSuffix | string | null | Name suffix |
| nameSupplier | string | null | Supplier name |
| text | html | null | Text |
| attribute | [Attribute/AttributeInstance](#attribute-attributeinstance) | null | Attribute with values |
| brand | [Brand](#brand) | null | Brand |
| image | [Image](#image) | null | Product image |
| imageForEnumValueId | [Image](#image) | null | Product image for enum value or fallback |
| successor | [Product](#product) | null | Successor product |
| seo | [Seo](#seo) | null | SEO attributes |
| supplier | [Supplier](#supplier) | null | Supplier |
| unit | [Unit](#unit) | null | Unit of measure |
| variant | [Variant](#variant) | null | Main variant |
| warranty | [Warranty](#warranty) | null | Warranty |
| contentGrid | array | null | Content grid |

Examples:

**Product card with price and image**

```twig
{{ product.name }}
<i:img src="product.image" format="359x479" fill />
{{ product.item.price.current.formatted }}
{% if product.item.price.discount %}
<del>{{ product.item.price.beforeDiscount.formatted }}</del>
{% endif %}
```

**Product labels and brand link**

```twig
{% for label in product.labels %}
<span style="background: {{ label.color }}">{{ label.name }}</span>
{% endfor %}
{% if product.brand %}
<a href="{{ product.brand.url }}">{{ product.brand.name }}</a>
{% endif %}
```

**Product availability and add-to-cart**

```twig
{% if product.item.available %}
<span>{{ product.item.availability.text }}</span>
<a href="{{ product.item.cartUrl }}">Add to cart</a>
{% else %}
<span>{{ product.item.availability.text }}</span>
{% endif %}
```

## ProductDesigner/ProductDesigner

**Attributes of object ProductDesigner/ProductDesigner**

| Name | Type | Description |
|---|---|---|
| name | string | Item name |
| upsell | [Upsell](#upsell) | Upsell |
| result | [ProductDesigner/ProductDesignerResult](#productdesigner-productdesignerresult) | null | Finished design from customer (images, prices, ...) |

Examples:

```twig
{{ productdesigner.name }}
{{ productdesigner.upsell }} {# Upsell #}
{% if productdesigner.result %} {{ productdesigner.result }} {# ProductDesignerResult #} {% endif %}
```

## ProductDesigner/ProductDesignerResult

**Attributes of object ProductDesigner/ProductDesignerResult**

| Name | Type | Description |
|---|---|---|
| imageUrl | string | Preview URL |
| uuid | string | Result identifier |
| price | [PriceValue](#pricevalue) | Design price |
| parts | [ProductDesigner/ProductDesignerResultPart](#productdesigner-productdesignerresultpart)\[] | Design parts |

Examples:

```twig
{{ productdesignerresult.imageUrl }}
{{ productdesignerresult.uuid }}
{{ productdesignerresult.price }} {# PriceValue #}
{% for productDesignerResultPart in productdesignerresult.parts %} ... {% endfor %}
```

## ProductDesigner/ProductDesignerResultPart

**Attributes of object ProductDesigner/ProductDesignerResultPart**

| Name | Type | Description |
|---|---|---|
| imageUrl | string | Image URL |
| label | string | Design part name |

Examples:

```twig
{{ productdesignerresultpart.imageUrl }}
{{ productdesignerresultpart.label }}
```

## ProductEnum

Enum

**Attributes of object ProductEnum**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| name | string | Name |
| values | [EnumValue](#enumvalue)\[] | Values |
| text | html | null | Text |
| meaning | [AttributeMeaning](#attributemeaning) | null | Meaning |

Examples:

```twig
{{ productenum.id }}
{{ productenum.name }}
{% for enumValue in productenum.values %} ... {% endfor %}
{% if productenum.text %} {{ productenum.text }} {% endif %}
{% if productenum.meaning %} {{ productenum.meaning }} {# AttributeMeaning #} {% endif %}
```

## ProductEnumValue

Product enum value

**Attributes of object ProductEnumValue**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| name | string | Name |
| selected | bool | Is value selected? (by filter, ...) |
| enum | [ProductEnum](#productenum) | Enum |
| url | [Url](#url) | Product URL with highlighted value |
| variants | [Variant](#variant)\[] | array | Product variants with enum value |
| text | html | null | Text |
| image | [Image](#image) | null | Image |
| variantImage | [Image](#image) | null | Variant image |

Examples:

```twig
{{ productenumvalue.id }}
{{ productenumvalue.name }}
{% if productenumvalue.selected %} ... {% endif %}
{{ productenumvalue.enum }} {# ProductEnum #}
{{ productenumvalue.url }} {# Url #}
{% for variant in productenumvalue.variants %} ... {% endfor %}
{% if productenumvalue.text %} {{ productenumvalue.text }} {% endif %}
{% if productenumvalue.image %} {{ productenumvalue.image }} {# Image #} {% endif %}
{% if productenumvalue.variantImage %} {{ productenumvalue.variantImage }} {# Image #} {% endif %}
```

## ProductMatcher

**Attributes of object ProductMatcher**

| Name | Type | Description |
|---|---|---|
| matches | bool | Does product match rules? Does order contain product matching rules? |

Examples:

```twig
{% if productmatcher.matches %} ... {% endif %}
```

## Rating

**Attributes of object Rating**

| Name | Type | Description |
|---|---|---|
| count | int | Number of votes |
| voted | bool | Can vote? |
| average | float | null | Average rating |

Examples:

```twig
{{ rating.count }}
{% if rating.voted %} ... {% endif %}
{% if rating.average %} {{ rating.average }} {% endif %}
```

## Reclaim

**Attributes of object Reclaim**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| code | string | Code |
| handoverType | string | Handover method ('prodejna'/'posta', or 'zadne' when the goods stay with the shop), null when not captured |
| productCode | string | Product code |
| reportingType | string | Reporting method |
| purchaseDate | datetime | Purchase date |
| status | [RepairJob/Status](#repairjob-status) | Reclaim status |
| preferredSolutionCodes | array | Preferred resolutions |
| closingDescription | string | null | Shop's closing statement (vyjádření), as plain text. |
| defectDescription | string | null | Customer-described defect. |
| documentNote | string | null | The customer's own case identifier (a wholesale buyer's RMA number) |
| productName | string | null | Claimed product name — the free-text zbozi\_nazev legacy emails print,not the (possibly missing) linked Product. |
| solutionLabel | string | null | Verdict label in the case's language; null until the claim is closed. |
| incomingDate | datetime | null | Incoming date |
| statutoryDeadline | datetime | null | Pending statutory 30-day handling deadline (§ 19 z. 634/1992 Sb.):30 days from receiving the goods. Null before the goods arrive, andnull again once the claim is closed or cancelled — a deadline that nolonger runs is not a pending deadline. |
| brand | [Brand](#brand) | null | Brand |
| pickupPlace | [Delivery/StoreBranch](#delivery-storebranch) | null | Store where the claim is picked up — the store the claim was receivedat. Null for claims not filed at a store; the reclaim-pickup blockhides itself then, and never guesses among the shop's stores. |
| invoice | [Invoice](#invoice) | null | Receipt |
| order | [Order](#order) | null | Order the claim belongs to — null for walk-in claims created without one(`reklamace.objednavka_id` IS nullable, even though `Reclaim::getOrder()`is typed non-null and therefore throws a TypeError on such a row). |
| product | [Product](#product) | null | Product |
| store | [Store](#store) | null | Store |
| supplier | [Supplier](#supplier) | null | Supplier |

Examples:

```twig
{{ reclaim.id }}
{{ reclaim.code }}
{{ reclaim.handoverType }}
{{ reclaim.productCode }}
{{ reclaim.reportingType }}
{{ reclaim.purchaseDate|date('d. m. Y H:i') }}
{{ reclaim.status }} {# Status #}
{{ reclaim.preferredSolutionCodes }}
{% if reclaim.closingDescription %} {{ reclaim.closingDescription }} {% endif %}
{% if reclaim.defectDescription %} {{ reclaim.defectDescription }} {% endif %}
{% if reclaim.documentNote %} {{ reclaim.documentNote }} {% endif %}
{% if reclaim.productName %} {{ reclaim.productName }} {% endif %}
{% if reclaim.solutionLabel %} {{ reclaim.solutionLabel }} {% endif %}
{{ reclaim.incomingDate|date('d. m. Y H:i') }}
{{ reclaim.statutoryDeadline|date('d. m. Y H:i') }}
{% if reclaim.brand %} {{ reclaim.brand }} {# Brand #} {% endif %}
{% if reclaim.pickupPlace %} {{ reclaim.pickupPlace }} {# StoreBranch #} {% endif %}
{% if reclaim.invoice %} {{ reclaim.invoice }} {# Invoice #} {% endif %}
{% if reclaim.order %} {{ reclaim.order }} {# Order #} {% endif %}
{% if reclaim.product %} {{ reclaim.product }} {# Product #} {% endif %}
{% if reclaim.store %} {{ reclaim.store }} {# Store #} {% endif %}
{% if reclaim.supplier %} {{ reclaim.supplier }} {# Supplier #} {% endif %}
```

## RepairJob

**Attributes of object RepairJob**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| code | string | Code |
| parts | use App/Entity/RepairJobItem\[] | Used parts |
| works | use App/Entity/RepairJobItem\[] | Labor |
| closingDescription | string | null | Closing summary (uzavření). |
| productName | string | null | Serviced item name. |
| productStatus | string | null | Item condition as recorded at intake (zbozi\_stav). |
| total | string | null | Formatted parts + works total — the legacy "vyřízen" email's"Celková cena služeb a materiálu" line. Null without items.`serviskos.serviskos_cena` and `serviskos_ks` are both nullable while`RepairJobItem::getPrice()/getAmount()` are typed `float`, so an unpricedrow throws a TypeError instead of returning null. Such a row is skipped:it was never priced, so it can only contribute 0 to the sum. If *no* rowis priced the total is unknown, not zero — return null so the partialhides the price row instead of promising "0 Kč". |
| date | datetime | null | Intake date. |
| pickupDate | datetime | null | Pickup date. |
| order | [Order](#order) | null | Linked order — null for walk-in repairs. |
| status | [RepairJob/Status](#repairjob-status) | null | Repair job status — null when `serviska_stav` is NULL, which is a legalrow state (`RepairJob::getStatus(): ?RepairJobStatusType`). The servicepartial hides its status row on null rather than fataling the send. |

Examples:

```twig
{{ repairjob.id }}
{{ repairjob.code }}
{% for item in repairjob.parts %} ... {% endfor %}
{% for item in repairjob.works %} ... {% endfor %}
{% if repairjob.closingDescription %} {{ repairjob.closingDescription }} {% endif %}
{% if repairjob.productName %} {{ repairjob.productName }} {% endif %}
{% if repairjob.productStatus %} {{ repairjob.productStatus }} {% endif %}
{% if repairjob.total %} {{ repairjob.total }} {% endif %}
{{ repairjob.date|date('d. m. Y H:i') }}
{{ repairjob.pickupDate|date('d. m. Y H:i') }}
{% if repairjob.order %} {{ repairjob.order }} {# Order #} {% endif %}
{% if repairjob.status %} {{ repairjob.status }} {# Status #} {% endif %}
```

## RepairJob/Status

**Attributes of object RepairJob/Status**

| Name | Type | Description |
|---|---|---|
| id | int | ID |
| name | string | Name |

Examples:

```twig
{{ status.id }}
{{ status.name }}
```

## RepairJobItem

**Attributes of object RepairJobItem**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| amount | float | Quantity |
| vatRate | float | VAT rate (%) |
| price | [Price](#price) | Unit price |
| item | [Item](#item) | null | Item |

Examples:

```twig
{{ repairjobitem.id }}
{{ repairjobitem.amount }}
{{ repairjobitem.vatRate }}
{{ repairjobitem.price }} {# Price #}
{% if repairjobitem.item %} {{ repairjobitem.item }} {# Item #} {% endif %}
```

## ReturnCase

**Attributes of object ReturnCase**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| code | string | Code |
| stateLabel | string | Customer-language state label via texty (emailtpl\_return\_state\_\<value>).DRAFT has no key (a draft is never emailed) and falls back to the raw value. |
| typeLabel | string | "Vratka" vs "reklamace" vs "nedoručená zásilka" via texty; empty stringwhen the row predates the type column. |
| createdDate | datetime | Creation date |
| items | [ReturnCaseItem](#returncaseitem)\[] | Returned items |
| state | use App/Entity/Returns/ReturnStateType | Return state (enum) — exposes the state-machine value so Twig templatescan branch on it (e.g. `{% if return.state.value == 'awaiting-payment' %}`). |
| refundAccountNumber | string | null | The customer's refund account from the wizard — NOT getPaymentBankAccount(),which is the shop's fee-collection account (the opposite direction). |
| shipmentCarrierCode | string | null | Carrier code of the latest shipment (e.g. `zasilkovna`, `customer`, `osobne`). |
| shipmentPIN | string | null | Shipment submission PIN |
| shippingFee | string | null | Paid-return shipping fee in the shipping-fee Order's currency (thereturn's purchase currency) — the {@see getShippingOrder} the email pairsthis amount with is charged in that currency, so the stored main-currencyvalue must be converted to match ({@see Returns::getChargedShippingFeeInPurchaseCurrency}).Null unless the return is UPFRONT, the only mode with a customer-paid feeOrder. |
| incomingDate | datetime | null | Incoming date |
| shipmentHandInDeadline | datetime | null | Hand-in deadline as shown to the customer, or null when the latestshipment's carrier imposes none. The rule belongs to the label carrier({@see \App\Carrier\LabelReturnCarrierInterface::getReturnLabelHandInDeadline()}):ČP answers one day before its real POZR expiry (sendData acceptance+ 7 days, a midday timestamp the e-mail shows as a bare date); PbHdocuments no expiry. Non-label carriers never have one, even if theystart filling `carrier_accepted_at`. |
| paymentBankAccount | [Delivery/BankAccount](#delivery-bankaccount) | null | Bank account the customer should wire the shipping fee to — looked upvia the currency of the linked shipping Order (falls back to defaultcurrency). Null if no matching account is configured. |
| invoice | [Invoice](#invoice) | null | Receipt. Null for order-backed returns (shipped-but-uninvoiced orders) —Twig text templates referencing `return.invoice.*` render empty there. |
| order | [Order](#order) | null | Order behind the case — direct for order-backed returns, else via theinvoice. Null only when neither resolves. |
| shippingOrder | [ReturnShippingOrder](#returnshippingorder) | null | Synthetic shipping-fee Order holding the variable symbol and payment-gatewayhash. Null for non-UPFRONT returns. Exposed as a minimal RO so Twig canreach `.variableSymbol` / `.hash` without pulling in the full OrderROsurface. |

Examples:

```twig
{{ returncase.id }}
{{ returncase.code }}
{{ returncase.stateLabel }}
{{ returncase.typeLabel }}
{{ returncase.createdDate|date('d. m. Y H:i') }}
{% for returnCaseItem in returncase.items %} ... {% endfor %}
{{ returncase.state }}
{% if returncase.refundAccountNumber %} {{ returncase.refundAccountNumber }} {% endif %}
{% if returncase.shipmentCarrierCode %} {{ returncase.shipmentCarrierCode }} {% endif %}
{% if returncase.shipmentPIN %} {{ returncase.shipmentPIN }} {% endif %}
{% if returncase.shippingFee %} {{ returncase.shippingFee }} {% endif %}
{{ returncase.incomingDate|date('d. m. Y H:i') }}
{{ returncase.shipmentHandInDeadline|date('d. m. Y H:i') }}
{% if returncase.paymentBankAccount %} {{ returncase.paymentBankAccount }} {# BankAccount #} {% endif %}
{% if returncase.invoice %} {{ returncase.invoice }} {# Invoice #} {% endif %}
{% if returncase.order %} {{ returncase.order }} {# Order #} {% endif %}
{% if returncase.shippingOrder %} {{ returncase.shippingOrder }} {# ReturnShippingOrder #} {% endif %}
```

## ReturnCaseItem

**Attributes of object ReturnCaseItem**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| quantity | int | Returned item quantity |
| name | string | Returned item name — invoice line name, or the order line name fororder-backed returns (shipped-but-uninvoiced orders). |
| code | string | null | Code — from whichever purchase line (invoice or order) backs the row;null when the line no longer references a catalog item. |
| note | string | null | Customer's per-item note from the wizard. |
| reasonLabel | string | null | Return reason in the case's language. Null without a reason (RETURN-typerows are reason-optional), without a translation for the language, orfor legacy constructions that predate the context parameter. |

Examples:

```twig
{{ returncaseitem.id }}
{{ returncaseitem.quantity }}
{{ returncaseitem.name }}
{% if returncaseitem.code %} {{ returncaseitem.code }} {% endif %}
{% if returncaseitem.note %} {{ returncaseitem.note }} {% endif %}
{% if returncaseitem.reasonLabel %} {{ returncaseitem.reasonLabel }} {% endif %}
```

## ReturnShippingOrder

Minimal read-object exposing the fields of the synthetic return-shipping Order
that email templates need — variable symbol, hash, gateway URL. Avoids
pulling the full OrderRO surface (which assumes a user-facing order and
exposes delivery/customer/vouchers the return-fee flow doesn't have).

**Attributes of object ReturnShippingOrder**

| Name | Type | Description |
|---|---|---|
| code | string | Order code (e.g. `R240001`). |
| currency | string | Currency of the order (e.g. `CZK`, `EUR`). |
| hash | string | Order hash — used to build gateway redirect URLs like`/transakce-&lt;hash>-&lt;subtype>`. |
| paymentUrl | string | Absolute URL to the legacy `/transakce-&lt;hash>-&lt;subtype>` payment-gatewayentry point, or null when no payment subtype is configured.Mirrors `ReturnController::buildPaymentGatewayUrl()` — there is noURL helper for the payment-start URL here, so we assemblethe URL directly rather than via UrlGeneratorInterface. |
| variableSymbol | string | Variable symbol for bank transfer. Falls back to the order code when noexplicit VS was set — mirrors `Order::getVs()`. |
| vs | string | Alias for `variableSymbol` — matches the Twig convention used elsewhere. |

Examples:

```twig
{{ returnshippingorder.code }}
{{ returnshippingorder.currency }}
{{ returnshippingorder.hash }}
{{ returnshippingorder.paymentUrl }}
{{ returnshippingorder.variableSymbol }}
{{ returnshippingorder.vs }}
```

## Review

**Attributes of object Review**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| date | datetime | Date |
| images | [Image](#image)\[] | Images |
| rating | int | null | Rating |
| cons | string | null | Cons |
| email | string | null | Email |
| name | string | null | Name |
| pros | string | null | Pros |
| ratingReaction | string | null | Store reaction |
| reply | string | null | Public store reply |
| text | string | null | Review text |
| replyDate | datetime | null | Public store reply date |
| recommends | bool | null | Store recommendation |
| product | [Product](#product) | null | Reviewed product (only for product reviews, null otherwise) |
| ratingDeliveryTime | int | float | null | Delivery time ratingThe external ratings are stored as the review platform sent them —half-star values such as 4.5 are common — so they are returned asgiven instead of being truncated to an int. |
| ratingWebUsability | int | float | null | Website usability rating |
| ratingCommunication | int | float | null | Store communication rating |
| ratingTransportQuality | int | float | null | Delivery quality rating |

Examples:

```twig
{{ review.id }}
{{ review.date|date('d. m. Y H:i') }}
{% for image in review.images %} ... {% endfor %}
{% if review.rating %} {{ review.rating }} {% endif %}
{% if review.cons %} {{ review.cons }} {% endif %}
{% if review.email %} {{ review.email }} {% endif %}
{% if review.name %} {{ review.name }} {% endif %}
{% if review.pros %} {{ review.pros }} {% endif %}
{% if review.ratingReaction %} {{ review.ratingReaction }} {% endif %}
{% if review.reply %} {{ review.reply }} {% endif %}
{% if review.text %} {{ review.text }} {% endif %}
{{ review.replyDate|date('d. m. Y H:i') }}
{% if review.recommends %} ... {% endif %}
{% if review.product %} {{ review.product }} {# Product #} {% endif %}
{% if review.ratingDeliveryTime %} {{ review.ratingDeliveryTime }} {% endif %}
{% if review.ratingWebUsability %} {{ review.ratingWebUsability }} {% endif %}
{% if review.ratingCommunication %} {{ review.ratingCommunication }} {% endif %}
{% if review.ratingTransportQuality %} {{ review.ratingTransportQuality }} {% endif %}
```

## Seo

**Attributes of object Seo**

| Name | Type | Description |
|---|---|---|
| description | string | null | SEO description |
| keywords | string | null | SEO keywords |
| title | string | null | SEO title |

Examples:

```twig
{% if seo.description %} {{ seo.description }} {% endif %}
{% if seo.keywords %} {{ seo.keywords }} {% endif %}
{% if seo.title %} {{ seo.title }} {% endif %}
```

## Shop

**Attributes of object Shop**

| Name | Type | Description | Example output |
|---|---|---|---|
| socialProfiles | [SocialProfile](#socialprofile)\[] | Social networks |  |
| reviewCount | int | null | Number of order-type reviews counted in the shop rating. Cached hourly by cron. Null when alias is unknown. |  |
| email | string | null | Email | info@my-shop.cz |
| language | string | null | Shop language |  |
| locale | string | null | Locale |  |
| name | string | null | Name | MyShop.cz |
| phone | string | null | Phone | +420 777 123 456 |
| shortDomain | string | null | Domain without WWW |  |
| url | string | null | URL | https://my-shop.cz |
| averageRating | float | null | Average rating (0-5) across order-type reviews for the shop language. Cached hourly by cron. Null when no reviews are available yet or alias is unknown. |  |
| recommendsRate | float | null | Percentage (0-100) of order-type reviews where the customer recommends the shop. Cached hourly by cron. Null when no reviews carry the recommendation field or alias is unknown. |  |
| country | [Address/Country](#address-country) | null | Country |  |
| image | [Image](#image) | null | Image |  |

Examples:

**Shop info in footer**

```twig
{{ shop.name }}
{{ shop.email }}
{{ shop.phone }}
{% for profile in shop.socialProfiles %}
<a href="{{ profile.url }}">{{ profile.type }}</a>
{% endfor %}
```

## SocialProfile

**Attributes of object SocialProfile**

| Name | Type | Description |
|---|---|---|
| type | string | Social network type |
| url | string | Profile URL |

Examples:

```twig
{{ socialprofile.type }}
{{ socialprofile.url }}
```

## StorageCenter

**Attributes of object StorageCenter**

| Name | Type | Description |
|---|---|---|
| name | string | Name |
| storageRooms | [StorageRoom](#storageroom)\[] | Storage rooms |
| shortName | string | null | Short name |
| address | [Address](#address) | null | Center address |

Examples:

```twig
{{ storagecenter.name }}
{% for storageRoom in storagecenter.storageRooms %} ... {% endfor %}
{% if storagecenter.shortName %} {{ storagecenter.shortName }} {% endif %}
{% if storagecenter.address %} {{ storagecenter.address }} {# Address #} {% endif %}
```

## StorageRoom

**Attributes of object StorageRoom**

| Name | Type | Description |
|---|---|---|
| name | string | Name |
| doesSupportLocations | bool | Uses storage locations? |

Examples:

```twig
{{ storageroom.name }}
{% if storageroom.doesSupportLocations %} ... {% endif %}
```

## Store

**Attributes of object Store**

| Name | Type | Description |
|---|---|---|
| distanceFromPoint | int | Distance of store from point in kilometers |
| id | int | Id |
| name | string | Name |
| cashiers | [Admin](#admin)\[] | Cashiers |
| attributes | [Attribute/AttributeInstance](#attribute-attributeinstance)\[] | Attributes and values |
| images | [Image](#image)\[] | Images |
| url | [Url](#url) | Store URL |
| videos | [Video](#video)\[] | Videos |
| city | string | null | City |
| companyId | string | null | Company ID |
| email | string | null | Email |
| latitude | string | null | GPS - latitude |
| longitude | string | null | GPS - longitude |
| phone | string | null | Phone |
| street | string | null | Street |
| vatId | string | null | VAT ID |
| zip | string | null | Zip code |
| text | html | null | Text |
| country | [Address/Country](#address-country) | null | Country |
| attribute | [Attribute/AttributeInstance](#attribute-attributeinstance) | null | Attribute with values |
| image | [Image](#image) | null | Image |
| seo | [Seo](#seo) | null | SEO attributes |
| workingHours | [WorkingHours](#workinghours) | null | Working hours |
| contentGrid | array | null | Content grid |

Examples:

```twig
{{ store.distanceFromPoint }}
{{ store.id }}
{{ store.name }}
{% for admin in store.cashiers %} ... {% endfor %}
{% for attributeInstance in store.attributes %} ... {% endfor %}
{% for image in store.images %} ... {% endfor %}
{{ store.url }} {# Url #}
{% for video in store.videos %} ... {% endfor %}
{% if store.city %} {{ store.city }} {% endif %}
{% if store.companyId %} {{ store.companyId }} {% endif %}
{% if store.email %} {{ store.email }} {% endif %}
{% if store.latitude %} {{ store.latitude }} {% endif %}
{% if store.longitude %} {{ store.longitude }} {% endif %}
{% if store.phone %} {{ store.phone }} {% endif %}
{% if store.street %} {{ store.street }} {% endif %}
{% if store.vatId %} {{ store.vatId }} {% endif %}
{% if store.zip %} {{ store.zip }} {% endif %}
{% if store.text %} {{ store.text }} {% endif %}
{% if store.country %} {{ store.country }} {# Country #} {% endif %}
{% if store.attribute %} {{ store.attribute }} {# AttributeInstance #} {% endif %}
{% if store.image %} {{ store.image }} {# Image #} {% endif %}
{% if store.seo %} {{ store.seo }} {# Seo #} {% endif %}
{% if store.workingHours %} {{ store.workingHours }} {# WorkingHours #} {% endif %}
{% if store.contentGrid %} {{ store.contentGrid }} {% endif %}
```

## Supplier

**Attributes of object Supplier**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| name | string | Name |
| publicContacts | [Address](#address)\[] | Public contacts |

Examples:

```twig
{{ supplier.id }}
{{ supplier.name }}
{% for address in supplier.publicContacts %} ... {% endfor %}
```

## TextPage

Text page - used for terms and conditions, etc.

**Attributes of object TextPage**

| Name | Type | Description |
|---|---|---|
| id | int | ID |
| name | string | Page name |
| files | [File](#file)\[] | Files (manuals, specifications, ...) |
| images | [Image](#image)\[] | Images |
| subPages | [TextPage](#textpage)\[] | Subpages |
| url | [Url](#url) | Page URL |
| videos | [Video](#video)\[] | Videos |
| code | string | null | Code identifier for template conditions |
| text | html | null | Page text |
| image | [Image](#image) | null | Main image |
| contentGrid | array | null | Content grid |

Examples:

```twig
{{ textpage.id }}
{{ textpage.name }}
{% for file in textpage.files %} ... {% endfor %}
{% for image in textpage.images %} ... {% endfor %}
{% for textPage in textpage.subPages %} ... {% endfor %}
{{ textpage.url }} {# Url #}
{% for video in textpage.videos %} ... {% endfor %}
{% if textpage.code %} {{ textpage.code }} {% endif %}
{% if textpage.text %} {{ textpage.text }} {% endif %}
{% if textpage.image %} {{ textpage.image }} {# Image #} {% endif %}
{% if textpage.contentGrid %} {{ textpage.contentGrid }} {% endif %}
```

## TextTemplate

Text page from template - order confirmation, etc.

**Attributes of object TextTemplate**

| Name | Type | Description |
|---|---|---|
| name | string | Name |
| text | html | null | Page text |

Examples:

```twig
{{ texttemplate.name }}
{% if texttemplate.text %} {{ texttemplate.text }} {% endif %}
```

## TimeBlock

**Attributes of object TimeBlock**

| Name | Type | Description |
|---|---|---|
| end | string | Opening end time |
| separator | string | Time separator |
| start | string | Opening start time |

Examples:

```twig
{{ timeblock }}
{{ timeblock.end }}
{{ timeblock.separator }}
{{ timeblock.start }}
```

## Topic

**Attributes of object Topic**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| name | string | Name |
| image | [Image](#image) | Image |
| subtopics | [Topic](#topic)\[] | Subtopics |
| url | [Url](#url) | URL (without domain) |
| pathNames | array | Topic path (names) |
| text | html | null | Text |
| seo | [Seo](#seo) | null | SEO attributes |
| parent | [Topic](#topic) | null | Parent topic |
| contentGrid | array | null | Content grid |

Examples:

```twig
{{ topic.id }}
{{ topic.name }}
{{ topic.image }} {# Image #}
{% for topic in topic.subtopics %} ... {% endfor %}
{{ topic.url }} {# Url #}
{{ topic.pathNames }}
{% if topic.text %} {{ topic.text }} {% endif %}
{% if topic.seo %} {{ topic.seo }} {# Seo #} {% endif %}
{% if topic.parent %} {{ topic.parent }} {# Topic #} {% endif %}
{% if topic.contentGrid %} {{ topic.contentGrid }} {% endif %}
```

## Unit

**Attributes of object Unit**

| Name | Type | Description |
|---|---|---|
| name | string | Quantity unit name |

Examples:

```twig
{{ unit.name }}
```

## UnitPrice

**Attributes of object UnitPrice**

| Name | Type | Description |
|---|---|---|
| formatted | string | Formatted output (e.g. 1 123 CZK/kg) |
| unit | string | Base unit (e.g. kg) |
| price | [PriceValue](#pricevalue) | Price per unit |

Examples:

```twig
{{ unitprice }}
{{ unitprice.formatted }}
{{ unitprice.unit }}
{{ unitprice.price }} {# PriceValue #}
```

## Upsell

**Attributes of object Upsell**

| Name | Type | Description |
|---|---|---|
| id | int | ID |
| name | string | Item name |
| inCart | bool | Is in current order? |
| category | [Category](#category) | Main category |
| price | [Price](#price) | Unit price |
| group | [UpsellGroup](#upsellgroup) | Group |
| code | string | null | Item code |
| vatRate | float | null | VAT rate (%) |
| image | [Image](#image) | null | Item image |
| product | [Product](#product) | null | Upsell item product (for URL, description, ...)Null only for upsells whose item/product was deleted; list producers filterthose out, so templates never see a product-less upsell. |
| unit | [Unit](#unit) | null | Quantity unit |

Examples:

```twig
{{ upsell.id }}
{{ upsell.name }}
{% if upsell.inCart %} ... {% endif %}
{{ upsell.category }} {# Category #}
{{ upsell.price }} {# Price #}
{{ upsell.group }} {# UpsellGroup #}
{% if upsell.code %} {{ upsell.code }} {% endif %}
{% if upsell.vatRate %} {{ upsell.vatRate }} {% endif %}
{% if upsell.image %} {{ upsell.image }} {# Image #} {% endif %}
{% if upsell.product %} {{ upsell.product }} {# Product #} {% endif %}
{% if upsell.unit %} {{ upsell.unit }} {# Unit #} {% endif %}
```

## UpsellGroup

**Attributes of object UpsellGroup**

| Name | Type | Description |
|---|---|---|
| id | int | ID |
| requiredNoteMaximumLength | int | Maximum customer note length |
| name | string | Group name |
| requiredNote | bool | Is customer note required? |
| requiredUpload | bool | Is customer file upload required? |
| singleSelection | bool | Selection mode |
| text | html | null | Text |
| uploadInput | html | null | HTML for file upload input |

Examples:

```twig
{{ upsellgroup.id }}
{{ upsellgroup.requiredNoteMaximumLength }}
{{ upsellgroup.name }}
{% if upsellgroup.requiredNote %} ... {% endif %}
{% if upsellgroup.requiredUpload %} ... {% endif %}
{% if upsellgroup.singleSelection %} ... {% endif %}
{% if upsellgroup.text %} {{ upsellgroup.text }} {% endif %}
{% if upsellgroup.uploadInput %} {{ upsellgroup.uploadInput }} {% endif %}
```

## Url

**Attributes of object Url**

| Name | Type | Description | Example output |
|---|---|---|---|
| absolute | string | URL including domain and protocol | https://www.example.org/product-1 |
| path | string | URL within domain | /product-1 |

Examples:

```twig
{{ url }}
{{ url.absolute }}
{{ url.path }}
```

## UserPointChange

Loyalty program points change

**Attributes of object UserPointChange**

| Name | Type | Description |
|---|---|---|
| amount | int | Points amount |
| text | string | Description |
| date | datetime | Date |
| dateExpire | datetime | null | Expiration date |

Examples:

```twig
{{ userpointchange.amount }}
{{ userpointchange.text }}
{{ userpointchange.date|date('d. m. Y H:i') }}
{{ userpointchange.dateExpire|date('d. m. Y H:i') }}
```

## Variant

**Attributes of object Variant**

| Name | Type | Description |
|---|---|---|
| id | int | Internal variant ID |
| name | string | Variant name |
| trackingId | string | ID used in feeds and tracking scripts |
| active | bool | Active |
| selected | bool | Is preselected? |
| availableUpsellGroups | [AvailableUpsellGroup](#availableupsellgroup)\[] | Available upsell groups |
| enumValues | [EnumValue](#enumvalue)\[] | Enum values |
| images | [Image](#image)\[] | Variant images |
| item | [Item](#item) | Item |
| product | [Product](#product) | Product |
| availableUpsells | [Upsell](#upsell)\[] | Available upsell items |
| url | [Url](#url) | Variant URL (variant is preselected in product detail) |
| legacyRel | string | null | Legacy property listing - awaiting migration |
| image | [Image](#image) | null | Item image |

Examples:

**Variant properties display**

```twig
{{ variant.name }}
{{ variant.code }}
{{ variant.item.price.current.formatted }}
{% if variant.item.available %}In stock{% endif %}
```

## VariantChoice

**Attributes of object VariantChoice**

| Name | Type | Description |
|---|---|---|
| inputValue | string | Value for selection input |
| name | string | Choice name |
| selected | bool | Is value selected? (for input checked) |
| color | string | null | Hex color code (including #) |
| description | string | null | Value description |
| availability | [Availability](#availability) | null | Availability |
| bundle | [Bundle](#bundle) | null | Bundle |
| icon | [Image](#image) | null | Choice icon image |
| image | [Image](#image) | null | Image |
| price | [Price](#price) | null | Item price |

Examples:

```twig
{{ variantchoice.inputValue }}
{{ variantchoice.name }}
{% if variantchoice.selected %} ... {% endif %}
{% if variantchoice.color %} {{ variantchoice.color }} {% endif %}
{% if variantchoice.description %} {{ variantchoice.description }} {% endif %}
{% if variantchoice.availability %} {{ variantchoice.availability }} {# Availability #} {% endif %}
{% if variantchoice.bundle %} {{ variantchoice.bundle }} {# Bundle #} {% endif %}
{% if variantchoice.icon %} {{ variantchoice.icon }} {# Image #} {% endif %}
{% if variantchoice.image %} {{ variantchoice.image }} {# Image #} {% endif %}
{% if variantchoice.price %} {{ variantchoice.price }} {# Price #} {% endif %}
```

## VariantChoiceStep

**Attributes of object VariantChoiceStep**

| Name | Type | Description |
|---|---|---|
| headline | string | Headline |
| inputName | string | Selection input name |
| mode | string | Selection display mode code |
| final | bool | Last selection step? (i.e. no more steps load after choosing a value) |
| choices | [VariantChoice](#variantchoice)\[] | array | Available choices |
| description | string | null | Selection description |
| infoDescription | string | null | Description for more information link |
| messageEmpty | string | null | Error message when value is not selected |
| placeholder | string | null | First "placeholder" item for dropdown |
| icon | [Image](#image) | null | Icon |
| infoIcon | [Image](#image) | null | Icon |
| info | [TextPage](#textpage) | null | Text page with additional information |
| selectedChoice | [VariantChoice](#variantchoice) | null | Selected choice |

Examples:

```twig
{{ variantchoicestep.headline }}
{{ variantchoicestep.inputName }}
{{ variantchoicestep.mode }}
{% if variantchoicestep.final %} ... {% endif %}
{% for variantChoice in variantchoicestep.choices %} ... {% endfor %}
{% if variantchoicestep.description %} {{ variantchoicestep.description }} {% endif %}
{% if variantchoicestep.infoDescription %} {{ variantchoicestep.infoDescription }} {% endif %}
{% if variantchoicestep.messageEmpty %} {{ variantchoicestep.messageEmpty }} {% endif %}
{% if variantchoicestep.placeholder %} {{ variantchoicestep.placeholder }} {% endif %}
{% if variantchoicestep.icon %} {{ variantchoicestep.icon }} {# Image #} {% endif %}
{% if variantchoicestep.infoIcon %} {{ variantchoicestep.infoIcon }} {# Image #} {% endif %}
{% if variantchoicestep.info %} {{ variantchoicestep.info }} {# TextPage #} {% endif %}
{% if variantchoicestep.selectedChoice %} {{ variantchoicestep.selectedChoice }} {# VariantChoice #} {% endif %}
```

## VariantType

**Attributes of object VariantType**

| Name | Type | Description |
|---|---|---|
| id | int | Id |
| name | string | Name |

Examples:

```twig
{{ varianttype.id }}
{{ varianttype.name }}
```

## Video

Videos should not be output via \<video src=, but always via the helper tag \<i:video, which handles retina displays and responsiveness.

**Attributes of object Video**

| Name | Type | Description |
|---|---|---|
| embeddedUrl | string | URL for displaying the player (for Fancybox only, otherwise use i:video) |
| aspectRatioForCss | string | null | Aspect ratio as a CSS-ready "width/height" string (e.g. "1920/1080"), or null if unknown.Use this for the CSS aspect-ratio property: style="aspect-ratio: {{ video.aspectRatioForCss }}" |
| name | string | null | Name |
| thumbnailUrl | string | null | Thumbnail URL of the video, for gallery/lightbox thumbnails (fancybox `data-thumb`).Falls back through everything the video can offer: the image set in theadmin, the poster frame of an uploaded video, and finally the posterYouTube serves for the embedded video. Returns null when the sourceprovides no thumbnail at all (Vimeo).`&lt;i:video>` fills `data-thumb` from this automatically, so a templateonly needs it for a thumbnail rendered outside the fancybox trigger. |
| aspectRatio | float | null | Aspect ratio as a float (e.g. 1.778 for 1920×1080), or null if unknown. |
| image | [Image](#image) | null | Main image |

Examples:

```twig
{{ video.embeddedUrl }}
{% if video.aspectRatioForCss %} {{ video.aspectRatioForCss }} {% endif %}
{% if video.name %} {{ video.name }} {% endif %}
{% if video.thumbnailUrl %} {{ video.thumbnailUrl }} {% endif %}
{% if video.aspectRatio %} {{ video.aspectRatio }} {% endif %}
{% if video.image %} {{ video.image }} {# Image #} {% endif %}
```

## Visit

**Attributes of object Visit**

| Name | Type | Description | Example output |
|---|---|---|---|
| perPage | int | Records per page | 20 |
| country | string | Country code | cz |
| currency | string | Currency code | CZK |
| deliveryCountry | string | Delivery country code | cz |
| language | string | Language code | cz |
| android | bool | Is visitor using Android? |  |
| bot | bool | Is visitor a bot? | true |
| iOS | bool | Is visitor using iOS? |  |
| mobileDevice | bool | Is visitor on mobile device? | true |

Examples:

```twig
{{ visit.perPage }}
{{ visit.country }}
{{ visit.currency }}
{{ visit.deliveryCountry }}
{{ visit.language }}
{% if visit.android %} ... {% endif %}
{% if visit.bot %} ... {% endif %}
{% if visit.iOS %} ... {% endif %}
{% if visit.mobileDevice %} ... {% endif %}
```

## Voucher/GiftVoucher

**Attributes of object Voucher/GiftVoucher**

| Name | Type | Description |
|---|---|---|
| code | string | Code |
| name | string | Discount code name |
| validFrom | datetime | Validity start date |
| validTo | datetime | Expiration date |
| value | [PriceValue](#pricevalue) | Voucher value |

Examples:

```twig
{{ giftvoucher.code }}
{{ giftvoucher.name }}
{{ giftvoucher.validFrom|date('d. m. Y H:i') }}
{{ giftvoucher.validTo|date('d. m. Y H:i') }}
{{ giftvoucher.value }} {# PriceValue #}
```

## Warranty

**Attributes of object Warranty**

| Name | Type | Description |
|---|---|---|
| months | int | Number of months |

Examples:

```twig
{{ warranty.months }}
```

## WorkingHours

**Attributes of object WorkingHours**

| Name | Type | Description |
|---|---|---|
| open | bool | Is currently open? |
| forNextDays | [DayBlock](#dayblock)\[] | Opening hours for upcoming days |
| week | array | Opening hours for the week, consecutive days are merged into one record |
| weekFull | array | Opening hours for the full week, each day separately |
| specialCases | array | Opening hours exceptions |
| nextClose | datetime | null | Date and time of next closing |
| nextOpen | datetime | null | Date and time of next opening (if at all) |

Examples:

```twig
{% if workinghours.open %} ... {% endif %}
{% for dayBlock in workinghours.forNextDays %} ... {% endfor %}
{{ workinghours.week }}
{{ workinghours.weekFull }}
{{ workinghours.specialCases }}
{{ workinghours.nextClose|date('d. m. Y H:i') }}
{{ workinghours.nextOpen|date('d. m. Y H:i') }}
```
