Liquid blocks, presets and locks

The schema separates what a merchant may build from the starting tree a preset initially creates.

Block definitions

block_types defines the available types. Each definition needs a safe unique type, visible name, settings, optional allowed_blocks, optional max_blocks and optional presets.

The section's top-level allowed_blocks lists which defined block types may be placed directly inside it. A block definition's own allowed_blocks controls its children.

Presets

A preset supplies starting settings and a starting nested block tree. It does not become another rendering system. After insertion, the merchant owns that installed tree and values.

Preset children must use a type allowed by their parent and respect every maximum. A block may provide at most 30 named presets. One schema may describe at most 500 preset nodes.

Local blocks

local_blocks defines section-only block types. Their type begins with an underscore. They remain implemented inside the main section Liquid file and do not receive separate Agency Mode editors.

Static locks

static_blocks fixes required local blocks in important positions. Each entry must preserve its ID and type and declare:

{
  "id": "summary",
  "type": "_summary",
  "static": true,
  "removable": false,
  "reorderable": false,
  "duplicatable": false
}

Do not rename or loosen an installed static block merely to make a schema edit pass. Its identity and locks are part of the section contract.