Creating a configuration entity type
Drupal 8 harnesses the entity API for configuration to provide configuration validation and extended functionality. Using the underlying entity structure, the configuration has a proper Create, Read, Update, Delete (CRUD) process that can be managed. Configuration entities are not fieldable. All the attributes of a configuration entity are defined in its configuration schema definition.
Most common configuration entities interact with Drupal core's
config_object type, as discussed in Chapter 4, Extending Drupal, and Chapter 9, Configuration Management – Deploying in Drupal 8, to store and manage a site's configuration. There are other uses of configuration entities, such as menus, view displays, form displays, ...