categories.json
The facets and sort options of search and category pages.
default
object
What search pages and every category use unless a node says otherwise.
The facets and sort options of a page.
The facets in display order.
A facet on a page: a field code such as "color", or an object that also says how it is shown. A field code alone is shown as default shows it, or in the field's natural kind.
12 fields
An attribute code, or one of category, brand, price, on_sale, availability and delivery_days, which reads the latest day of delivery.
The bounds of buckets and relative facets, in ascending order.
A bucket from from (inclusive) to to (exclusive); either end may be open. Without from, a bucket counts everything up to its to, as in "up to 2 weeks"; without to, everything from its from on, as in "4 stars and more". Such open buckets may overlap.
The order of a facet's values. Default: most results first; buckets keep their own order; grades, buttons and a select keep the order the values are listed in.
3 values
One value at most, chosen from a radio group with "Any" first, such as a delivery time whose buckets overlap.
Text shown under the facet's name and read with it, such as what a delivery time counts from. Never a tooltip.
Parts of the list under headings of their own, such as "Wood" above oak and walnut, in order. Values no heading names follow the last one.
A heading inside a facet and the values it stands above.
A search box above the values, for long lists such as brands.
The most values a list or swatch carries with the page before more says there are others: the most frequent ones, and every chosen one. Default: the limit facet_values. A select or a scale that shows every value raises it.
How the values look beyond their kind. Default: the kind's own look; a rating shows stars.
7 values
A range: a two-thumb slider above the two inputs, which stay.
A range over the price: a slider with the distribution of the prices drawn behind it, in the bins of a fixed ladder of preferred numbers (histogram of the response). Prices that fall in a single bin get the plain slider.
A rating: stars beside each bucket; its words carry the meaning.
An option's values on badges in their own swatch colors, such as the energy label's A to G, in the order the values are listed. Every listed value needs a swatch.
One value at most, chosen from one native select with "Any" first, for a long ordered list such as a tyre width.
Each value's image beside its name: a brand's logo, or the image an option's value carries, such as an icon.
A storefront display of the shop's own, by the name the shop registered it under, such as color_tiles. A storefront without it draws display, or the kind's own look, so display keeps what it means for the data.
Facets drawn together under one heading.
Several of a page's facets under one heading, such as a tyre's width, ratio and rim as "Tyre size". The facets keep their own settings in facets; a group only says which belong together. It stands where the first of them stands on the page and draws them in its own order, and a page that lists fewer than two of them draws them apart. Each facet is counted under the choices of the others, as every facet is, and the page counts the group whole or not at all.
4 fields
Names the group in the response and the trace.
The heading.
The fields of its facets, at least two, each in one group at most.
The sort options a page offers. relevance is built in; the others are defined in ranking.json.
2 fields
The order a page starts with, where the shopper chose none and the request has no words, which rank by relevance. The nearest node up the tree that sets one decides; the layout's default is the last. Default: relevance.
The orders a shopper can choose, in display order. A page offers those of the nearest node that lists some, or the layout's default.
nodes
array of objects
Settings per category node. A node inherits from its parent and overrides only what differs.
One category node's settings.
The id of a category node, such as wohnen/sofas: the merchant's id of a category entity.
The facets in display order; replaces the inherited list.
A facet on a page: a field code such as "color", or an object that also says how it is shown. A field code alone is shown as default shows it, or in the field's natural kind.
12 fields
An attribute code, or one of category, brand, price, on_sale, availability and delivery_days, which reads the latest day of delivery.
The bounds of buckets and relative facets, in ascending order.
A bucket from from (inclusive) to to (exclusive); either end may be open. Without from, a bucket counts everything up to its to, as in "up to 2 weeks"; without to, everything from its from on, as in "4 stars and more". Such open buckets may overlap.
The order of a facet's values. Default: most results first; buckets keep their own order; grades, buttons and a select keep the order the values are listed in.
3 values
One value at most, chosen from a radio group with "Any" first, such as a delivery time whose buckets overlap.
Text shown under the facet's name and read with it, such as what a delivery time counts from. Never a tooltip.
Parts of the list under headings of their own, such as "Wood" above oak and walnut, in order. Values no heading names follow the last one.
A heading inside a facet and the values it stands above.
A search box above the values, for long lists such as brands.
The most values a list or swatch carries with the page before more says there are others: the most frequent ones, and every chosen one. Default: the limit facet_values. A select or a scale that shows every value raises it.
How the values look beyond their kind. Default: the kind's own look; a rating shows stars.
7 values
A range: a two-thumb slider above the two inputs, which stay.
A range over the price: a slider with the distribution of the prices drawn behind it, in the bins of a fixed ladder of preferred numbers (histogram of the response). Prices that fall in a single bin get the plain slider.
A rating: stars beside each bucket; its words carry the meaning.
An option's values on badges in their own swatch colors, such as the energy label's A to G, in the order the values are listed. Every listed value needs a swatch.
One value at most, chosen from one native select with "Any" first, for a long ordered list such as a tyre width.
Each value's image beside its name: a brand's logo, or the image an option's value carries, such as an icon.
A storefront display of the shop's own, by the name the shop registered it under, such as color_tiles. A storefront without it draws display, or the kind's own look, so display keeps what it means for the data.
Facets drawn together under one heading; replaces the inherited groups, and an empty list leaves the page without any.
Several of a page's facets under one heading, such as a tyre's width, ratio and rim as "Tyre size". The facets keep their own settings in facets; a group only says which belong together. It stands where the first of them stands on the page and draws them in its own order, and a page that lists fewer than two of them draws them apart. Each facet is counted under the choices of the others, as every facet is, and the page counts the group whole or not at all.
4 fields
Names the group in the response and the trace.
The heading.
The fields of its facets, at least two, each in one group at most.
The sort options a page offers. relevance is built in; the others are defined in ranking.json.
2 fields
The order a page starts with, where the shopper chose none and the request has no words, which rank by relevance. The nearest node up the tree that sets one decides; the layout's default is the last. Default: relevance.
The orders a shopper can choose, in display order. A page offers those of the nearest node that lists some, or the layout's default.
A smart category: entities matching this selector belong to the node, in addition to those assigned in the catalog. "Sale" is { "on_sale": true }.
Picks entities (where). Attribute codes and the built-in fields brand, price, on_sale, availability and delivery_days are keys of the same object; category takes is or within.
{ "any": [{ "brand": "bosch" }, { "quality": "oe" }], "not": { "availability": "out_of_stock" } }
5 fields
At least one of these holds.
All of these hold; useful inside any.
A plain value (equal), a list (any of them), or an operator object such as { "lt": 20 }.
6 fields
A single value in a selector, filter or test: text, a number or a boolean. Dates are text, such as 2026-10-01.
A single value in a selector, filter or test: text, a number or a boolean. Dates are text, such as 2026-10-01.
A single value in a selector, filter or test: text, a number or a boolean. Dates are text, such as 2026-10-01.
A single value in a selector, filter or test: text, a number or a boolean. Dates are text, such as 2026-10-01.
From the first value to the second, both included.
True: the field has a value. False: it has none.
The filter pages of the node and the categories below it, from the combinations routes.json lists: [["gender"]] narrows them, [] leaves none. Default: the parent's.
$schema
string
The JSON Schema an editor checks this file against; kept as written.
Example
{
"$schema": "../../../contracts/schema/categories.json",
"default": {
"facets": ["category", { "field": "price", "display": "histogram" }],
"sort": { "default": "relevance", "options": ["relevance", "price_asc"] }
},
"nodes": [
{
"category": "wohnen/sofas",
"facets": [
"width",
{ "field": "seats", "kind": "list", "display": "buttons" }
]
},
{
"category": "wohnen/sessel",
"facets": ["width", { "field": "seats", "kind": "list" }]
}
]
}Guide: Pages and their filters