diff --git a/lib/config/definitions.js b/lib/config/definitions.js
index 030c37b6a37647b3ba59b147c0d250b6202e367d..df12ac92064860015fea6ddda18d11c0fa800edc 100644
--- a/lib/config/definitions.js
+++ b/lib/config/definitions.js
@@ -338,6 +338,7 @@ const options = [
     name: 'includePaths',
     description: 'Include package files only within these defined paths',
     type: 'list',
+    subType: 'string',
     stage: 'repository',
     default: [],
   },
@@ -346,6 +347,7 @@ const options = [
     description:
       'Skip any package.json whose path matches one of these. Can be string or glob pattern',
     type: 'list',
+    subType: 'string',
     stage: 'repository',
     default: ['**/node_modules/**', '**/bower_components/**'],
   },
@@ -363,6 +365,7 @@ const options = [
     description:
       'List of URLs to try for dependency lookup. Package manager-specific',
     type: 'list',
+    subType: 'string',
     default: null,
     stage: 'branch',
     cli: false,
@@ -395,6 +398,7 @@ const options = [
     name: 'ignoreDeps',
     description: 'Dependencies to ignore',
     type: 'list',
+    subType: 'string',
     stage: 'package',
     mergeable: true,
   },
@@ -553,6 +557,7 @@ const options = [
     description:
       'Update types to match against (major, minor, pin, etc). Valid only within `packageRules` object.',
     type: 'list',
+    // TODO: add allowedValues
     subType: 'string',
     allowString: true,
     stage: 'package',
@@ -566,6 +571,7 @@ const options = [
     description:
       'List of strings or glob patterns to match against package files. Applicable inside packageRules only',
     type: 'list',
+    subType: 'string',
     stage: 'repository',
     parent: 'packageRules',
     cli: false,
@@ -852,6 +858,7 @@ const options = [
     description:
       'List of status checks that must pass before automerging. Set to null to enable automerging without tests.',
     type: 'list',
+    subType: 'string',
     cli: false,
     env: false,
   },
@@ -1020,18 +1027,21 @@ const options = [
     name: 'labels',
     description: 'Labels to add to Pull Request',
     type: 'list',
+    subType: 'string',
   },
   {
     name: 'assignees',
     description:
       'Assignees for Pull Request (username in GitHub/GitLab, email address in Azure DevOps)',
     type: 'list',
+    subType: 'string',
   },
   {
     name: 'reviewers',
     description:
       'Requested reviewers for Pull Requests (username in GitHub/GitLab, email or username in Azure DevOps)',
     type: 'list',
+    subType: 'string',
   },
   {
     name: 'fileMatch',
diff --git a/renovate-schema.json b/renovate-schema.json
index a10850179f7c7d72ea4e62eb8b3479cf1f50f943..1fed7aac3389a78223da879f8bdaf04288fdc589 100644
--- a/renovate-schema.json
+++ b/renovate-schema.json
@@ -209,11 +209,17 @@
     },
     "includePaths": {
       "type": "array",
+      "items": {
+        "type": "string"
+      },
       "description": "Include package files only within these defined paths",
       "default": []
     },
     "ignorePaths": {
       "type": "array",
+      "items": {
+        "type": "string"
+      },
       "description": "Skip any package.json whose path matches one of these. Can be string or glob pattern",
       "default": ["**/node_modules/**", "**/bower_components/**"]
     },
@@ -225,6 +231,9 @@
     },
     "registryUrls": {
       "type": "array",
+      "items": {
+        "type": "string"
+      },
       "description": "List of URLs to try for dependency lookup. Package manager-specific",
       "default": null
     },
@@ -249,6 +258,9 @@
     },
     "ignoreDeps": {
       "type": "array",
+      "items": {
+        "type": "string"
+      },
       "description": "Dependencies to ignore"
     },
     "packageRules": {
@@ -342,6 +354,9 @@
               },
               "paths": {
                 "type": "array",
+                "items": {
+                  "type": "string"
+                },
                 "description": "List of strings or glob patterns to match against package files. Applicable inside packageRules only"
               },
               "allowedVersions": {
@@ -538,6 +553,9 @@
     },
     "requiredStatusChecks": {
       "type": "array",
+      "items": {
+        "type": "string"
+      },
       "description": "List of status checks that must pass before automerging. Set to null to enable automerging without tests."
     },
     "vulnerabilityAlerts": {
@@ -652,14 +670,23 @@
     },
     "labels": {
       "type": "array",
+      "items": {
+        "type": "string"
+      },
       "description": "Labels to add to Pull Request"
     },
     "assignees": {
       "type": "array",
+      "items": {
+        "type": "string"
+      },
       "description": "Assignees for Pull Request (username in GitHub/GitLab, email address in Azure DevOps)"
     },
     "reviewers": {
       "type": "array",
+      "items": {
+        "type": "string"
+      },
       "description": "Requested reviewers for Pull Requests (username in GitHub/GitLab, email or username in Azure DevOps)"
     },
     "fileMatch": {