A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | AB | AC | AD | AE | AF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | @ | |||||||||||||||||||||||||||||||
2 | Logically related APIs often separated by empty rows | |||||||||||||||||||||||||||||||
3 | highlights a missing v1 or v2 API/class | |||||||||||||||||||||||||||||||
4 | highlights an API that doesn't exist in Solr in any form, but that would be nice to add consistency across resource types | |||||||||||||||||||||||||||||||
5 | Green tint background used to highlight changes from the current v2 API | |||||||||||||||||||||||||||||||
6 | highlights TODOs or thing I'm unsure of | |||||||||||||||||||||||||||||||
7 | ||||||||||||||||||||||||||||||||
8 | ||||||||||||||||||||||||||||||||
9 | ||||||||||||||||||||||||||||||||
10 | ||||||||||||||||||||||||||||||||
11 | Colloquial Name | v1 Example | v2 Example (Current) | v2 Example (Proposed) | RequestHandler | v2 Api | v2 Exists? | v2 REST-ful? | v2 JAX-RS? | v2 SolrJ Coverage? | Standalone Only | JIRA | Questions/Notes | |||||||||||||||||||
12 | List ClusterProps | GET /api/cluster/properties | GET /api/cluster/properties | ClusterProp | TRUE | TRUE | TRUE | TRUE | SOLR-16390 | |||||||||||||||||||||||
13 | Create ClusterProp | GET /solr/admin/collections?action=CLUSTERPROP&name=propName&val=propVal | PUT /api/cluster/properties/propName {"value": "propVal"} | PUT /api/cluster/properties/propName {"value": "propVal"} | CollectionsHandler | ClusterProp | TRUE | TRUE | TRUE | TRUE | SOLR-16390 | V2 same as update-clusterprop | ||||||||||||||||||||
14 | Fetch Single ClusterProp | GET /api/cluster/properties/propName | GET /api/cluster/properties/propName | ClusterProp | TRUE | TRUE | TRUE | TRUE | SOLR-16390 | |||||||||||||||||||||||
15 | Update ClusterProp (Single, not nested) | GET /solr/admin/collections?action=CLUSTERPROP&name=propName&val=propVal | PUT /api/cluster/properties/propName {"value": "propVal"} | PUT /api/cluster/properties/propName {"value": "propVal"} | CollectionsHandler | ClusterProp | TRUE | TRUE | TRUE | TRUE | SOLR-16390 | V2 same as create-clusterprop | ||||||||||||||||||||
16 | Update ClusterProp (Bulk, nested) | GET /solr/admin/collections?action=CLUSTERPROP&name=propName&val=propVal | PUT /api/cluster/properties {...} | PUT /api/cluster/properties {...} | ClusterProp | TRUE | TRUE | TRUE | TRUE | SOLR-16390 | It looks like it updates /clusterprops.json in ZK | |||||||||||||||||||||
17 | Delete ClusterProp | GET /solr/admin/collections?action=CLUSTERPROP&name=propName | DELETE /api/cluster/properties/propName | DELETE /api/cluster/properties/propName | CollectionsHandler | ClusterProp | TRUE | TRUE | TRUE | TRUE | SOLR-16390 | |||||||||||||||||||||
18 | ||||||||||||||||||||||||||||||||
19 | List Collections | GET /solr/admin/collections?action=LIST | GET /api/collections and GET /api/cluster | GET /api/collections | CollectionsHandler | CollectionsAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16391 | |||||||||||||||||||||
20 | Create Collection | GET /solr/admin/collections?action=CREATE | POST /api/collections {...} | POST /api/collections {...} | CollectionsHandler | CreateCollectionAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16391 | |||||||||||||||||||||
21 | Fetch Single Collection Status | GET /solr/admin/collections?action=CLUSTERSTATUS&collection=collName | GET /api/collections/collName | GET /api/collections/collName | CollectionsHandler | CollectionStatusAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16391 | |||||||||||||||||||||
22 | Fetch Single Collection Status (detailed) | GET /solr/admin/collections?action=COLSTATUS | GET /api/collections/collName?details=specificFlags | GET /api/collections/collName?details=specificFlags | CollectionsHandler | TRUE | TRUE | TRUE | TRUE | SOLR-16391 | details' param here would take the flag values currently accepted by COLSTATUS (coreInfo, segments, fieldInfo, etc.) | |||||||||||||||||||||
23 | Update Collection | GET /solr/admin/collections?action=MODIFYCOLLECTION | POST /api/collections/collName {"modify": {...}} | PUT /api/collections/collName {"propName": "newValue"} | CollectionsHandler | ModifyCollectionAPI | TRUE | FALSE | FALSE | FALSE | SOLR-16391 | |||||||||||||||||||||
24 | Delete Collection | GET /solr/admin/collections?action=DELETE | DELETE /api/collections/collName | DELETE /api/collections/collName | CollectionsHandler | DeleteCollectionApi | TRUE | TRUE | TRUE | TRUE | SOLR-16372 | |||||||||||||||||||||
25 | ||||||||||||||||||||||||||||||||
26 | List Shards | GET /api/collections/collName/shards | ||||||||||||||||||||||||||||||
27 | Create Shard (from new) | GET /solr/admin/collections?action=CREATESHARD&collection=collName | POST /api/collections/collName/shards {...} | POST /api/collections/collName/shards {...} | CollectionsHandler | CreateShardAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16392 | |||||||||||||||||||||
28 | Fetch Single Shard | GET /api/collections/collName/shards/shard1 | ||||||||||||||||||||||||||||||
29 | Delete Shard | GET /solr/admin/collections?action=DELETESHARD&collection=collName&shard=shard1 | DELETE /api/collections/collName/shards/shard1 | DELETE /api/collections/collName/shards/shard1 | CollectionsHandler | DeleteShardAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16392 | |||||||||||||||||||||
30 | ||||||||||||||||||||||||||||||||
31 | List Replicas | GET /api/collections/collName/shards/shardName/replicas | ||||||||||||||||||||||||||||||
32 | Create Replica | GET /solr/admin/collections?action=ADDREPLICA&collection=collName | POST /api/collections/collName/shards/shardName/replicas {...} | POST /api/collections/collName/shards/shardName/replicas {...} | CollectionsHandler | AddReplicaAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16392 | |||||||||||||||||||||
33 | Fetch Single Replica | GET /api/collections/collName/shards/shardName/replicas/repName | ||||||||||||||||||||||||||||||
34 | Delete Single Replica (by Name) | GET /solr/admin/collections?action=DELETEREPLICA&collection=collName&shard=shard1&replica=repName | DELETE /api/collections/collName/shards/shard1/replicas/repName | DELETE /api/collections/collName/shards/shard1/replicas/repName | CollectionsHandler | DeleteReplicaAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16392 | |||||||||||||||||||||
35 | Delete N Replicas from Shard | GET /solr/admin/collections?action=DELETEREPLICA&collection=collName&shard=shard1&count=123 | DELETE /api/collections/collName/shards/shard1/replicas?count=123 | DELETE /api/collections/collName/shards/shard1/replicas?count=123 | CollectionsHandler | DeleteReplicaAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16392 | |||||||||||||||||||||
36 | Delete N Replicas from All Shards | GET /solr/admin/collections?action=DELETEREPLICA&collection=collName&count=123 | PUT /api/collections/collName/scale {"count": 123} | PUT /api/collections/collName/scale {"count": 123} | CollectionsHandler | DeleteReplicaAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16392 | Not ideal, eventually fold into MODIFYCOLLECTION? | ||||||||||||||||||||
37 | ||||||||||||||||||||||||||||||||
38 | List Aliases | GET /solr/admin/collections?action=LISTALIASES | GET /api/aliases | GET /api/aliases | CollectionsHandler | ListAliasesAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16393 | |||||||||||||||||||||
39 | Create Alias | GET /solr/admin/collections?action=CREATEALIAS | POST /api/aliases {...} | POST /api/aliases {...} | CollectionsHandler | CreateAliasAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16393 | |||||||||||||||||||||
40 | Fetch Single Alias | GET /api/aliases/aliasName | GET /api/aliases/aliasName | ListAliasesAPI | TRUE | TRUE | TRUE | FALSE | SOLR-16393 | |||||||||||||||||||||||
41 | Delete Alias | GET /solr/admin/collections?action=DELETEALIAS | DELETE /api/aliases/aliasName | DELETE /api/aliases/aliasName | CollectionsHandler | CollectionsAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16393 | |||||||||||||||||||||
42 | ||||||||||||||||||||||||||||||||
43 | List Replica Props | GET /api/collections/collName/shards/shardName/replicas/repName/properties | ||||||||||||||||||||||||||||||
44 | Create Replica Prop | GET /solr/admin/collections?action=ADDREPLICAPROP&... | PUT /api/collections/collName/shards/shardName/replicas/replicaName/properties/propName {"value": "v"} | PUT /api/collections/collName/shards/shardName/replicas/replicaName/properties/propName {"value": "v"} | CollectionsHandler | AddReplicaPropertyApi | TRUE | TRUE | TRUE | FALSE | SOLR-16392 | |||||||||||||||||||||
45 | Fetch Replica Prop | GET /api/collections/collName/shards/shardName/replicas/repName/properties/propName | ||||||||||||||||||||||||||||||
46 | Delete Replica Prop | GET /solr/admin/collections?action=DELETEREPLICAPROP&... | DELETE /api/collections/collName/shards/shardName/replicas/replicaName/properties/propName | DELETE /api/collections/collName/shards/shardName/replicas/replicaName/properties/propName | CollectionsHandler | DeleteReplicaPropertyApi | TRUE | TRUE | TRUE | TRUE | SOLR-16392 | |||||||||||||||||||||
47 | ||||||||||||||||||||||||||||||||
48 | List Configsets | GET /solr/admin/configs?action=LIST | GET /api/configsets | GET /api/configsets | ConfigSetsHandler | ConfigsetsApi | TRUE | TRUE | TRUE | TRUE | SOLR-16396 | |||||||||||||||||||||
49 | Create Configset (from Existing) | GET /solr/admin/configs?action=CREATE | POST /api/configsets {...} | POST /api/configsets {...} | ConfigSetsHandler | ConfigsetsApi | TRUE | TRUE | TRUE | TRUE | SOLR-16396 | Distinguished from below only by Content-type? | ||||||||||||||||||||
50 | Create Configset (from New) | POST /solr/admin/configs?action=UPLOAD <req-body> | PUT /api/configsets/configsetName <req-body> | PUT /api/configsets/configsetName <req-body> | ConfigSetsHandler | ConfigsetsApi | TRUE | TRUE | TRUE | TRUE | SOLR-16396 | |||||||||||||||||||||
51 | Fetch Single Configset | GET /api/configsets/configsetName | ||||||||||||||||||||||||||||||
52 | Fetch Single Configset File | GET /api/configsets/configsetName/files/some/location | Similar functionality already offered by ShowFileRequestHandler, but SFRH attempts to support both standalone and SolrCloud, whereas the rest of our configset APIs only support SolrCloud | |||||||||||||||||||||||||||||
53 | Update Configset (single file) | POST /solr/admin/configs?action=UPLOAD?filePath=/some/location <req-body> | PUT /api/configsets/configSetName/files/some/location <req-body> | PUT /api/configsets/configSetName/files/some/location <req-body> | ConfigSetsHandler | ConfigsetsApi | TRUE | TRUE | TRUE | TRUE | SOLR-16396 | |||||||||||||||||||||
54 | Delete Configset | GET /solr/admin/configs?action=DELETE&name=configsetName | DELETE /api/configsets/configSetName | DELETE /api/configsets/configSetName | ConfigSetsHandler | ConfigsetsApi | TRUE | TRUE | TRUE | TRUE | SOLR-16396 | |||||||||||||||||||||
55 | ||||||||||||||||||||||||||||||||
56 | List Alias Prop | GET /api/aliases/aliasName/properties | GET /api/aliases/aliasName/properties | AliasPropertiesAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16393 | |||||||||||||||||||||||
57 | Create Alias Prop | GET /solr/admin/collections?action=ALIASPROP&property.propName=propVal | PUT /api/aliases/aliasName/properties/propName {"value": "someVal"} | PUT /api/aliases/aliasName/properties/propName {"value": "someVal"} | CollectionsHandler | AliasPropertiesAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16393 | |||||||||||||||||||||
58 | Fetch Single Alias Prop | GET /api/aliases/aliasName/properties/propName | GET /api/aliases/aliasName/properties/propName | AliasPropertiesAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16393 | |||||||||||||||||||||||
59 | Update Alias Prop | GET /solr/admin/collections?action=ALIASPROP&property.propName=propVal | PUT /api/aliases/aliasName/properties/propName {"value": "someVal"} | PUT /api/aliases/aliasName/properties/propName {"value": "someVal"} | CollectionsHandler | AliasPropertiesAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16393 | |||||||||||||||||||||
60 | Delete Alias Prop | GET /solr/admin/collections?action=ALIASPROP&property.propName= | DELETE /api/aliases/aliasName/properties/propName | DELETE /api/aliases/aliasName/properties/propName | CollectionsHandler | AliasPropertiesAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16393 | |||||||||||||||||||||
61 | ||||||||||||||||||||||||||||||||
62 | List All Blobs | GET /solr/.system/blob | GET /api/collections/.system/blob | GET /api/collections/.system/blobs | BlobHandler | GetBlobInfoApi | TRUE | FALSE | FALSE | FALSE | SOLR-16398 | Should we change how wt=filestream is used to distinguish between fetching metadata vs blob data | ||||||||||||||||||||
63 | Create Blob Version | POST /solr/.system/blob/someBlobName <binary-req-body> | POST /api/collections/.system/blob/blobName <binary-req-body> | PUT /api/collections/.system/blobs/blobName <binary-req-body> | BlobHandler | UploadBlobApi | TRUE | FALSE | FALSE | FALSE | SOLR-16398 | |||||||||||||||||||||
64 | Get Single Blob | GET /solr/.system/blob/someBlobName | GET /api/collections/.system/blob/blobName | GET /api/collections/.system/blobs/blobName | BlobHandler | GetBlobInfoApi | TRUE | FALSE | FALSE | FALSE | N/A | |||||||||||||||||||||
65 | Get Single Versioned Blob | GET /solr/.system/blob/someBlobName/123 | GET /api/collections/.system/blob/blobName/123 | GET /api/collections/.system/blobs/blobName?version=123 | BlobHandler | GetBlobInfoApi | TRUE | FALSE | FALSE | FALSE | SOLR-16398 | Version is query param because it doesn't merit being a true "resource" (i.e. it's only used to filter blobs and can't be retrieved in its own right) | ||||||||||||||||||||
66 | ||||||||||||||||||||||||||||||||
67 | List Collection Props | GET /api/collections/collName/properties | ||||||||||||||||||||||||||||||
68 | Create Collection Prop | GET /solr/admin/collections?action=COLLECTIONPROP&propertyName=asdf&propertyValue=fdsa | PUT /api/collections/collName/properties/propName {"value": "someVal"} | PUT /api/collections/collName/properties/propName {"value": "someVal"} | CollectionsHandler | CollectionPropertyAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16391 | |||||||||||||||||||||
69 | Fetch Single Collection Prop | GET /api/collections/collName/properties/propName | ||||||||||||||||||||||||||||||
70 | Delete Collection Prop | GET /solr/admin/collections?action=COLLECTIONPROP&propertyName=asdf | DELETE /api/collections/collName/properties/propName | DELETE /api/collections/collName/properties/propName | CollectionsHandler | CollectionPropertyAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16391 | |||||||||||||||||||||
71 | ||||||||||||||||||||||||||||||||
72 | Create Core | GET /solr/admin/cores?action=CREATE | POST /api/cores {...} | POST /api/cores {...} | CoreAdminHandler | CreateCoreAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16391 | |||||||||||||||||||||
73 | Fetch Status (Single Core) | GET /solr/admin/cores?action=STATUS&core=coreName | GET /api/cores/coreName | GET /api/cores/coreName | CoreAdminHandler | SingleCoreStatusAPI | TRUE | TRUE | TRUE | TRUE | N/A | |||||||||||||||||||||
74 | Fetch Status (All Cores) | GET /solr/admin/cores?action=STATUS | GET /api/cores | GET /api/cores | CoreAdminHandler | AllCoreStatusAPI | TRUE | TRUE | TRUE | TRUE | ||||||||||||||||||||||
75 | ||||||||||||||||||||||||||||||||
76 | List Log Levels | GET /solr/admin/info/logging | GET /api/node/logging/levels | GET /api/node/logging/levels | LoggingHandler | NodeLoggingAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16458 | Calvince Otieno | ||||||||||||||||||||
77 | Retrieve Logs | GET /solr/admin/info/logging?since=123456789 | GET /api/node/logging/messages?since=123456789 | GET /api/node/logging/messages?since=123456789 | LoggingHandler | NodeLoggingAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16458 | |||||||||||||||||||||
78 | Fetch Single Log Level | GET /api/node/logging/levels/className | ||||||||||||||||||||||||||||||
79 | Update Log Levels | GET /solr/admin/info/logging?set=className:WARN | PUT /api/node/logging/levels [{"className": "WARN"}] | PUT /api/node/logging/levels [{"className": "WARN"}] | LoggingHandler | NodeLoggingAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16458 | |||||||||||||||||||||
80 | ||||||||||||||||||||||||||||||||
81 | Set LogWatcher Threshold | GET /solr/admin/info/logging?threshold=WARN | PUT /api/node/logging/messages/threshold | PUT /api/node/logging/messages/threshold | LoggingHandler | NodeLoggingAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16458 | |||||||||||||||||||||
82 | List Roles for Node | GET /api/cluster/node-roles/node/nodeName | GET /api/cluster/nodes/nodeName/roles OR GET /api/node-roles?nodeName=someNode | ClusterAPI | TRUE | FALSE | FALSE | FALSE | SOLR-16458 | |||||||||||||||||||||||
83 | List Nodes with Role | GET /api/cluster/node-roles/role/roleName | GET /api/cluster/roles/roleName OR GET /api/node-roles?role=someRoleName | ClusterAPI | TRUE | FALSE | FALSE | FALSE | SOLR-16458 | |||||||||||||||||||||||
84 | List all Roles and Associated Nodes | GET /api/cluster/node-roles | GET /api/node-roles | ClusterAPI | TRUE | FALSE | FALSE | FALSE | SOLR-16458 | |||||||||||||||||||||||
85 | List Supported/Available Node Roles | GET /api/cluster/node-roles/supported | GET /api/node-roles?supported=true | ClusterAPI | TRUE | FALSE | FALSE | FALSE | SOLR-16458 | |||||||||||||||||||||||
86 | List Nodes with Role in particular Mode | GET /api/cluster/node-roles/role/roleName/modeName | GET /api/node-roles?role=someRoleName&mode=someMode | ClusterAPI | TRUE | FALSE | FALSE | FALSE | SOLR-16458 | |||||||||||||||||||||||
87 | Add Role to Node | GET /solr/admin/collections?action=ADDROLE | POST /api/cluster {"add-role": {...}} | PUT /api/cluster/nodes/nodeName/roles/roleName TODO | CollectionsHandler | ClusterAPI | TRUE | FALSE | FALSE | FALSE | SOLR-16458 | Would these be more RESTful if node-role management was just one section of metadata under PUT /api/nodes/nodeName | ||||||||||||||||||||
88 | Remove Role from Node | GET /solr/admin/collections?action=REMOVEROLE | POST /api/cluster {"remove-role": {...}} | DELETE /api/cluster/nodes/nodeName/roles/roleName TODO | CollectionsHandler | ClusterAPI | TRUE | FALSE | FALSE | FALSE | SOLR-16458 | |||||||||||||||||||||
89 | ||||||||||||||||||||||||||||||||
90 | List Collection Backups | GET /solr/admin/collections?action=LISTBACKUP | GET /api/backups/backupName/versions | GET /api/backups/backupName/versions | CollectionsHandler | CollectionBackupsAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16394 | Should these just be under /api/backups?.....NO, because then we run into issues differentiating core and collection backups...gah, what a wart. | ||||||||||||||||||||
91 | Create Collection Backup | GET /solr/admin/collections?action=BACKUP | POST /api/backups/backupName/collections/collectionName/versions | POST /api/backups/backupName/collections/collectionName/versions | CollectionsHandler | CollectionsAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16394 | Why do these APIs not contain the collection name? I guess because you might point want SOlr to interact with backups (i.e. list and restore) even when it doesn't have the corresponding collection locally? | ||||||||||||||||||||
92 | Delete Backup (by ID) | GET /solr/admin/collections?action=DELETEBACKUP | DELETE /api/backups/backupName/versions/2 | DELETE /api/backups/backupName/versions/2 | CollectionsHandler | CollectionBackupsAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16394 | Should we also allow purgeUnused here, or only on /checkpoints | ||||||||||||||||||||
93 | Delete All Backups Except Most Recent 'N' | GET /solr/admin/collections?action=DELETEBACKUP | DELETE /api/backups/backupName/versions?retainLatest=123&... | DELETE /api/backups/backupName/versions?retainLatest=123&... | CollectionsHandler | CollectionBackupsAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16394 | |||||||||||||||||||||
94 | Delete Backups (unused files) | GET /solr/admin/collections?action=DELETEBACKUP | PUT /api/backups/backupName/purgeUnused | PUT /api/backups/backupName/purgeUnused | CollectionsHandler | CollectionBackupsAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16394 | Should this GC API be under a "commands" section in v2 | ||||||||||||||||||||
95 | ||||||||||||||||||||||||||||||||
96 | Create Core Backup | GET /solr/admin/cores?action=BACKUPCORE&core=coreName | POST /api/cores/backups {...} | POST /api/cores/backups {...} | CoreAdminHandler | BackupCoreAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16490 | Sanjay Dutt | ||||||||||||||||||||
97 | ||||||||||||||||||||||||||||||||
98 | List Collection Snapshots | GET /solr/admin/collections?action=LISTSNAPSHOTS | GET /api/collections/collName/snapshots | GET /api/collections/collName/snapshots | CollectionsHandler | ListCollectionSnapshotsAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16468 | John Durham | ||||||||||||||||||||
99 | Create Collection Snapshot | GET /solr/admin/collections?action=CREATESNAPSHOT | POST /api/collections/collName/snapshots/snapshotName | POST /api/collections/collName/snapshots/snapshotName | CollectionsHandler | CreateCollectionSnapshotAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16468 | John Durham | ||||||||||||||||||||
100 | Delete Collection Snapshot | GET /solr/admin/collections?action=DELETESNAPSHOT | DELETE /api/collections/collName/snapshots/snapshotName | DELETE /api/collections/collName/snapshots/snapshotName | CollectionsHandler | DeleteCollectionSnapshotAPI | TRUE | TRUE | TRUE | TRUE | SOLR-16468 | John Durham |