Skip to content

Repository files navigation

Drupal JSON:API Entities

CircleCIKnown Vulnerabilitiescodecov

Build a Drupal Entity form/view field schema from your Drupal JSON:API entitiy with ease.

Installation

$ npm install drupal_jsonapi_entities

Documentation

new drupalJSONAPIEntities()

importdrupalJSONAPIEntitiesfrom'drupal_jsonapi_entities'constdrupalEntities=newdrupalJSONAPIEntities(url,options)

The constructor takes two arguments:

  • url: The base URL of the Drupal instance.
  • options: The API options.

Available API options (options argument)

  • auth: An array for use authorizing the client with the Drupal instance. Currently only supports OAuth2 password flow.
    • clientId: The Oauth 2 Client ID.
    • clientSecret: The Oauth 2 Client secret.
    • user: The Drupal username.
    • pass: The Drupal user passsword.

getFormSchema()

constformSchema=awaitdrupalEntities.getFormSchema(entityType,bundle,mode)

The method takes three arguments:

  • entityType: The Drupal entity type ID.
  • bundle: The Drupal bundle ID for the entity type.
  • mode: The form display mode. Default: default.

Returns a JSON object:

  • fields: An array of field objects, sorted by weight.
    • cardinality: Allowed number of values.
    • description: Help text.
    • id: Machine name.
    • property: True if field is a property on the Drupal entity.
    • label: Label.
    • required: Required field.
    • settings: Merged object of field settings.
    • type: Field type machine name.
    • weight: Form display field weight.
    • group: (optional) Group.
  • groups: An array of Drupal Field Group module group objects, sorted by weight.
    • children: Array of fields in group.
    • format_settings: Settings for the display of the group.
    • format_type: Type of group for display.
    • id: Machine name.
    • label: Label.
    • weight: Weight.

Drupal requirements

JSON:API resources:

  • entity_form_display--entity_form_display
  • field_config--field_config
  • field_storage_config--field_storage_config

Permissions:

  • administer display modes
  • administer ENTITY_TYPE fields

getViewSchema()

constviewSchema=awaitdrupalEntities.getViewSchema(entityType,bundle,mode)

The method takes three arguments:

  • entityType: The Drupal entity type ID.
  • bundle: The Drupal bundle ID for the entity type.
  • mode: The view display mode. Default: default.

Returns a JSON object:

  • fields: An array of field objects, sorted by weight.
    • description: Help text.
    • id: Machine name.
    • property: True if field is a property on the Drupal entity.
    • label: Label.
    • labelPosition: Label position.
    • required: Required field.
    • settings: Merged object of field settings.
    • thirdPartySettings: Settings of any third party modules.
    • type: Field type machine name.
    • weight: Form display field weight.
    • group: (optional) Group.
  • groups: An array of Drupal Field Group module group objects, sorted by weight.
    • children: Array of fields in group.
    • format_settings: Settings for the display of the group.
    • format_type: Type of group for display.
    • id: Machine name.
    • label: Label.
    • weight: Weight.

Drupal requirements

JSON:API resources:

  • entity_form_display--entity_form_display
  • entity_view_display--entity_view_display
  • field_config--field_config
  • field_storage_config--field_storage_config

Permissions:

  • administer display modes
  • administer ENTITY_TYPE fields

Nuxt.js module

Drupal JSON:API Entities provides a Nuxt.js module for easily caching the schema(s).

Getting started with Nuxt.js

Add drupal_jsonapi_entities/nuxt to the modules section of your nuxt.config.js file.

module.exports={modules: [// Drupal JSON:API entities.['drupal_jsonapi_entities/nuxt',{baseUrl: process.env.API_URL,auth: {clientId: process.env.API_CONSUMER_CLIENT_ID,clientSecret: process.env.API_CONSUMER_CLIENT_SECRET,user: process.env.API_CONSUMER_USERNAME,pass: process.env.API_CONSUMER_PASSWORD}}],]}

Add a drupalJSONAPIEntities section to your nuxt.config.js file in the following format for all required Entity types, Bundles, Schema types and Modes:

module.exports={drupalJSONAPIEntities: {'entityType': {'bundle': {'type': ['mode']}}}}

Example:

module.exports={drupalJSONAPIEntities: {'node': {'recipe': {form: ['default'],view: ['default'],}}}}

The module provides a plugin, which returns the Drupal JSON:API Entities schema(s).

this.$drupalJSONAPIEntities()

About

Drupal JSON:API Entities

Resources

Stars

6 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages