You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2017/06/08 10:10:08 UTC

[3/4] lucene-solr:master: SOLR-10647: move the spec files to solrj

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/collections.collection.shards.Commands.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/collections.collection.shards.Commands.json b/solr/core/src/resources/apispec/collections.collection.shards.Commands.json
deleted file mode 100644
index 4750e2c..0000000
--- a/solr/core/src/resources/apispec/collections.collection.shards.Commands.json
+++ /dev/null
@@ -1,114 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Collections+API",
-  "description": "Allows you to create a shard, split an existing shard or add a new replica.",
-  "methods": [
-    "POST"
-  ],
-  "url": {
-    "paths": [
-      "/collections/{collection}/shards",
-      "/c/{collection}/shards"
-    ]
-  },
-  "commands": {
-    "split": {
-      "type" : "object",
-      "documentation":"https://cwiki.apache.org/confluence/display/solr/Collections+API#CollectionsAPI-api3",
-      "description": "Splits an existing shard into two or more new shards. During this action, the existing shard will continue to contain the original data, but new data will be routed to the new shards once the split is complete. New shards will have as many replicas as the existing shards. A soft commit will be done automatically. An explicit commit request is not required because the index is automatically saved to disk during the split operation. New shards will use the original shard name as the basis for their names, adding an underscore and a number to differentiate the new shard. For example, 'shard1' would become 'shard1_0' and 'shard1_1'. Note that this operation can take a long time to complete.",
-      "properties": {
-        "shard":{
-          "type":"string",
-          "description":"The name of the shard to be split."
-        },
-        "ranges" : {
-          "description" : "A comma-separated list of hexadecimal hash ranges that will be used to split the shard into new shards containing each defined range, e.g. ranges=0-1f4,1f5-3e8,3e9-5dc. This is the only option that allows splitting a single shard into more than 2 additional shards. If neither this parameter nor splitKey are defined, the shard will be split into two equal new shards.",
-          "type":"string"
-        },
-        "splitKey":{
-          "description" : "A route key to use for splitting the index. If this is defined, the shard parameter is not required because the route key will identify the correct shard. A route key that spans more than a single shard is not supported. If neither this parameter nor ranges are defined, the shard will be split into two equal new shards.",
-          "type":"string"
-        },
-        "coreProperties":{
-          "type":"object",
-          "documentation": "https://cwiki.apache.org/confluence/display/solr/Defining+core.properties",
-          "description": "Allows adding core.properties for the collection. Some examples of core properties you may want to modify include the config set, the node name, the data directory, among others.",
-          "additionalProperties":true
-        },
-        "async": {
-          "type": "string",
-          "description": "Defines a request ID that can be used to track this action after it's submitted. The action will be processed asynchronously when this is defined. This command can be long-running, so running it asynchronously is recommended."
-        }
-      }
-    },
-    "create": {
-      "type":"object",
-      "properties": {
-        "nodeSet": {
-          "description": "Defines nodes to spread the new collection across. If not provided, the collection will be spread across all live Solr nodes. The names to use are the 'node_name', which can be found by a request to the cluster/nodes endpoint.",
-          "type": "array",
-          "items": {
-            "type": "string"
-          }
-        },
-        "shard": {
-          "description": "The name of the shard to be created.",
-          "type": "string"
-        },
-        "coreProperties": {
-          "type": "object",
-          "documentation": "https://cwiki.apache.org/confluence/display/solr/Defining+core.properties",
-          "description": "Allows adding core.properties for the collection. Some examples of core properties you may want to modify include the config set, the node name, the data directory, among others.",
-          "additionalProperties": true
-        },
-        "async": {
-          "type": "string",
-          "description": "Defines a request ID that can be used to track this action after it's submitted. The action will be processed asynchronously when this is defined."
-        }
-      },
-      "required":["shard"]
-    },
-    "add-replica": {
-      "documentation":"https://cwiki.apache.org/confluence/display/solr/Collections+API#CollectionsAPI-api_addreplica",
-      "description": "",
-      "type" : "object",
-      "properties": {
-        "shard": {
-          "type": "string",
-          "description": "The name of the shard in which this replica should be created. If this parameter is not specified, then '_route_' must be defined."
-        },
-        "_route_": {
-          "type": "string",
-          "description": "If the exact shard name is not known, users may pass the _route_ value and the system would identify the name of the shard. Ignored if the shard param is also specified. If the 'shard' parameter is also defined, this parameter will be ignored."
-        },
-        "node": {
-          "type": "string",
-          "description": "The name of the node where the replica should be created."
-        },
-        "instanceDir": {
-          "type": "string",
-          "description": "An optional custom instanceDir for this replica."
-        },
-        "dataDir": {
-          "type": "string",
-          "description": "An optional custom directory used to store index data for this replica."
-        },
-        "coreProperties": {
-          "type": "object",
-          "documentation": "https://cwiki.apache.org/confluence/display/solr/Defining+core.properties",
-          "description": "Allows adding core.properties for the collection. Some examples of core properties you may want to modify include the config set and the node name, among others.",
-          "additionalProperties": true
-        },
-        "async": {
-          "type": "string",
-          "description": "Defines a request ID that can be used to track this action after it's submitted. The action will be processed asynchronously when this is defined."
-        },
-        "type": {
-          "type": "string",
-          "enum":["NRT", "TLOG", "PULL"],
-          "description": "The type of replica to add. NRT (default), TLOG or PULL"
-        }
-      },
-      "required":["shard"]
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/collections.collection.shards.shard.Commands.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/collections.collection.shards.shard.Commands.json b/solr/core/src/resources/apispec/collections.collection.shards.shard.Commands.json
deleted file mode 100644
index 83f7ddf..0000000
--- a/solr/core/src/resources/apispec/collections.collection.shards.shard.Commands.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Collections+API",
-  "description": "Commands to force leader election and synchronize shards.",
-  "methods": [
-    "POST",
-    "DELETE"
-  ],
-  "url": {
-    "paths": [
-      "/collections/{collection}/shards/{shard}",
-      "/c/{collection}/shards/{shard}"
-    ]
-  },
-  "commands": {
-    "force-leader": {
-      "documentation": "https://cwiki.apache.org/confluence/display/solr/Collections+API#CollectionsAPI-ForceLeader",
-      "description": "In the unlikely event of a shard losing its leader, this command can be invoked to force the election of a new leader",
-      "type": "object"
-    },
-    "sync-shard": {
-      "type": "object"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/collections.collection.shards.shard.delete.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/collections.collection.shards.shard.delete.json b/solr/core/src/resources/apispec/collections.collection.shards.shard.delete.json
deleted file mode 100644
index 53c7965..0000000
--- a/solr/core/src/resources/apispec/collections.collection.shards.shard.delete.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Collections+API#CollectionsAPI-api7",
-  "description": "Deletes a shard by unloading all replicas of the shard, removing it from clusterstate.json, and by default deleting the instanceDir and dataDir. Only inactive shards or those which have no range for custom sharding will be deleted.",
-  "methods": [
-    "DELETE"
-  ],
-  "url": {
-    "paths": [
-      "/collections/{collection}/shards/{shard}",
-      "/c/{collection}/shards/{shard}"
-    ],
-    "params":{
-      "deleteInstanceDir":{
-        "type": "boolean",
-        "description":"By default Solr will delete the entire instanceDir of each replica that is deleted. Set this to false to prevent the instance directory from being deleted."
-      },
-      "deleteDataDir":{
-        "type":"boolean",
-        "description":"y default Solr will delete the dataDir of each replica that is deleted. Set this to false to prevent the data directory from being deleted."
-      },
-      "async": {
-        "type": "string",
-        "description": "Defines a request ID that can be used to track this action after it's submitted. The action will be processed asynchronously when this is defined. This command can be long-running, so running it asynchronously is recommended."
-      }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/collections.collection.shards.shard.replica.delete.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/collections.collection.shards.shard.replica.delete.json b/solr/core/src/resources/apispec/collections.collection.shards.shard.replica.delete.json
deleted file mode 100644
index a0c8ee6..0000000
--- a/solr/core/src/resources/apispec/collections.collection.shards.shard.replica.delete.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Collections+API#CollectionsAPI-api9",
-  "description": "Deletes a replica. If the responding node is up, the core is unloaded, the entry removed from clusterstate.json, and the instanceDir and dataDir removed. If the node is not up, the entry for the replica is removed from clusterstate.json; if the nodes comes up later, the replica is automatically de-registered.",
-  "methods": [
-    "DELETE"
-  ],
-  "url": {
-    "paths": [
-      "/collections/{collection}/shards/{shard}/{replica}",
-      "/c/{collection}/shards/{shard}/{replica}"
-    ],
-    "params": {
-      "onlyIfDown": {
-        "type": "boolean",
-        "default": "false",
-        "description": "When set to 'true', no action will be taken if the replica is active."
-      },
-      "deleteIndex": {
-        "type": "boolean",
-        "default": "true",
-        "description": "By default Solr will delete the index of the replica that is deleted. Set this to false to prevent the index directory from being deleted."
-      },
-      "deleteDataDir": {
-        "type": "boolean",
-        "default": "true",
-        "description": "By default Solr will delete the dataDir of the replica that is deleted. Set this to false to prevent the data directory from being deleted."
-      },
-      "deleteInstanceDir": {
-        "type": "boolean",
-        "default": "true",
-        "description": "By default Solr will delete the entire instanceDir of the replica that is deleted. Set this to false to prevent the instance directory from being deleted."
-      },
-      "async":{
-        "type":"string",
-        "description":"Defines a request ID that can be used to track this action after it's submitted. The action will be processed asynchronously when this is defined."
-      }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/collections.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/collections.json b/solr/core/src/resources/apispec/collections.json
deleted file mode 100644
index 49ca976..0000000
--- a/solr/core/src/resources/apispec/collections.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Collections+API#CollectionsAPI-api1",
-  "description": "List all available collections and their properties.",
-  "methods": [
-    "GET"
-  ],
-  "url": {
-    "paths": [
-      "/collections",
-      "/c"
-    ]
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.RealtimeGet.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.RealtimeGet.json b/solr/core/src/resources/apispec/core.RealtimeGet.json
deleted file mode 100644
index 308870e..0000000
--- a/solr/core/src/resources/apispec/core.RealtimeGet.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/RealTime+Get",
-  "description": "RealTime Get allows retrieving documents by ID before the documents have been committed to the index. It is useful when you need access to documents as soon as they are indexed but your commit times are high for other reasons.",
-  "methods": [
-    "GET"
-  ],
-  "url": {
-    "paths": [
-      "/get"
-    ],
-    "params": {
-      "id": {
-        "type": "string",
-        "description": "A single document ID to retrieve."
-      },
-      "ids": {
-        "type": "string",
-        "description": "One or more document IDs to retrieve. Separate by commas if more than one ID is specified."
-      },
-      "fq":{
-        "type": "string",
-        "description": "An optional filter query to add to the query. One use case for this is security filtering, in case users or groups should not be able to retrieve the document ID requested."
-      }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.SchemaEdit.addCopyField.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.SchemaEdit.addCopyField.json b/solr/core/src/resources/apispec/core.SchemaEdit.addCopyField.json
deleted file mode 100644
index 26c4eff..0000000
--- a/solr/core/src/resources/apispec/core.SchemaEdit.addCopyField.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-  "documentation" : "https://cwiki.apache.org/confluence/display/solr/Schema+API#SchemaAPI-AddaNewCopyFieldRule",
-  "description": "Adds a new copy field rule, to allow one field to be populated with the contents of one or more other fields.",
-  "type": "object",
-  "properties": {
-    "source": {
-      "type": "string",
-      "description": "The field to copy from."
-    },
-    "dest": {
-      "type":"array",
-      "items": {
-        "type": "string"
-      },
-      "description": "A field or an array of fields to which the source field will be copied. A wildcard for a dynamic field can be used, but only if the source field also contains a dynamic field."
-    },
-    "maxChars": {
-      "type": "integer",
-      "description": "An upper limit for the number of characters to be copied. This would be useful if index size is a concern. If a limit is not specified, the entire field will be copied."
-    }
-  },
-  "required": [
-    "source",
-    "dest"
-  ]
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.SchemaEdit.addField.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.SchemaEdit.addField.json b/solr/core/src/resources/apispec/core.SchemaEdit.addField.json
deleted file mode 100644
index 19265ab..0000000
--- a/solr/core/src/resources/apispec/core.SchemaEdit.addField.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
-  "documentation" :"https://cwiki.apache.org/confluence/display/solr/Schema+API",
-  "type":"object",
-  "properties":{
-    "name": {
-      "type": "string",
-      "description": "The name of the field. Names should be alphanumeric or underscore characters only, and not start with a digit. Names also cannot begin and end with an underscore, as such field names are reserved by the system."
-    },
-    "type": {
-      "type": "string",
-      "description":"The name of the fieldType for this field."
-    },
-    "defaultValue": {
-      "type": "string",
-      "description": "An optional default value that should be added automatically to any document that does not have a value for this field."
-    },
-    "indexed": {
-      "type": "boolean",
-      "description": "If true, the field will be indexed and will be available for use in queries to retrieve matching documents. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to true.",
-      "default": "true"
-    },
-    "stored": {
-      "type": "boolean",
-      "description": "If true, the actual value of the field can be retrieved by queries and be displayed in results. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to true.",
-      "default":"true"
-    },
-    "omitNorms": {
-      "type": "boolean",
-      "description": "If true, length normalization and index-time boosting for a field are omitted from the index. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to true for all primitive field types (such as dates, strings, boolean, and numeric fields), but will default to false for non-primitive field types."
-    },
-    "omitTermFreqAndPositions": {
-      "type": "boolean",
-      "description": "If true, all term frequency, positions, and payloads will not be indexed. This means that phrase queries, proximity queries and similar queries that rely on analysis of the frequency of a query term or the position of a term to other terms will not be supported. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to true for all field types that are not text fields."
-    },
-    "termVectors": {
-      "type": "boolean",
-      "description": "If true, term vectors will be stored which can be used to optimize More Like This and optimizing highlighting wildcard queries. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to false.",
-      "default": "false"
-    },
-    "termPositions": {
-      "type": "boolean",
-      "description": "If true, term vectors will include positions. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to false.",
-      "default": "false"
-    },
-    "termOffsets": {
-      "type": "boolean",
-      "description": "If true, term vectors will include offsets. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to false.",
-      "default": "false"
-    },
-    "multiValued": {
-      "type": "boolean",
-      "description": "If true, a single document can have multiple values in a single field, and these values will be indexed. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to false.",
-      "default": "false"
-    },
-    "sortMissingFirst": {
-      "type": "boolean",
-      "description": "If true, when sorting by the field, any documents missing a value for the field will be placed at the top of the list. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to false. If sortMissingFirst and sortMissingLast are both false, documents missing this field will be placed at the top when sorting in ascending order (asc) or at the bottom when sorting in descending order (desc).",
-      "default": "false"
-    },
-    "sortMissingLast": {
-      "type": "boolean",
-      "description": "If true, when sorting by the field, any documents missing a value for the field will be placed at the bottom of the list. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to false. If sortMissingFirst and sortMissingLast are both false, documents missing this field will be placed at the top when sorting in ascending order (asc) or at the bottom when sorting in descending order (desc).",
-      "default": "false"
-    },
-    "required": {
-      "type": "boolean",
-      "description": "If true, any document that does not have a value for the field will be rejected. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to false.",
-      "default": "false"
-    },
-    "omitPositions": {
-      "type": "boolean",
-      "description": "If true, information about the position of terms in a document will not be stored in the index, which means phrase queries, proximity queries, and similar will not be supported for this field. It is similar to 'omitTermFreqAndPositions', but 'omitPositions' will allow term frequency information to be stored. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to true for all field types that are not text fields."
-    },
-    "storeOffsetsWithPositions": {
-      "type": "boolean",
-      "description": "If true, term offsets will be stored with positions in the postings list in the index. This optimizes highlighting with the UnifiedHighlighter. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to false.",
-      "default": "false"
-    },
-    "docValues": {
-      "type": "boolean",
-      "description": "If true, field values will be stored in a column-oriented docValues structure. This can be more efficient for some fields, particularly those used for faceting. More information is available from https://cwiki.apache.org/confluence/display/solr/DocValues. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to true for all non-text fields (such as dates, integers, longs, etc.)."
-    },
-    "termPayloads": {
-      "type": "boolean",
-      "description": "If true, term vectors will include payloads. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to false.",
-      "default": "false"
-    },
-    "useDocValuesAsStored": {
-      "type": "boolean",
-      "description": "If true and docValues are enabled for the field, the field will be returned when all fields are requested (using '*' with the fl parameter), even if it is not stored. If this is not defined, it will inherit the value from the fieldType. If the fieldType does not define a value, it will default to true.",
-      "default": "true"
-    }
-  },
-  "required": [
-    "name",
-    "type"
-  ]
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.SchemaEdit.addFieldType.analyzers.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.SchemaEdit.addFieldType.analyzers.json b/solr/core/src/resources/apispec/core.SchemaEdit.addFieldType.analyzers.json
deleted file mode 100644
index 2974a60..0000000
--- a/solr/core/src/resources/apispec/core.SchemaEdit.addFieldType.analyzers.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "type": "object",
-  "properties": {
-    "class": {
-      "type": "string"
-    },
-    "charFilters": {
-      "type": "array",
-      "items": {
-        "type": "object",
-        "properties": {
-          "class": {
-            "type": "string"
-          }
-        },
-        "required": [
-          "class"
-        ],
-        "additionalProperties": true
-      }
-    },
-    "tokenizer": {
-      "type": "object",
-      "properties": {
-        "class": {
-          "type": "string"
-        }
-      },
-      "required": [
-        "class"
-      ],
-      "additionalProperties": true
-    },
-    "filters": {
-      "type": "array",
-      "items": {
-        "type": "object",
-        "properties": {
-          "class": {
-            "type": "string"
-          }
-        },
-        "required": [
-          "class"
-        ],
-        "additionalProperties": true
-      }
-    }
-  },
-  "additionalProperties": true
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.SchemaEdit.addFieldType.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.SchemaEdit.addFieldType.json b/solr/core/src/resources/apispec/core.SchemaEdit.addFieldType.json
deleted file mode 100644
index dda6847..0000000
--- a/solr/core/src/resources/apispec/core.SchemaEdit.addFieldType.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "type":"object",
-  "properties": {
-    "name": {
-      "type": "string",
-      "description": "The name of the field type. This name is used when defining a field. It is strongly recommended that field type names consist only of alphanumeric or underscore characters and not start with a digit."
-    },
-    "class": {
-      "type": "string",
-      "description": "The class name to use for the field type. Class names do not need to be fully qualified if they are included with Solr, so instead of 'org.apache.solr.schema.TextField', you can abbreviate the name as 'solr.TextField'. Custom or third-party class names may need to be fully qualified, however."
-    },
-    "positionIncrementGap": {
-      "type": "integer",
-      "description": "The distance between the values of a multivalued field. This is used to prevent inaccurate phrase matches across two separate values of the same field.",
-      "default": "0"
-    },
-    "autoGeneratePhraseQueries": {
-      "type": "boolean",
-      "description": "If true, phrase queries will automatically be generated for adjacent terms. If false, terms must also be enclosed in double-quotes to be treated as phrases.",
-      "default": "false"
-    },
-    "docValuesFormat": {
-      "type": "string",
-      "description": "Defines a custom DocValuesFormat to use for fields of this type. A custom DocValuesFormat requires that a schema-aware codec has also been configured in solrconfig.xml."
-    },
-    "postingsFormat": {
-      "type": "string",
-      "description": "Defines a custom PostingsFormat to use for fields of this type. A custom PostingsFormat requires that a schema-aware codec has also been configured in solrconfig.xml."
-    },
-    "queryAnalyzer": {
-      "description": "A query analyzer section defines how incoming queries to Solr will be analyzed for a field of this type.",
-      "#include": "core.SchemaEdit.addFieldType.analyzers"
-    },
-    "indexAnalyzer": {
-      "description": "An index analyzer section defines how incoming text in documents will be analyzed for a field of this type.",
-      "#include": "core.SchemaEdit.addFieldType.analyzers"
-    },
-    "multiTermAnalyzer": {
-      "description": "A multiterm analyzer section defines how incoming queries that results in Multi-Term expansion will be analyzed for a field of this type.",
-      "documentation": "https://cwiki.apache.org/confluence/display/solr/Analyzers#Analyzers-AnalysisforMulti-TermExpansion",
-      "#include": "core.SchemaEdit.addFieldType.analyzers"
-    },
-    "analyzer": {
-      "description": "An analyzer defines how both incoming text in documents and queries are analyzed for a field of this type. If a query analyzer and an index analyzer have both been defined, a general analyzer does not need to be defined for this type.",
-      "#include": "core.SchemaEdit.addFieldType.analyzers"
-    }
-  },
-  "additionalProperties": true,
-  "required": [
-    "name",
-    "class"
-  ]
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.SchemaEdit.deleteCopyField.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.SchemaEdit.deleteCopyField.json b/solr/core/src/resources/apispec/core.SchemaEdit.deleteCopyField.json
deleted file mode 100644
index dd6ff3a..0000000
--- a/solr/core/src/resources/apispec/core.SchemaEdit.deleteCopyField.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "type":"object",
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Schema+API#SchemaAPI-DeleteaCopyFieldRule",
-  "description": "Deletes a copy field rule. Both sides of the copy rule (source and destination) are required in order to delete the rule.",
-  "properties":{
-    "source": {
-      "type":"string",
-      "description": "The field the copy rule is defined to copy from."
-    },
-    "dest": {
-      "type": "string",
-      "description": "The field the copy rule is defined to copy to."
-    }
-  },
-  "required": [
-    "source",
-    "dest"
-  ]
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.SchemaEdit.deleteDynamicField.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.SchemaEdit.deleteDynamicField.json b/solr/core/src/resources/apispec/core.SchemaEdit.deleteDynamicField.json
deleted file mode 100644
index 9550548..0000000
--- a/solr/core/src/resources/apispec/core.SchemaEdit.deleteDynamicField.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Schema+API#SchemaAPI-DeleteaDynamicFieldRule",
-  "description": "Deletes a dynamic field.",
-  "type":"object",
-  "properties": {
-    "name": {
-      "type": "string",
-      "description": "The name of the dynamic field to delete."
-    }
-  },
-  "required":["name"]
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.SchemaEdit.deleteField.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.SchemaEdit.deleteField.json b/solr/core/src/resources/apispec/core.SchemaEdit.deleteField.json
deleted file mode 100644
index 6c2cb00..0000000
--- a/solr/core/src/resources/apispec/core.SchemaEdit.deleteField.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "documentation" : "https://cwiki.apache.org/confluence/display/solr/Schema+API#SchemaAPI-DeleteaField",
-  "description": "Deletes a field from the schema.",
-  "type":"object",
-  "properties":{
-    "name":{
-     "description" :"The name of the field to delete.",
-      "type" : "string"
-    }
-  },
-  "required" : ["name"]
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.SchemaEdit.deleteFieldType.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.SchemaEdit.deleteFieldType.json b/solr/core/src/resources/apispec/core.SchemaEdit.deleteFieldType.json
deleted file mode 100644
index 712462a..0000000
--- a/solr/core/src/resources/apispec/core.SchemaEdit.deleteFieldType.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "documentation":"https://cwiki.apache.org/confluence/display/solr/Schema+API#SchemaAPI-DeleteaFieldType",
-  "description": "Deletes a field type from the schema.",
-  "type":"object",
-  "properties": {
-    "name": {
-      "type": "string",
-      "description": "The name of the field type to delete."
-    }
-  },
-  "required": [
-    "name"
-  ]
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.SchemaEdit.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.SchemaEdit.json b/solr/core/src/resources/apispec/core.SchemaEdit.json
deleted file mode 100644
index bbf4082..0000000
--- a/solr/core/src/resources/apispec/core.SchemaEdit.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Schema+API",
-  "description": "The Schema API provides viewing, editing, adding, and deleting elements of Solr's schema. This API can only be used if Managed Schema is enabled and the schema is defined as mutable. See https://cwiki.apache.org/confluence/display/solr/Schema+Factory+Definition+in+SolrConfig for more information about enabling Managed Schema.",
-  "methods": [
-    "POST"
-  ],
-  "url": {
-    "paths": [
-      "$handlerName"
-    ]
-  },
-  "commands": {
-    "add-field": {
-      "#include": "core.SchemaEdit.addField"
-    },
-    "delete-field": {
-      "#include": "core.SchemaEdit.deleteField"
-    },
-    "replace-field": {
-      "#include": "core.SchemaEdit.addField"
-    },
-    "add-dynamic-field": {
-      "#include": "core.SchemaEdit.addField"
-    },
-    "delete-dynamic-field": {
-      "#include": "core.SchemaEdit.deleteDynamicField"
-    },
-    "replace-dynamic-field": {
-      "#include": "core.SchemaEdit.addField"
-    },
-    "add-field-type": {
-      "#include": "core.SchemaEdit.addFieldType"
-    },
-    "delete-field-type": {
-      "#include": "core.SchemaEdit.deleteFieldType"
-    },
-    "replace-field-type": {
-      "#include": "core.SchemaEdit.addFieldType"
-    },
-    "add-copy-field": {
-      "#include": "core.SchemaEdit.addCopyField"
-    },
-    "delete-copy-field": {
-      "#include": "core.SchemaEdit.deleteCopyField"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.SchemaRead.copyFields.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.SchemaRead.copyFields.json b/solr/core/src/resources/apispec/core.SchemaRead.copyFields.json
deleted file mode 100644
index 4cf822e..0000000
--- a/solr/core/src/resources/apispec/core.SchemaRead.copyFields.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Schema+API#SchemaAPI-ListCopyFields",
-  "description": "Lists all copy fields.",
-  "methods": [
-    "GET"
-  ],
-  "url": {
-    "paths": [
-      "schema/copyfields"
-    ],
-    "params": {
-      "wt": {
-         "type": "string",
-         "description": "The format of the response. Valid options are xml or json."
-      },
-      "source.fl": {
-        "type": "string",
-        "description": "Comma- or space-separated list of one or more source fields to include in the response. copyField directives with all other source fields will be excluded from the response. If not specified, all copyFields will be included in the response"
-      },
-      "dest.fl": {
-        "type": "string",
-        "description": "Comma or space-separated list of one or more copyField dest (destination) fields to include in the response. copyField directives with all other dest fields will be excluded. If not specified, all copyFields will be included in the response."
-      }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.SchemaRead.dynamicFields_fieldTypes.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.SchemaRead.dynamicFields_fieldTypes.json b/solr/core/src/resources/apispec/core.SchemaRead.dynamicFields_fieldTypes.json
deleted file mode 100644
index 0642491..0000000
--- a/solr/core/src/resources/apispec/core.SchemaRead.dynamicFields_fieldTypes.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Schema+API",
-  "methods": [
-    "GET"
-  ],
-  "url": {
-    "paths": [
-      "/schema/dynamicfields",
-      "/schema/dynamicfields/{name}",
-      "/schema/fieldtypes",
-      "/schema/fieldtypes/{name}"
-    ],
-    "params":{
-      "showDefaults":{
-        "type":"boolean",
-        "description":"If true, all default field properties from each field's field type will be included in the response (e.g.   tokenized  for   solr.TextField). If false, only explicitly specified field properties will be included."
-      }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.SchemaRead.fields.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.SchemaRead.fields.json b/solr/core/src/resources/apispec/core.SchemaRead.fields.json
deleted file mode 100644
index 3b6c787..0000000
--- a/solr/core/src/resources/apispec/core.SchemaRead.fields.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Schema+API#SchemaAPI-ListFields",
-  "description": "Get only the fields defined in the schema.",
-  "methods": [
-    "GET"
-  ],
-  "url": {
-    "paths": [
-      "/schema/fields",
-      "/schema/fields/{name}"
-    ],
-    "params": {
-      "wt": {
-         "type": "string",
-         "description": "The format of the response. Valid options are xml or json.",
-         "default": "json"
-      },
-      "fl": {
-         "type": "string",
-         "description": "A comma- or space-separated list fields to return. If not specified, all fields will be returned. Note a single field can be requested by adding the field name to the endpoint."
-      },
-      "includeDynamic": {
-        "type": "boolean",
-        "description": "If true, dynamic fields will be returned in the response.",
-        "default": false
-      },
-      "showDefaults": {
-        "type": "boolean",
-        "description": "If true, all field properties from each field's field type will be included in the response, even if they are not explicitly defined on the field. If false, only explicitly defined field properties will be included.",
-        "default": false
-      }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.SchemaRead.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.SchemaRead.json b/solr/core/src/resources/apispec/core.SchemaRead.json
deleted file mode 100644
index c907954..0000000
--- a/solr/core/src/resources/apispec/core.SchemaRead.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Schema+API",
-  "methods": [
-    "GET"
-  ],
-  "url": {
-    "paths": [
-      "/schema",
-      "/schema/name",
-      "/schema/uniquekey",
-      "/schema/version",
-      "/schema/similarity",
-      "/schema/solrqueryparser",
-      "/schema/zkversion"
-    ]
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.Update.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.Update.json b/solr/core/src/resources/apispec/core.Update.json
deleted file mode 100644
index f9e80c1..0000000
--- a/solr/core/src/resources/apispec/core.Update.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Schema+API",
-  "methods": [
-    "POST"
-  ],
-  "url": {
-    "paths": [
-      "/update",
-      "/update/xml",
-      "/update/csv",
-      "/update/json",
-      "/update/bin",
-      "/update/json/commands"
-    ]
-
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.config.Commands.addRequestHandler.properties.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.config.Commands.addRequestHandler.properties.json b/solr/core/src/resources/apispec/core.config.Commands.addRequestHandler.properties.json
deleted file mode 100644
index 731c3d8..0000000
--- a/solr/core/src/resources/apispec/core.config.Commands.addRequestHandler.properties.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-  "type": "object",
-  "properties": {
-    "name": {
-      "type": "string",
-      "description": "The name of the request handler. This name will be used to update or remove the request handler later if necessary."
-    },
-    "class": {
-      "type": "string",
-      "description": "The request handler class. Class names do not need to be fully qualified if they are included with Solr, so you can abbreviate the name as 'solr.SearchHandler'. Custom or third-party class names may need to be fully qualified, however."
-    },
-    "runtimeLib": {
-      "type": "boolean",
-      "description": "An optional parameter to use a custom .jar file that has been uploaded to Solr's blobstore. This additionally requires that the .jar has also been registered with the 'add-runtimelib' command, which is one of the available commands for the Config API."
-    },
-    "startup": {
-      "type": "string",
-      "description": "Allows the request handler to only start when requested. The only option is 'lazy'.",
-      "enum": [
-        "lazy"
-      ]
-    }
-  },
-  "additionalProperties": true
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.config.Commands.generic.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.config.Commands.generic.json b/solr/core/src/resources/apispec/core.config.Commands.generic.json
deleted file mode 100644
index 9d2b01d..0000000
--- a/solr/core/src/resources/apispec/core.config.Commands.generic.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "type": "object",
-  "properties": {
-    "name": {
-      "type": "string",
-      "description": "The name of this configuration item. This name will be used to update or remove this later if necessary."
-   },
-    "class": {
-      "type": "string",
-      "description": "The configuration item class. Class names do not need to be fully qualified if they are included with Solr, so you can abbreviate the name as 'solr.SearchHandler'. Custom or third-party class names may need to be fully qualified, however."
-   },
-    "runtimeLib": {
-      "type": "boolean",
-      "description": "An optional parameter to use a custom .jar file that has been uploaded to Solr's blobstore. This additionally requires that the .jar has also been registered with the 'add-runtimelib' command, which is one of the available commands for the Config API."
-   }
-  },
-  "required": [ "name", "class"],
-  "additionalProperties": true
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.config.Commands.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.config.Commands.json b/solr/core/src/resources/apispec/core.config.Commands.json
deleted file mode 100644
index 256306b..0000000
--- a/solr/core/src/resources/apispec/core.config.Commands.json
+++ /dev/null
@@ -1,215 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Config+API",
-  "description": "The Config API enables manipulating various aspects of your solrconfig.xml using REST-like API calls. All properties set with this API update a file called configoverlay.json, but not the solrconfig.xml file itself.",
-  "methods": [
-    "POST"
-  ],
-  "url": {
-    "paths": [
-      "/config"
-    ]
-  },
-  "commands": {
-    "set-property:": {
-      "type": "object",
-      "documentation": "https://cwiki.apache.org/confluence/display/solr/Config+API#ConfigAPI-Commandstomodifytheconfig",
-      "description": "Sets one or more of several pre-defined properties. These properties set cache sizes and classes, commit rules, JMX settings, and request dispatcher settings. See the documentation for the list of properties that are supported. If a property is set that already exists, it will be overwritten.",
-      "additionalProperties": true
-    },
-    "unset-property": {
-      "type":"array",
-      "documentation": "https://cwiki.apache.org/confluence/display/solr/Config+API#ConfigAPI-Commandstomodifytheconfig",
-      "description": "Removes one or more of several pre-defined properties. These properties set cache sizes and classes, commit rules, JMX settings, and request dispatcher settings. See the documentation for the list of properties that are supported. The value of the property does not need to be defined with the list of properties, only the name of the property.",
-      "items": {
-        "type": "string"
-      }
-    },
-    "add-requesthandler": {
-      "#include":"core.config.Commands.addRequestHandler.properties",
-      "required": [
-        "name",
-        "class"
-      ]
-    },
-    "update-requesthandler": {
-      "#include":"core.config.Commands.addRequestHandler.properties",
-      "required": [
-        "name"
-      ]
-    },
-    "delete-requesthandler": {
-      "type": "array",
-      "description": "Deletes one or more request handlers, using the name given when the request handler was created. Define more than one request handler by separating the list of names with commas.",
-      "items": {
-        "type": "string"
-      }
-    },
-    "add-searchcomponent": {
-      "#include": "core.config.Commands.generic"
-    },
-    "update-searchcomponent": {
-      "#include": "core.config.Commands.generic"
-    },
-    "delete-searchcomponent": {
-      "type": "array",
-      "description": "Deletes one or more search components, using the name given when the search component was created. Define more than one search component by separating the list of names with commas.",
-      "items": {
-        "type": "string"
-      }
-    },
-    "add-initparams": {
-      "type": "object",
-      "properties": {
-        "name": {
-          "type": "string",
-          "description": "Name by which it is added, so that it can be updated by name"
-        }
-      },
-      "additionalProperties": true
-    },
-    "update-initparams": {
-      "type": "object",
-      "properties": {
-        "name": {
-          "type": "string",
-          "description": "Name by which it is added"
-        }
-      },
-      "required": [
-        "name"
-      ],
-      "additionalProperties": true
-    },
-    "delete-initparams": {
-      "type": "array",
-      "description": "Deletes one or more init params, using the name given when the init param set was created. Define more than one init params by separating the list of names with commas.",
-      "items": {
-        "type": "string"
-      }
-    },
-    "add-queryresponsewriter": {
-      "#include": "core.config.Commands.generic"
-    },
-    "update-queryresponsewriter": {
-      "#include": "core.config.Commands.generic"
-    },
-    "delete-queryresponsewriter": {
-      "type": "array",
-      "description": "Deletes one or more query response writers, using the name given when the response writer was created. Define more than one response writer by separating the list of names with commas.",
-      "items": {
-        "type": "string"
-      }
-    },
-    "add-queryparser": {
-      "#include": "core.config.Commands.generic"
-    },
-    "update-queryparser": {
-      "#include": "core.config.Commands.generic"
-    },
-    "delete-queryparser": {
-      "type": "array",
-      "items": {
-        "type": "string"
-      },
-      "description": "Deletes one or more query parsers, using the name given when the query parser was created. Define more than one query parser by separating the list of names with commas."
-    },
-    "add-valuesourceparser": {
-      "#include": "core.config.Commands.generic"
-    },
-    "update-valuesourceparser": {
-      "#include": "core.config.Commands.generic"
-    },
-    "delete-valuesourceparser": {
-      "type": "array",
-      "description": "Deletes one or more ValueSourceParsers, using the name given when the ValueSourceParser was created. Define more than one ValueSourceParsers by separating the list of names with commas.",
-      "items": {
-        "type": "string"
-      }
-    },
-    "add-transformer": {
-      "#include": "core.config.Commands.generic"
-    },
-    "update-transformer": {
-      "#include": "core.config.Commands.generic"
-    },
-    "delete-transformer": {
-      "type": "array",
-      "description": "Deletes one or more document transformers, using the name given when the document transformer was created. Define more than one document transformers by separating the list of names with commas.",
-      "items": {
-        "type": "string"
-      }
-    },
-    "add-updateprocessor": {
-      "#include": "core.config.Commands.generic"
-    },
-    "update-updateprocessor": {
-      "#include": "core.config.Commands.generic"
-    },
-    "delete-updateprocessor": {
-      "type": "array",
-      "description": "Deletes one or more update processors, using the name given when the update processor was created. Define more than one update processors by separating the list of names with commas.",
-      "items": {
-        "type": "string"
-      }
-    },
-    "add-queryconverter": {
-      "#include": "core.config.Commands.generic"
-    },
-    "update-queryconverter": {
-      "#include": "core.config.Commands.generic"
-    },
-    "delete-queryconverter": {
-      "type": "array",
-      "description": "Deletes one or more query converters, using the name given when the query converter was created. Define more than one query converters by separating the list of names with commas.",
-      "items": {
-        "type": "string"
-      }
-    },
-    "add-listener": {
-      "type": "object",
-      "properties": {
-        "name": {
-          "type": "string",
-          "description": "Name by which it is added, so that it can be updated by name"
-        }
-      },
-      "required": [
-        "name"
-      ],
-      "additionalProperties": true
-    },
-    "update-listener": {
-      "type": "object",
-      "properties": {
-        "name": {
-          "type": "string",
-          "description": "Name by which it is added"
-        }
-      },
-      "required": [
-        "name"
-      ],
-      "additionalProperties": true
-    },
-    "delete-listener": {
-      "type": "array",
-      "description": "Deletes one or more listeners, using the name given when the listener was created. Define more than one listener by separating the list of names with commas.",
-      "items": {
-        "type": "string"
-      }
-    },
-    "add-runtimelib": {
-      "#include": "core.config.Commands.runtimeLib"
-    },
-    "update-runtimelib": {
-      "#include": "core.config.Commands.runtimeLib"
-    },
-    "delete-runtimelib": {
-      "type":"array",
-      "description": "Deletes one or more runtime libraries (runtimeLibs), using the name given when the runtimeLib was created. Define more than one runtimeLibs by separating the list of names with commas.",
-      "items": {
-        "type": "string"
-      }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.config.Commands.runtimeLib.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.config.Commands.runtimeLib.json b/solr/core/src/resources/apispec/core.config.Commands.runtimeLib.json
deleted file mode 100644
index 8e2fb2d..0000000
--- a/solr/core/src/resources/apispec/core.config.Commands.runtimeLib.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Adding+Custom+Plugins+in+SolrCloud+Mode",
-  "description": "Allows you to register .jars that have been uploaded to the .system collection in Solr. Note that uploading the .jar must occur before using this API.",
-  "type": "object",
-  "properties": {
-    "name": {
-      "description": "The name of the .jar blob in .system collection. This is the name you provided when you uploaded it.",
-      "type": "string"
-    },
-    "version": {
-      "type": "integer",
-      "description": "The version of the blob in .system collection. Be sure to use the correct version if you have multiple versions of the same .jar uploaded."
-    },
-    "sig": {
-      "type": "string",
-      "description": "The sha1 signature of the .jar, if it was signed before uploading. If you signed the sha1 digest of your .jar file prior to uploading it to the .system collection, this is where you need to provide the signature."
-    }
-  },
-  "required": [
-    "name",
-    "version"
-  ]
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.config.Params.Commands.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.config.Params.Commands.json b/solr/core/src/resources/apispec/core.config.Params.Commands.json
deleted file mode 100644
index 474f1a6..0000000
--- a/solr/core/src/resources/apispec/core.config.Params.Commands.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Request+Parameters+API",
-  "description": "Create, update and delete request parameter sets (paramsets) to override or replace parameters defined in solrconfig.xml. Parameter sets are used with request handlers by setting the useParams attribute to the paramset name in the definition of the request handler or with individual requests to Solr. Parameter sets defined with this API are stored in a file params.json in ZooKeeper or on the filesystem when not using SolrCloud. Note this API does not directly update solrconfig.xml. ",
-  "methods": [
-    "POST"
-  ],
-  "url": {
-    "paths": [
-      "/config/params"
-    ]
-  },
-  "commands": {
-    "set:": {
-      "type":"object",
-      "description":"Add or overwrite one or more paramsets. Each paramset definition includes a paramset name, followed by key-value pairs of the parameter and value to be set.",
-      "additionalProperties": true
-    },
-    "unset": {
-      "type":"array",
-      "description": "Delete one or more paramsets.",
-      "items": {
-        "type": "string"
-      }
-    },
-    "update": {
-      "type":"object",
-      "description": "Update one or more paramsets. This command will attempt to merge an existing paramset with the new values. Each paramset definition includes a paramset name, followed by key-value pairs of the parameters and values to be updated.",
-      "additionalProperties": true
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.config.Params.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.config.Params.json b/solr/core/src/resources/apispec/core.config.Params.json
deleted file mode 100644
index cff0350..0000000
--- a/solr/core/src/resources/apispec/core.config.Params.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Request+Parameters+API",
-  "description": "List all parameter sets (paramsets). Individual paramsets can be requested by paramset name.",
-  "methods": [
-    "GET"
-  ],
-  "url": {
-    "paths": [
-      "/config/params",
-      "/config/params/{params_set}"
-    ]
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.config.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.config.json b/solr/core/src/resources/apispec/core.config.json
deleted file mode 100644
index 2633fd9..0000000
--- a/solr/core/src/resources/apispec/core.config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Config+API",
-  "description": "Gets the Solr configuration for a collection.",
-  "methods": [
-    "GET"
-  ],
-  "url": {
-    "paths": [
-      "/config",
-      "/config/overlay",
-      "/config/query",
-      "/config/jmx",
-      "/config/requestDispatcher",
-      "/config/znodeVersion",
-      "/config/{plugin}"
-    ]
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.system.blob.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.system.blob.json b/solr/core/src/resources/apispec/core.system.blob.json
deleted file mode 100644
index 96fedcf..0000000
--- a/solr/core/src/resources/apispec/core.system.blob.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Blob+Store+API",
-  "description": "Lists blobs in the blob store (the .system collection). The list can be limited by name or name and version.",
-  "methods": [
-    "GET"
-  ],
-  "url": {
-    "paths": [
-      "/blob",
-      "/blob/{name}",
-      "/blob/{name}/{version}"
-    ],
-    "params": {
-      "wt": {
-        "type":"string",
-        "description": "Use the value 'filestream' to get the file content. Use other response writers (such as xml, or json) to fetch only the metadata."
-      }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/core.system.blob.upload.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/core.system.blob.upload.json b/solr/core/src/resources/apispec/core.system.blob.upload.json
deleted file mode 100644
index 854e544..0000000
--- a/solr/core/src/resources/apispec/core.system.blob.upload.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/Blob+Store+API",
-  "description": "Uploads a blob to the blob store. Note that the blob store is a specially named collection (which must be '.system') which must be created before uploading a blob to it.",
-  "methods": [
-    "POST"
-  ],
-  "url": {
-    "paths": [
-      "/blob/{name}"
-    ]
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/cores.Commands.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/cores.Commands.json b/solr/core/src/resources/apispec/cores.Commands.json
deleted file mode 100644
index 1ece63c..0000000
--- a/solr/core/src/resources/apispec/cores.Commands.json
+++ /dev/null
@@ -1,85 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API",
-  "description": "Actions on non-specific cores. See the /cores/{core} endpoint for actions on specific, named, cores.",
-  "methods": [
-    "POST"
-  ],
-  "url": {
-    "paths": [
-      "/cores"
-    ]
-  },
-  "commands": {
-    "create": {
-      "type" : "object",
-      "documentation": "https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API#CoreAdminAPI-CREATE",
-      "description": "Creates a new core. If you are using SolrCloud, you should use the Collections API instead. While a core for a SolrCloud cluster can be created with this API, it is considered an expert-level action. The Collections API has commands for creating new shards and replicas that ensure the safety of those actions within your cluster.",
-      "properties": {
-        "name": {
-          "type": "string",
-          "description": "The core name to create. If a core with this name already exists, an error will be returned."
-        },
-        "instanceDir": {
-          "type": "string",
-          "description": "The core instance directory, where files for this core should be stored. While this parameter is not required, if it is not defined it will default to a path relative to Solr Home that includes the name you've given the new core. This location MUST EXIST prior to creating the core, and it must include a conf directory that includes solrconfig.xml and your schema, either as a schema.xml file or using the managed schema feature."
-        },
-        "schema": {
-          "type": "string",
-          "description": "Name of the schema file to use for the core. Please note that if you are using a 'managed schema' (Solr's default behavior) then any value for this property that does not match the effective managedSchemaResourceName will be read once, backed up, and converted for managed schema use. If you are using the default name (schema.xml or the managed schema name), you do not need to define the schema file name."
-        },
-        "dataDir": {
-          "type": "string",
-          "description": "Name of the data directory relative to instanceDir. This is where the index files will be stored."
-        },
-        "config": {
-          "type": "string",
-          "description": "Name of the config file (i.e., solrconfig.xml) relative to instanceDir. If you are using the default name (solrconfig.xml), you do not need to define the config file name."
-        },
-        "configSet": {
-          "type": "string",
-          "documentation": "https://cwiki.apache.org/confluence/display/solr/Config+Sets",
-          "description": "The name of a config set to use. The config set must already exist. The solr.xml file defines the location of the configset base directory, and configuration files can be shared between cores by defining sub-directories. The files in the named configSet will be used for the schema and config properties instead of defining them explicitly."
-        },
-        "loadOnStartup": {
-          "type": "boolean",
-          "description": "If true, the core will be loaded on startup. Set to false to enable lazy loading, where the core will only be loaded if it is referenced or called.",
-          "default": "true"
-        },
-        "transient": {
-          "type": "boolean",
-          "description": "Allows Solr to unload the core if resources are required.",
-          "default": "false"
-        },
-        "shard": {
-          "type": "string",
-          "description": "In SolrCloud mode, the shard this core should belong to."
-        },
-        "collection": {
-          "type": "string",
-          "description": "The name of the collection this core belongs to."
-        },
-        "props": {
-          "type": "object",
-          "documentation": "https://cwiki.apache.org/confluence/display/solr/Defining+core.properties",
-          "description": "Allows adding core.properties for the collection.",
-          "additionalProperties": true
-        },
-        "coreNodeName": {
-          "type": "string",
-          "description": "The replica name."
-        },
-        "numShards": {
-          "type":"integer",
-          "description":"The number of shards to create for this core."
-        },
-        "async": {
-          "type": "string",
-          "description": "Defines a request ID that can be used to track this action after it's submitted. The action will be processed asynchronously when this is defined."
-        }
-      },
-      "required": [
-        "name"
-      ]
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/cores.Status.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/cores.Status.json b/solr/core/src/resources/apispec/cores.Status.json
deleted file mode 100644
index 155bcf5..0000000
--- a/solr/core/src/resources/apispec/cores.Status.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API#CoreAdminAPI-STATUS",
-  "description": "Provides status and other information about the status of each core. Individual cores can be requested by core name.",
-  "methods": [
-    "GET"
-  ],
-  "url": {
-    "paths": [
-      "/cores",
-      "/cores/{core}"
-    ],
-    "params": {
-      "indexInfo": {
-        "type": "boolean",
-        "description": "If true, index information will be returned, such as information about number of documents, deletions, segments, etc. In a large cluster with more than hundreds of cores, this can take a long time to retrieve. If you have a large cluster, consider setting this to false.",
-        "default": true
-      }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/cores.core.Commands.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/cores.core.Commands.json b/solr/core/src/resources/apispec/cores.core.Commands.json
deleted file mode 100644
index 5049a3a..0000000
--- a/solr/core/src/resources/apispec/cores.core.Commands.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API",
-  "description": "Actions that are peformed on individual cores, such as reloading, swapping cores, renaming, and others.",
-  "methods": [
-    "POST"
-  ],
-  "url": {
-    "paths": [
-      "/cores/{core}"
-    ]
-  },
-  "commands": {
-    "reload": {
-      "type":"object",
-      "documentation": "https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API#CoreAdminAPI-RELOAD",
-      "description": "Reloads a core. This is useful when you have made changes on disk such as editing the schema or solrconfig.xml files. Most APIs reload cores automatically, so this should not be necessary if changes were made with those APIs."
-    },
-    "swap": {
-      "type":"object",
-      "documentation": "https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API#CoreAdminAPI-SWAP",
-      "description": "Swaps the names of two existing Solr cores. This can be used to swap new content into production. The former core can be swapped back if necessary. Using this API is not supported in SolrCloud mode.",
-      "properties": {
-        "with": {
-          "type": "string",
-          "description": "The name of the other core to be swapped (the first core name is included in the request)."
-        },
-        "async": {
-          "type": "string",
-          "description": "Defines a request ID that can be used to track this action after it's submitted. The action will be processed asynchronously when this is defined."
-        }
-      },
-      "required": [
-        "with"
-      ]
-    },
-    "rename": {
-      "type": "object",
-      "documentation": "https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API#CoreAdminAPI-RENAME",
-      "description": "Change the name of a core.",
-      "properties": {
-        "to": {
-          "type": "string",
-          "description": "The new name for the core."
-        },
-        "async": {
-          "type": "string",
-          "description": "Defines a request ID that can be used to track this action after it's submitted. The action will be processed asynchronously when this is defined."
-        }
-      },
-      "required": [
-        "to"
-      ]
-    },
-    "unload": {
-      "type": "object",
-      "documentation": "https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API#CoreAdminAPI-UNLOAD",
-      "description": "Removes a core. Active requests would continue to be processed, but new requests will not be sent to the new core. If a core is registered under more than one name, only the name given in the request is removed.",
-      "properties": {
-        "deleteIndex": {
-          "type": "boolean",
-          "description": "If true, the index will be removed while unloading the core.",
-          "default": "false"
-        },
-        "deleteDataDir": {
-          "type": "boolean",
-          "description": "If true, the data directory and all sub-directories will be removed while unloading the core.",
-          "default": "false"
-        },
-        "deleteInstanceDir": {
-          "type": "boolean",
-          "description": "If true, everything related to the core, including the index, data, and conf directories, will be removed while unloading the core.",
-          "default": "false"
-        },
-        "async": {
-          "type": "string",
-          "description": "Defines a request ID that can be used to track this action after it's submitted. The action will be processed asynchronously when this is defined."
-        }
-      }
-    },
-    "merge-indexes": {
-      "type":"object",
-      "documentation": "https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API#CoreAdminAPI-MERGEINDEXES",
-      "description":"Merges one or more indexes to another index. The indexes must have completed commits, and should be locked against writes until the merge is complete to avoid index corruption. The target core (which is the core that should be used as the endpoint for this command) must exist before using this command. A commit should also be performed on this core after the merge is complete.",
-      "properties": {
-        "indexDir": {
-          "type": "array",
-          "description": "A comma-separated list index directories for each source core that will be merged with the target core.",
-          "items": {
-            "type": "string"
-          }
-        },
-        "srcCore": {
-          "type": "array",
-          "description": "A comma-separated list of the names of each source core to be merged with the target core.",
-          "items": {
-            "type": "string"
-          }
-        },
-        "async": {
-          "type": "string",
-          "description": "Defines a request ID that can be used to track this action after it's submitted. The action will be processed asynchronously when this is defined."
-        }
-      }
-    },
-    "split":  { "#include": "cores.core.Commands.split"},
-    "request-recovery": {
-      "type":"object",
-      "documentation": "https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API#CoreAdminAPI-REQUESTRECOVERY",
-      "description": "Manually asks a core to recover by synching with a leader. It may help SolrCloud clusters where a node refuses to come back up. However, it is considered an expert-level command, and should be used very carefully."
-    },
-    "force-prepare-for-leadership": {
-      "type": "object",
-      "description": "An internal API used by the Collections API to force leader election. This should not be used directly by end-users."
-    },
-    "prep-recovery": {
-      "type": "object",
-      "additionalProperties": true,
-      "description": "An internal API used by the Collections API. This should not be used directly by end-users."
-    },
-    "request-apply-updates": {
-      "type": "object",
-      "additionalProperties": true,
-      "description": "An internal API used by the Collections API. This should not be used directly by end-users."
-    },
-    "request-sync-shard": {
-      "type": "object",
-      "additionalProperties": true,
-      "description": "An internal API used by the Collections API. This should not be used directly by end-users."
-    },
-    "request-buffer-updates": {
-      "type": "object",
-      "additionalProperties": true,
-      "description": "An internal API used by the Collections API. This should not be used directly by end-users."
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/cores.core.Commands.split.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/cores.core.Commands.split.json b/solr/core/src/resources/apispec/cores.core.Commands.split.json
deleted file mode 100644
index 3aa0a91..0000000
--- a/solr/core/src/resources/apispec/cores.core.Commands.split.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-  "documentation": "https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API#CoreAdminAPI-SPLIT",
-  "description": "Allows splitting an index into two or more new indexes.",
-  "type": "object",
-  "properties": {
-    "path": {
-      "type": "array",
-      "description": "Directory path(s) in which a piece of the index will be written. This allows splitting the index before creating the cores to contain them. Note if using this approach that the indexes will not be able to receive updates until a new core has been created to handle the incoming updates. If you have already created the new cores, you should define the targetCore property instead.",
-      "items": {
-        "type": "string"
-      }
-    },
-    "targetCore": {
-      "type": "array",
-      "description": "The target Solr core(s) to which a piece of the index will be merged (if the target core already contains data). This requires that the cores have already been created. If the cores have not yet been created, use the path property instead.",
-      "items": {
-        "type": "string"
-      }
-    },
-    "splitKey": {
-      "type":"string",
-      "description": "A route key to use for splitting the index. This parameter is optional, but should not be defined if the ranges parameter is also defined."
-    },
-    "ranges": {
-      "type": "string",
-      "description": "A comma-separated list of hexadecimal hash ranges that will be used to split the core. This parameter is optional, but should not be defined if the splitKey parameter is also defined."
-    },
-    "async": {
-      "type": "string",
-      "description": "Defines a request ID that can be used to track this action after it's submitted. The action will be processed asynchronously when this is defined. This command can be long-running, so running it asynchronously is recommended."
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/emptySpec.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/emptySpec.json b/solr/core/src/resources/apispec/emptySpec.json
deleted file mode 100644
index d95bff9..0000000
--- a/solr/core/src/resources/apispec/emptySpec.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "methods": [
-    "GET",
-    "POST"
-  ],
-  "url": {
-    "paths": [
-      "$handlerName"
-    ]
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/node.Commands.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/node.Commands.json b/solr/core/src/resources/apispec/node.Commands.json
deleted file mode 100644
index 11b3c89..0000000
--- a/solr/core/src/resources/apispec/node.Commands.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "methods": [
-    "POST"
-  ],
-  "url": {
-    "paths": [
-      "/node"
-    ]
-  },
-  "commands": {
-    "overseer-op": {
-      "type": "object",
-      "additionalProperties": true
-    },
-    "rejoin-leader-election": {
-      "type": "object",
-      "additionalProperties": true
-    },
-    "invoke":{
-      "type": "object",
-      "additionalProperties": true
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/node.Info.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/node.Info.json b/solr/core/src/resources/apispec/node.Info.json
deleted file mode 100644
index e7752e6..0000000
--- a/solr/core/src/resources/apispec/node.Info.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-   "description": "Provides information about system properties, threads, logging settings, and system details for a node.",
-  "methods": ["GET"],
-  "url": {
-    "paths": [
-      "/node/properties",
-      "/node/threads",
-      "/node/logging",
-      "/node/system"]
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/resources/apispec/node.invoke.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/apispec/node.invoke.json b/solr/core/src/resources/apispec/node.invoke.json
deleted file mode 100644
index c8a9f69..0000000
--- a/solr/core/src/resources/apispec/node.invoke.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "methods": [
-    "GET"
-  ],
-  "url": {
-    "paths": [
-      "/node/invoke"
-    ],
-    "params": {
-      "class": {
-        "type": "string",
-        "description": "Name of the class that must be invoked. "
-      }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/test/org/apache/solr/api/TestPathTrie.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/api/TestPathTrie.java b/solr/core/src/test/org/apache/solr/api/TestPathTrie.java
deleted file mode 100644
index d4cbf32..0000000
--- a/solr/core/src/test/org/apache/solr/api/TestPathTrie.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.solr.api;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Set;
-
-import com.google.common.collect.ImmutableSet;
-import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.util.PathTrie;
-
-import static java.util.Collections.emptyMap;
-import static java.util.Collections.singletonMap;
-import static org.apache.solr.api.ApiBag.HANDLER_NAME;
-
-public class TestPathTrie extends SolrTestCaseJ4 {
-
-  public void testPathTrie() {
-    PathTrie<String> pathTrie = new PathTrie<>(ImmutableSet.of("_introspect"));
-    pathTrie.insert("/", emptyMap(), "R");
-    pathTrie.insert("/aa", emptyMap(), "d");
-    pathTrie.insert("/aa/bb/{cc}/dd", emptyMap(), "a");
-    pathTrie.insert("/$handlerName/{cc}/dd", singletonMap(HANDLER_NAME, "test"), "test");
-    pathTrie.insert("/aa/bb/{cc}/{xx}", emptyMap(), "b");
-    pathTrie.insert("/aa/bb", emptyMap(), "c");
-
-    HashMap templateValues = new HashMap<>();
-    assertEquals("R", pathTrie.lookup("/", templateValues, null));
-    assertEquals("d", pathTrie.lookup("/aa", templateValues, null));
-    assertEquals("a", pathTrie.lookup("/aa/bb/hello/dd", templateValues, null));
-    templateValues.clear();
-    assertEquals("test", pathTrie.lookup("/test/hello/dd", templateValues, null));
-    assertEquals("hello", templateValues.get("cc"));
-    templateValues.clear();
-    assertEquals("b", pathTrie.lookup("/aa/bb/hello/world", templateValues, null));
-    assertEquals("hello", templateValues.get("cc"));
-    assertEquals("world", templateValues.get("xx"));
-    Set<String> subPaths =  new HashSet<>();
-    templateValues.clear();
-    pathTrie.lookup("/aa",templateValues, subPaths);
-    assertEquals(3, subPaths.size());
-
-
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java b/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java
index 2f4fcda..83b1cf3 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java
@@ -42,7 +42,7 @@ import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.api.Api;
 import org.apache.solr.api.V2HttpCall;
 import org.apache.solr.common.util.CommandOperation;
-import org.apache.solr.util.PathTrie;
+import org.apache.solr.common.util.PathTrie;
 
 import static org.apache.solr.api.ApiBag.EMPTY_SPEC;
 import static org.apache.solr.client.solrj.SolrRequest.METHOD.GET;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/core/src/test/org/apache/solr/util/JsonValidatorTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/JsonValidatorTest.java b/solr/core/src/test/org/apache/solr/util/JsonValidatorTest.java
index 02e95f7..a5e50dd 100644
--- a/solr/core/src/test/org/apache/solr/util/JsonValidatorTest.java
+++ b/solr/core/src/test/org/apache/solr/util/JsonValidatorTest.java
@@ -21,7 +21,6 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.api.ApiBag;
 import org.apache.solr.common.util.ValidatingJsonMap;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
@@ -48,7 +47,7 @@ public class JsonValidatorTest extends SolrTestCaseJ4 {
 
 
   public void testSchemaValidation() {
-    ValidatingJsonMap spec = ApiBag.getSpec("collections.Commands").getSpec();
+    ValidatingJsonMap spec = Utils.getSpec("collections.Commands").getSpec();
     Map createSchema = spec.getMap("commands", NOT_NULL).getMap("create-alias", NOT_NULL);
     JsonSchemaValidator validator = new JsonSchemaValidator(createSchema);
     List<String> errs = validator.validateJson(Utils.fromJSONString("{name : x, collections: [ c1 , c2]}"));
@@ -181,7 +180,7 @@ public class JsonValidatorTest extends SolrTestCaseJ4 {
   }
 
   private void checkSchema(String name) {
-    ValidatingJsonMap spec = ApiBag.getSpec(name).getSpec();
+    ValidatingJsonMap spec = Utils.getSpec(name).getSpec();
     Map commands = (Map) spec.get("commands");
     for (Object o : commands.entrySet()) {
       Map.Entry cmd = (Map.Entry) o;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/solrj/src/java/org/apache/solr/common/SpecProvider.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/SpecProvider.java b/solr/solrj/src/java/org/apache/solr/common/SpecProvider.java
new file mode 100644
index 0000000..d111604
--- /dev/null
+++ b/solr/solrj/src/java/org/apache/solr/common/SpecProvider.java
@@ -0,0 +1,25 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.solr.common;
+import org.apache.solr.common.util.ValidatingJsonMap;
+
+/**A generic interface for any class that is capable of providing its specification as a json schema
+ */
+public interface SpecProvider {
+  ValidatingJsonMap getSpec();
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c5c05b46/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java b/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java
index dad586e..3b24f22 100644
--- a/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java
+++ b/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java
@@ -17,6 +17,7 @@
 package org.apache.solr.common.params;
 
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Locale;
 import java.util.Set;
@@ -184,7 +185,7 @@ public interface CommonParams {
   String AUTOSCALING_PATH = "/admin/autoscaling";
   String AUTOSCALING_DIAGNOSTICS_PATH = "/admin/autoscaling/diagnostics";
 
-  Set<String> ADMIN_PATHS = new HashSet<>(Arrays.asList(
+  Set<String> ADMIN_PATHS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
       CORES_HANDLER_PATH,
       COLLECTIONS_HANDLER_PATH,
       CONFIGSETS_HANDLER_PATH,
@@ -192,7 +193,9 @@ public interface CommonParams {
       AUTHZ_PATH,
       METRICS_PATH,
       AUTOSCALING_PATH,
-      AUTOSCALING_DIAGNOSTICS_PATH));
+      AUTOSCALING_DIAGNOSTICS_PATH)));
+  String APISPEC_LOCATION = "apispec/";
+  String INTROSPECT = "/_introspect";
 
   /** valid values for: <code>echoParams</code> */
   enum EchoParamStyle {