DE Skip to documentation

Developers

Module catalogue

Use the versioned, fixed module contract instead of inventing unsupported components.

On this page

Get the specification

http
GET /api/v1/modules

The catalogue returns version 1, limits, field values and module definitions. Use this response as the contract for external draft composition. The exact machine names differ from some display labels.

Registered modules

TypeAccepted fields
textheading, text
heroheading, text, image, alt, link, button
imageimage, alt, caption, ratio, position
serviceheading, text, link, button
teamheading, text, image, alt
faqheading, text
noticeheading, text
contactheading, text, link, button
hoursheading, text
columnscolumns; may contain child modules

Example document

json
{
  "version": 1,
  "modules": [{
    "type": "columns",
    "fields": {"columns": 2},
    "children": [
      {"type": "text", "fields": {"heading": "Your visit", "text": "Fictional practice information."}},
      {"type": "service", "fields": {"heading": "Learn more", "text": "See our services.", "link": "/services/", "button": "Our services"}}
    ]
  }]
}

Validation limits

  • At most 80 modules per document, including nested modules; nesting depth is limited to five.
  • Each string field is at most 5,000 characters; text is plain text, not executable HTML.
  • Columns accept one, two or three. Only columns can have child modules.
  • Ratios: auto, 1/1, 4/3, 3/2 or 16/9. Positions: center, top, bottom, left or right.
  • Images must use validated local raster paths under assets, uploads, demo-media or optimized-images.
  • Links are limited to accepted local, fragment, HTTPS, email or telephone forms. Unknown fields and module names are rejected.

Import boundary

The administrator-only editor composer validates JSON and returns rendered draft HTML with published: false. It has a 250,000-byte request limit and requires the editor session and CSRF protection. Importing does not publish or install code.

Something unclear? Contact me about this guide.