diff --git a/config/schema/search_api.index.schema.yml b/config/schema/search_api.index.schema.yml
index 96a0abb..732d9b8 100644
--- a/config/schema/search_api.index.schema.yml
+++ b/config/schema/search_api.index.schema.yml
@@ -63,7 +63,7 @@ search_api.index.*:
                   type: integer
                   label: 'The processor''s weight for this stage'
               settings:
-                type: search_api.processor.plugin.[%parent.processor_id]
+                type: plugin.plugin_configuration.search_api_processor.[%parent.processor_id]
     datasources:
       type: sequence
       label: 'Datasource plugin IDs'
@@ -80,7 +80,7 @@ search_api.index.*:
       label: 'Tracker plugin ID'
     tracker_config:
       label: 'Tracker config plugin'
-      type: search_api.tracker.plugin.[%parent.tracker]
+      type: plugin.plugin_configuration.search_api_tracker.[%parent.tracker]
     server:
       type: string
       label: 'Server ID'
diff --git a/config/schema/search_api.processor.schema.yml b/config/schema/search_api.processor.schema.yml
index b8c11aa..f9162e1 100644
--- a/config/schema/search_api.processor.schema.yml
+++ b/config/schema/search_api.processor.schema.yml
@@ -1,4 +1,4 @@
-search_api.processor.plugin.add_url:
+plugin.plugin_configuration.search_api_processor.add_url:
   type: mapping
   label: 'Add URL configuration'
   mapping:
@@ -9,7 +9,7 @@ search_api.processor.plugin.add_url:
         type: string
         label: 'Selected field'
 
-search_api.processor.plugin.aggregated_field:
+plugin.plugin_configuration.search_api_processor.aggregated_field:
   type: mapping
   label: 'Add aggregation processor configuration'
   mapping:
@@ -39,7 +39,7 @@ search_api.processor.plugin.aggregated_field:
             type: string
             label: 'Type'
 
-search_api.processor.plugin.highlight:
+plugin.plugin_configuration.search_api_processor.highlight:
   type: mapping
   label: 'Highlight processor configuration'
   mapping:
@@ -59,7 +59,7 @@ search_api.processor.plugin.highlight:
       type: string
       label: 'Defines whether returned fields should be highlighted (always/if returned/never).'
 
-search_api.processor.plugin.html_filter:
+plugin.plugin_configuration.search_api_processor.html_filter:
   type: mapping
   label: 'HTML filter processor configuration'
   mapping:
@@ -82,7 +82,7 @@ search_api.processor.plugin.html_filter:
         type: integer
         label: Boost
 
-search_api.processor.plugin.ignorecase:
+plugin.plugin_configuration.search_api_processor.ignorecase:
   type: mapping
   label: 'Ignore case processor configuration'
   mapping:
@@ -93,7 +93,7 @@ search_api.processor.plugin.ignorecase:
         type: string
         label: 'Selected field'
 
-search_api.processor.plugin.ignore_character:
+plugin.plugin_configuration.search_api_processor.ignore_character:
   type: mapping
   label: 'Ignore Character processor configuration'
   mapping:
@@ -117,7 +117,7 @@ search_api.processor.plugin.ignore_character:
             type: ignore
             label: 'Character set'
 
-search_api.processor.plugin.language:
+plugin.plugin_configuration.search_api_processor.language:
   type: mapping
   label: 'Language field processor configuration'
   mapping:
@@ -128,7 +128,7 @@ search_api.processor.plugin.language:
         type: string
         label: 'Selected field'
 
-search_api.processor.plugin.node_status:
+plugin.plugin_configuration.search_api_processor.node_status:
   type: mapping
   label: 'node status processor configuration'
   mapping:
@@ -139,7 +139,7 @@ search_api.processor.plugin.node_status:
         type: string
         label: 'Selected field'
 
-search_api.processor.plugin.rendered_item:
+plugin.plugin_configuration.search_api_processor.rendered_item:
   type: mapping
   label: 'Rendered item processor configuration'
   mapping:
@@ -160,7 +160,7 @@ search_api.processor.plugin.rendered_item:
         type: string
         label: 'The user roles which will be active when the entity is rendered'
 
-search_api.processor.plugin.role_filter:
+plugin.plugin_configuration.search_api_processor.role_filter:
   type: mapping
   label: 'Role filter processor configuration'
   mapping:
@@ -174,7 +174,7 @@ search_api.processor.plugin.role_filter:
         type: string
         label: 'The role name'
 
-search_api.processor.plugin.stopwords:
+plugin.plugin_configuration.search_api_processor.stopwords:
   type: mapping
   label: 'Stopwords processor configuration'
   mapping:
@@ -191,7 +191,7 @@ search_api.processor.plugin.stopwords:
         type: string
         label: Stopword
 
-search_api.processor.plugin.tokenizer:
+plugin.plugin_configuration.search_api_processor.tokenizer:
   type: mapping
   label: 'Tokenizer processor configuration'
   mapping:
@@ -214,7 +214,7 @@ search_api.processor.plugin.tokenizer:
       type: string
       label: 'Defines the minimum word size'
 
-search_api.processor.plugin.transliteration:
+plugin.plugin_configuration.search_api_processor.transliteration:
   type: mapping
   label: 'Transliteration processor configuration'
   mapping:
@@ -225,7 +225,7 @@ search_api.processor.plugin.transliteration:
         type: string
         label: 'Selected field'
 
-search_api.processor.plugin.content_access:
+plugin.plugin_configuration.search_api_processor.content_access:
   type: mapping
   label: 'Content Access configuration'
   mapping:
diff --git a/config/schema/search_api.tracker.schema.yml b/config/schema/search_api.tracker.schema.yml
index 7f2cca9..297badc 100644
--- a/config/schema/search_api.tracker.schema.yml
+++ b/config/schema/search_api.tracker.schema.yml
@@ -1,5 +1,5 @@
 # @todo Update the key when https://www.drupal.org/node/2291073 is fixed.
-search_api.tracker.plugin.default:
+plugin.plugin_configuration.search_api_tracker.default:
   type: sequence
   label: 'Entity tracker configuration'
   sequence:
diff --git a/search_api.plugin_type.yml b/search_api.plugin_type.yml
new file mode 100644
index 0000000..c78eb5e
--- /dev/null
+++ b/search_api.plugin_type.yml
@@ -0,0 +1,19 @@
+searchapi_datasource:
+  label: Data source
+  plugin_manager_service_id: plugin.manager.search_api.datasource
+  plugin_definition_decorator_class: \Drupal\plugin\PluginDefinition\ArrayPluginDefinitionDecorator
+
+searchapi_data_type:
+  label: Data type
+  plugin_manager_service_id: plugin.manager.search_api.data_type
+  plugin_definition_decorator_class: \Drupal\plugin\PluginDefinition\ArrayPluginDefinitionDecorator
+
+searchapi_processor:
+  label: Processor
+  plugin_manager_service_id: plugin.manager.search_api.processor
+  plugin_definition_decorator_class: \Drupal\plugin\PluginDefinition\ArrayPluginDefinitionDecorator
+
+searchapi_tracker:
+  label: Tracker
+  plugin_manager_service_id: plugin.manager.search_api.tracker
+  plugin_definition_decorator_class: \Drupal\plugin\PluginDefinition\ArrayPluginDefinitionDecorator
