Feed schema reference

The feed stays backward compatible at the top level while adding locale, pricing, image, and variant detail where the storefront data is reliable.

Top-level response

The products page keeps `shop`, `locale`, `catalog`, `paging`, and `products`. The feed index remains stable and additive.

Locale behavior

Use `lang` to request a locale. When the locale is missing or unsupported, the module falls back deterministically to the configured default language.

Filtering behavior

Include/exclude rules are evaluated before serialization. Hidden, inactive, or explicitly excluded entities are omitted from feed, markdown, llms, and llms-full surfaces.

Variant data

Variant structures are emitted only when PrestaShop combinations and attribute labels are present and reliable for the selected locale.

Backward compatibility

Existing flat fields remain in place. New nested fields such as `pricing`, `availability_detail`, `images`, `variants`, and `locale` are additive.

Minimal sample

{
  "shop": {
    "name": "Demo Store",
    "currency": "EUR",
    "url": "https://demo-store.example",
    "language": {
      "id": 1,
      "locale": "en-US",
      "iso_code": "en"
    }
  },
  "locale": {
    "requested": "en-US",
    "selected": {
      "id": 1,
      "locale": "en-US",
      "iso_code": "en",
      "name": "English"
    },
    "available": [
      {
        "id": 1,
        "locale": "en-US",
        "iso_code": "en",
        "name": "English"
      }
    ],
    "is_multilingual": false
  },
  "catalog": {
    "version": "catalog-version-hash",
    "last_updated_at": "2026-04-22T12:00:00+00:00"
  },
  "paging": {
    "limit": 1,
    "after_id": 0,
    "updated_since": null,
    "next_after_id": null,
    "has_more": false,
    "returned": 1,
    "next_url": null
  },
  "products": [
    {
      "id": 101,
      "name": "Demo product",
      "url": "https://demo-store.example/en/demo-product",
      "canonical_url": "https://demo-store.example/en/demo-product",
      "short_description": "Short summary",
      "price": 29.9,
      "currency": "EUR",
      "availability": "in_stock",
      "pricing": {
        "amount": 29.9,
        "currency": "EUR",
        "tax_included": true
      },
      "images": [
        {
          "id": 301,
          "url": "https://demo-store.example/301-home_default/demo-product.jpg",
          "is_cover": true
        }
      ],
      "variants": [],
      "locale": {
        "id": 1,
        "locale": "en-US",
        "iso_code": "en"
      }
    }
  ]
}

Rich sample

{
  "shop": {
    "name": "Demo Store",
    "currency": "EUR",
    "url": "https://demo-store.example",
    "language": {
      "id": 1,
      "locale": "en-US",
      "iso_code": "en"
    }
  },
  "locale": {
    "requested": "cs-CZ",
    "selected": {
      "id": 2,
      "locale": "cs-CZ",
      "iso_code": "cs",
      "name": "Czech"
    },
    "available": [
      {
        "id": 1,
        "locale": "en-US",
        "iso_code": "en",
        "name": "English"
      },
      {
        "id": 2,
        "locale": "cs-CZ",
        "iso_code": "cs",
        "name": "Czech"
      }
    ],
    "is_multilingual": true
  },
  "catalog": {
    "version": "catalog-version-hash",
    "last_updated_at": "2026-04-22T12:00:00+00:00"
  },
  "paging": {
    "limit": 1,
    "after_id": 0,
    "updated_since": null,
    "next_after_id": null,
    "has_more": false,
    "returned": 1,
    "next_url": null
  },
  "products": [
    {
      "id": 202,
      "name": "Variant product",
      "url": "https://demo-store.example/cs/variant-product",
      "canonical_url": "https://demo-store.example/cs/variant-product",
      "description": "Full sanitized description",
      "short_description": "Short sanitized description",
      "price": 39.9,
      "currency": "CZK",
      "pricing": {
        "amount": 39.9,
        "currency": "CZK",
        "tax_included": true
      },
      "availability": "in_stock",
      "availability_detail": {
        "status": "in_stock",
        "quantity": 12
      },
      "category": "Shoes",
      "brand": "Agentsfeed",
      "sku": "SKU-202",
      "reference": "SKU-202",
      "image_url": "https://demo-store.example/401-home_default/variant-product.jpg",
      "images": [
        {
          "id": 401,
          "url": "https://demo-store.example/401-home_default/variant-product.jpg",
          "is_cover": true
        },
        {
          "id": 402,
          "url": "https://demo-store.example/402-home_default/variant-product.jpg",
          "is_cover": false
        }
      ],
      "variants": [
        {
          "id": 601,
          "reference": "SKU-202-BLK-42",
          "sku": "SKU-202-BLK-42",
          "availability": "in_stock",
          "availability_detail": {
            "status": "in_stock",
            "quantity": 4
          },
          "pricing": {
            "amount": 39.9,
            "currency": "CZK",
            "tax_included": true,
            "price_impact": 0
          },
          "is_default": true,
          "url": "https://demo-store.example/cs/variant-product",
          "attributes": [
            {
              "group": "Color",
              "value": "Black"
            },
            {
              "group": "Size",
              "value": "42"
            }
          ]
        }
      ],
      "locale": {
        "id": 2,
        "locale": "cs-CZ",
        "iso_code": "cs"
      },
      "updated_at": "2026-04-22T12:00:00+00:00"
    }
  ]
}