Drupal is a registered trademark of Dries Buytaert
Protected Pages 3.0.0 Major update available for module protected_pages (3.0.0). Commerce Core 3.3.8 Minor update available for module commerce (3.3.8). Search API HTML Element Filter 1.0.7 Minor update available for module search_api_html_element_filter (1.0.7). Layout Builder Reorder 2.0.1 Minor update available for module layout_builder_reorder (2.0.1). Ban 1.1.0 Minor update available for module ban (1.1.0). Field Formatter Range 2.0.0 Major update available for module field_formatter_range (2.0.0). Field Formatter Range 8.x-1.8 Minor update available for module field_formatter_range (8.x-1.8). UI Patterns (SDC in Drupal UI) 2.0.18 Minor update available for module ui_patterns (2.0.18). Search API Solr 4.3.11 Module search_api_solr updated after 14 months of inactivity (4.3.11). Provus Mega Menu Module provus_mega_menu crossed 1,000 active installs.

This module makes entity form mode field definitions and structure available through GraphQL. This allows headless applications to retrieve and display form fields, including their settings and groups, and to even pre-fill forms with existing data.

Exposes entity form mode field definitions and structure via GraphQL for headless applications.

Requirements

Schema Extension

Adds the entityFormMode field to the Query root type:

extend type Query {
  entityFormMode(
    entity_type: EntityType!
    entity_bundle: String!
    entity_id: String
    operation: Operation
  ): EntityFormModeResponse
}

Response Type

type EntityFormModeResponse implements Response {
  success: Boolean
  errors: [Violation]
  form: Json
  form_mode_fields: Json
  form_mode_field_groups: Json
}

Query Example

Retrieve form fields for a node bundle (create operation)

query GetNodeFormFields {
  entityFormMode(
    entity_type: NODE
    entity_bundle: article
    operation: CREATE
  ) {
    success
    errors {
      message
    }
    form_mode_fields {
      machine_name
      type
      required
      weight
      settings {
        cardinality
        type
      }
      widget {
        #type
        #title
        #description
        #required
      }
      existing_values
    }
    form_mode_field_groups {
      machine_name
      label
      format_type
      parent_field_group
      children
      weight
    }
  }
}

Retrieve form with pre-filled values (update operation)

query GetNodeFormFields {
  entityFormMode(
    entity_type: NODE
    entity_bundle: article
    entity_id: "123"
    operation: UPDATE
  ) {
    success
    form_mode_fields {
      machine_name
      existing_values
    }
  }
}

Permission Handling

Access control uses graphql_compose_mutations.user_permissions service:

  • Validates user permissions via userCanDoActionOnEntityByType()
  • Administrators (uid=1 or 'administrator' role) bypass permission checks
  • Returns validation violations if access is denied

Widget Properties Filter

To prevent JSON recursion, only these widget properties are returned:

  • #base_type, #date_date_format, #date_time_format, #date_timezone, #date_year_range
  • #delta, #description, #description_display, #form_group, #id, #name
  • #options, #placeholder, #required, #title, #title_display, #type

Activity

Total releases
2
First release
Jan 2026
Latest release
5 months ago
Releases (12 mo)
2 ▲ from 0
Maintenance
Active

Releases

Version Type Release date
1.0.0 Stable Jan 21, 2026
1.0.x-dev Dev Jan 21, 2026