channels.json

The channels a merchant sells in, and the context keys requests may carry.

channels

A market or storefront with its locales, currency and assortment.

idstringRequired

A channel's id, such as de or ch: a market or storefront.

labelstring or map of strings

A plain value, or a map from locale to value such as { "de": "Farbe", "en": "Color" }.

localesarray of stringsRequired

The locales the channel serves; the first is its default.

currencystringRequired

An ISO 4217 currency code, such as EUR.

countriesarray of strings

An enforced filter on everything the channel shows, such as { "not": { "b2b_only": true } }. Shoppers cannot remove it. A product is in the assortment when it has an offer in the channel and matches this selector.

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
categoryobject

The entity is in this category, or below it with within.

A category, exactly or including everything below it.

2 fields
isstring or array of strings

One value, or a list meaning any of them.

withinstring or array of strings

One value, or a list meaning any of them.

anyarray of objectsat least 1 item

At least one of these holds.

allarray of objectsat least 1 item

All of these hold; useful inside any.

This does not hold.

<key>boolean, number, string, array of (boolean, number or string) or object

A plain value (equal), a list (any of them), or an operator object such as { "lt": 20 }.

6 fields
ltboolean, number or string

A single value in a selector, filter or test: text, a number or a boolean. Dates are text, such as 2026-10-01.

lteboolean, number or string

A single value in a selector, filter or test: text, a number or a boolean. Dates are text, such as 2026-10-01.

gtboolean, number or string

A single value in a selector, filter or test: text, a number or a boolean. Dates are text, such as 2026-10-01.

gteboolean, number or string

A single value in a selector, filter or test: text, a number or a boolean. Dates are text, such as 2026-10-01.

betweenarray of (boolean, number or string)2 items

From the first value to the second, both included.

existsboolean

True: the field has a value. False: it has none.

context

The context keys a request may carry and the values each allows, such as { "customer_group": ["b2c", "b2b"] }. A key or value not declared here is a validation error, not a rule that never fires. Context never carries personal data.

$schema

The JSON Schema an editor checks this file against; kept as written.

Example

tests/fixtures/home/channels.json (trimmed)
{
  "$schema": "../../../contracts/schema/channels.json",
  "channels": [
    {
      "id": "de",
      "label": { "de": "Deutschland", "en": "Germany" },
      "locales": ["de", "en"],
      "currency": "EUR",
      "countries": ["DE"]
    }
  ]
}

Guide: Channels

On this page