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 df36e4c..5366cb1 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:
@@ -33,7 +33,7 @@ search_api.processor.plugin.aggregated_field:
             type: string
             label: 'The type of the aggregation'
 
-search_api.processor.plugin.highlight:
+plugin.plugin_configuration.search_api_processor.highlight:
   type: mapping
   label: 'Highlight processor configuration'
   mapping:
@@ -53,7 +53,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:
@@ -76,7 +76,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:
@@ -87,7 +87,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:
@@ -111,7 +111,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:
@@ -122,7 +122,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:
@@ -133,7 +133,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:
@@ -154,7 +154,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:
@@ -168,7 +168,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:
@@ -185,7 +185,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:
@@ -208,7 +208,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:
@@ -219,7 +219,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..c1b49c7
--- /dev/null
+++ b/search_api.plugin_type.yml
@@ -0,0 +1,19 @@
+search_api_datasource:
+  label: Search API datasource
+  plugin_manager_service_id: plugin.manager.search_api.datasource
+  plugin_definition_decorator_class: \Drupal\plugin\PluginDefinition\ArrayPluginDefinitionDecorator
+
+search_api_data_type:
+  label: Search API data type
+  plugin_manager_service_id: plugin.manager.search_api.data_type
+  plugin_definition_decorator_class: \Drupal\plugin\PluginDefinition\ArrayPluginDefinitionDecorator
+
+search_api_processor:
+  label: Search API processor
+  plugin_manager_service_id: plugin.manager.search_api.processor
+  plugin_definition_decorator_class: \Drupal\plugin\PluginDefinition\ArrayPluginDefinitionDecorator
+
+search_api_tracker:
+  label: Search API tracker
+  plugin_manager_service_id: plugin.manager.search_api.tracker
+  plugin_definition_decorator_class: \Drupal\plugin\PluginDefinition\ArrayPluginDefinitionDecorator
