Drupal is a registered trademark of Dries Buytaert
drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)! drupal 11.3.6 Update released for Drupal core (11.3.6)! drupal 10.6.6 Update released for Drupal core (10.6.6)! cms 2.1.0 Update released for Drupal core (2.1.0)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). eca 3.1.1 Minor update available for module eca (3.1.1). layout_paragraphs 2.1.3 Minor update available for module layout_paragraphs (2.1.3). ai 1.3.3 Minor update available for module ai (1.3.3). ai 1.2.14 Minor update available for module ai (1.2.14). node_revision_delete 2.0.3 Minor update available for module node_revision_delete (2.0.3). moderated_content_bulk_publish 2.0.52 Minor update available for module moderated_content_bulk_publish (2.0.52). klaro 3.0.10 Minor update available for module klaro (3.0.10). klaro 3.0.9 Minor update available for module klaro (3.0.9). layout_paragraphs 2.1.2 Minor update available for module layout_paragraphs (2.1.2). geofield_map 11.1.8 Minor update available for module geofield_map (11.1.8).

This module makes it really easy to normalize the nodes in a more useful way than Drupal does by default. You can define the output of each entity type (like nodes, users, terms, etc.) per bundle using YAML files instead of creating everything in code.

Some of the key features are:

  • Define output in readable YAML files.
  • Extend definitions: create basic and bundle specific definitions.
  • Different definitions per normalization format.
  • Combine fields in groups without writing code.
  • Add custom data to the output using 'pseudo' fields.
  • Easy chaining of simple normalizers.

Configuration

Use RestUI (or code) to enable the JSON (or another) output format for content so you can fetch nodes using a url like /node/1?_format=json.

After this, you can configure the JSON output of entities using YAML files in the
root of your module using the pattern:

<module_name>.entity_normalization.yml

Example

user.base:
  type: user
  bundle: user
  fields:
    uid:
      name: id
    name:

article.base:
  type: node
  bundle: [article]
  fields:
    nid:
      name: id
    url:
      type: pseudo
      normalizer: entity_url.normalizer
    title:
    uid:
      name: author

This definition will give the following output when calling "/article/1234/my-title.html?_format=json":

{
  "id": 1234,
  "url": "/article/1234/my-title.html",
  "title": "My Title",
  "author": {
    "id": 1,
    "name": "Administrator"
  }
}

Activity

Total releases
1
First release
Sep 2025
Latest release
7 months ago
Release cadence
Stability
100% stable

Releases

Version Type Release date
3.0.0 Stable Sep 16, 2025