ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAF
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 Namev1 Examplev2 Example (Current)v2 Example (Proposed)RequestHandlerv2 Apiv2 Exists?v2 REST-ful?v2 JAX-RS?v2 SolrJ Coverage?Standalone OnlyJIRA
Questions/Notes
12
List ClusterPropsGET /api/cluster/propertiesGET /api/cluster/propertiesClusterPropTRUETRUETRUETRUESOLR-16390
13
Create ClusterPropGET /solr/admin/collections?action=CLUSTERPROP&name=propName&val=propValPUT /api/cluster/properties/propName {"value": "propVal"}PUT /api/cluster/properties/propName {"value": "propVal"}CollectionsHandlerClusterPropTRUETRUETRUETRUESOLR-16390
V2 same as update-clusterprop
14
Fetch Single ClusterPropGET /api/cluster/properties/propNameGET /api/cluster/properties/propNameClusterPropTRUETRUETRUETRUESOLR-16390
15
Update ClusterProp (Single, not nested)GET /solr/admin/collections?action=CLUSTERPROP&name=propName&val=propValPUT /api/cluster/properties/propName {"value": "propVal"}PUT /api/cluster/properties/propName {"value": "propVal"}CollectionsHandlerClusterPropTRUETRUETRUETRUESOLR-16390
V2 same as create-clusterprop
16
Update ClusterProp (Bulk, nested)GET /solr/admin/collections?action=CLUSTERPROP&name=propName&val=propValPUT /api/cluster/properties {...}PUT /api/cluster/properties {...}ClusterPropTRUETRUETRUETRUESOLR-16390
It looks like it updates /clusterprops.json in ZK
17
Delete ClusterPropGET /solr/admin/collections?action=CLUSTERPROP&name=propNameDELETE /api/cluster/properties/propNameDELETE /api/cluster/properties/propNameCollectionsHandlerClusterPropTRUETRUETRUETRUESOLR-16390
18
19
List CollectionsGET /solr/admin/collections?action=LISTGET /api/collections and GET /api/clusterGET /api/collectionsCollectionsHandlerCollectionsAPITRUETRUETRUETRUESOLR-16391
20
Create CollectionGET /solr/admin/collections?action=CREATEPOST /api/collections {...}POST /api/collections {...}CollectionsHandlerCreateCollectionAPITRUETRUETRUETRUESOLR-16391
21
Fetch Single Collection StatusGET /solr/admin/collections?action=CLUSTERSTATUS&collection=collNameGET /api/collections/collNameGET /api/collections/collNameCollectionsHandlerCollectionStatusAPITRUETRUETRUETRUESOLR-16391
22
Fetch Single Collection Status (detailed)GET /solr/admin/collections?action=COLSTATUSGET /api/collections/collName?details=specificFlagsGET /api/collections/collName?details=specificFlagsCollectionsHandlerTRUETRUETRUETRUESOLR-16391
details' param here would take the flag values currently accepted by COLSTATUS (coreInfo, segments, fieldInfo, etc.)
23
Update CollectionGET /solr/admin/collections?action=MODIFYCOLLECTIONPOST /api/collections/collName {"modify": {...}}PUT /api/collections/collName {"propName": "newValue"}CollectionsHandlerModifyCollectionAPITRUEFALSEFALSEFALSESOLR-16391
24
Delete CollectionGET /solr/admin/collections?action=DELETEDELETE /api/collections/collNameDELETE /api/collections/collNameCollectionsHandlerDeleteCollectionApiTRUETRUETRUETRUESOLR-16372
25
26
List ShardsGET /api/collections/collName/shards
27
Create Shard (from new)GET /solr/admin/collections?action=CREATESHARD&collection=collNamePOST /api/collections/collName/shards {...}POST /api/collections/collName/shards {...}CollectionsHandlerCreateShardAPITRUETRUETRUETRUESOLR-16392
28
Fetch Single ShardGET /api/collections/collName/shards/shard1
29
Delete ShardGET /solr/admin/collections?action=DELETESHARD&collection=collName&shard=shard1DELETE /api/collections/collName/shards/shard1DELETE /api/collections/collName/shards/shard1CollectionsHandlerDeleteShardAPITRUETRUETRUETRUESOLR-16392
30
31
List ReplicasGET /api/collections/collName/shards/shardName/replicas
32
Create ReplicaGET /solr/admin/collections?action=ADDREPLICA&collection=collNamePOST /api/collections/collName/shards/shardName/replicas {...}POST /api/collections/collName/shards/shardName/replicas {...}CollectionsHandlerAddReplicaAPITRUETRUETRUETRUESOLR-16392
33
Fetch Single ReplicaGET /api/collections/collName/shards/shardName/replicas/repName
34
Delete Single Replica (by Name)GET /solr/admin/collections?action=DELETEREPLICA&collection=collName&shard=shard1&replica=repNameDELETE /api/collections/collName/shards/shard1/replicas/repNameDELETE /api/collections/collName/shards/shard1/replicas/repNameCollectionsHandlerDeleteReplicaAPITRUETRUETRUETRUESOLR-16392
35
Delete N Replicas from ShardGET /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=123CollectionsHandlerDeleteReplicaAPITRUETRUETRUETRUESOLR-16392
36
Delete N Replicas from All ShardsGET /solr/admin/collections?action=DELETEREPLICA&collection=collName&count=123PUT /api/collections/collName/scale {"count": 123}PUT /api/collections/collName/scale {"count": 123}CollectionsHandlerDeleteReplicaAPITRUETRUETRUETRUESOLR-16392
Not ideal, eventually fold into MODIFYCOLLECTION?
37
38
List AliasesGET /solr/admin/collections?action=LISTALIASESGET /api/aliasesGET /api/aliasesCollectionsHandlerListAliasesAPITRUETRUETRUETRUESOLR-16393
39
Create AliasGET /solr/admin/collections?action=CREATEALIASPOST /api/aliases {...}POST /api/aliases {...}CollectionsHandlerCreateAliasAPITRUETRUETRUETRUESOLR-16393
40
Fetch Single AliasGET /api/aliases/aliasNameGET /api/aliases/aliasNameListAliasesAPITRUETRUETRUEFALSESOLR-16393
41
Delete AliasGET /solr/admin/collections?action=DELETEALIASDELETE /api/aliases/aliasNameDELETE /api/aliases/aliasNameCollectionsHandlerCollectionsAPITRUETRUETRUETRUESOLR-16393
42
43
List Replica PropsGET /api/collections/collName/shards/shardName/replicas/repName/properties
44
Create Replica PropGET /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"}
CollectionsHandlerAddReplicaPropertyApiTRUETRUETRUEFALSESOLR-16392
45
Fetch Replica PropGET /api/collections/collName/shards/shardName/replicas/repName/properties/propName
46
Delete Replica PropGET /solr/admin/collections?action=DELETEREPLICAPROP&...
DELETE /api/collections/collName/shards/shardName/replicas/replicaName/properties/propName
DELETE /api/collections/collName/shards/shardName/replicas/replicaName/properties/propNameCollectionsHandlerDeleteReplicaPropertyApiTRUETRUETRUETRUESOLR-16392
47
48
List ConfigsetsGET /solr/admin/configs?action=LISTGET /api/configsetsGET /api/configsetsConfigSetsHandlerConfigsetsApiTRUETRUETRUETRUESOLR-16396
49
Create Configset (from Existing)GET /solr/admin/configs?action=CREATEPOST /api/configsets {...}POST /api/configsets {...}ConfigSetsHandlerConfigsetsApiTRUETRUETRUETRUESOLR-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>ConfigSetsHandlerConfigsetsApiTRUETRUETRUETRUESOLR-16396
51
Fetch Single ConfigsetGET /api/configsets/configsetName
52
Fetch Single Configset FileGET /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>ConfigSetsHandlerConfigsetsApiTRUETRUETRUETRUESOLR-16396
54
Delete ConfigsetGET /solr/admin/configs?action=DELETE&name=configsetNameDELETE /api/configsets/configSetNameDELETE /api/configsets/configSetNameConfigSetsHandlerConfigsetsApiTRUETRUETRUETRUESOLR-16396
55
56
List Alias PropGET /api/aliases/aliasName/propertiesGET /api/aliases/aliasName/propertiesAliasPropertiesAPITRUETRUETRUETRUESOLR-16393
57
Create Alias PropGET /solr/admin/collections?action=ALIASPROP&property.propName=propVal
PUT /api/aliases/aliasName/properties/propName {"value": "someVal"}
PUT /api/aliases/aliasName/properties/propName {"value": "someVal"}CollectionsHandlerAliasPropertiesAPITRUETRUETRUETRUESOLR-16393
58
Fetch Single Alias PropGET /api/aliases/aliasName/properties/propNameGET /api/aliases/aliasName/properties/propNameAliasPropertiesAPITRUETRUETRUETRUESOLR-16393
59
Update Alias PropGET /solr/admin/collections?action=ALIASPROP&property.propName=propVal
PUT /api/aliases/aliasName/properties/propName {"value": "someVal"}
PUT /api/aliases/aliasName/properties/propName {"value": "someVal"}CollectionsHandlerAliasPropertiesAPITRUETRUETRUETRUESOLR-16393
60
Delete Alias PropGET /solr/admin/collections?action=ALIASPROP&property.propName=DELETE /api/aliases/aliasName/properties/propNameDELETE /api/aliases/aliasName/properties/propNameCollectionsHandlerAliasPropertiesAPITRUETRUETRUETRUESOLR-16393
61
62
List All BlobsGET /solr/.system/blobGET /api/collections/.system/blobGET /api/collections/.system/blobsBlobHandlerGetBlobInfoApiTRUEFALSEFALSEFALSESOLR-16398
Should we change how wt=filestream is used to distinguish between fetching metadata vs blob data
63
Create Blob VersionPOST /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>BlobHandlerUploadBlobApiTRUEFALSEFALSEFALSESOLR-16398
64
Get Single BlobGET /solr/.system/blob/someBlobNameGET /api/collections/.system/blob/blobNameGET /api/collections/.system/blobs/blobNameBlobHandlerGetBlobInfoApiTRUEFALSEFALSEFALSEN/A
65
Get Single Versioned BlobGET /solr/.system/blob/someBlobName/123GET /api/collections/.system/blob/blobName/123GET /api/collections/.system/blobs/blobName?version=123BlobHandlerGetBlobInfoApiTRUEFALSEFALSEFALSESOLR-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 PropsGET /api/collections/collName/properties
68
Create Collection PropGET /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"}CollectionsHandlerCollectionPropertyAPITRUETRUETRUETRUESOLR-16391
69
Fetch Single Collection PropGET /api/collections/collName/properties/propName
70
Delete Collection PropGET /solr/admin/collections?action=COLLECTIONPROP&propertyName=asdfDELETE /api/collections/collName/properties/propNameDELETE /api/collections/collName/properties/propNameCollectionsHandlerCollectionPropertyAPITRUETRUETRUETRUESOLR-16391
71
72
Create CoreGET /solr/admin/cores?action=CREATEPOST /api/cores {...}POST /api/cores {...}CoreAdminHandlerCreateCoreAPITRUETRUETRUETRUESOLR-16391
73
Fetch Status (Single Core)GET /solr/admin/cores?action=STATUS&core=coreNameGET /api/cores/coreNameGET /api/cores/coreNameCoreAdminHandlerSingleCoreStatusAPITRUETRUETRUETRUEN/A
74
Fetch Status (All Cores)GET /solr/admin/cores?action=STATUSGET /api/coresGET /api/coresCoreAdminHandlerAllCoreStatusAPITRUETRUETRUETRUE
75
76
List Log LevelsGET /solr/admin/info/loggingGET /api/node/logging/levelsGET /api/node/logging/levelsLoggingHandlerNodeLoggingAPITRUETRUETRUETRUESOLR-16458Calvince Otieno
77
Retrieve LogsGET /solr/admin/info/logging?since=123456789GET /api/node/logging/messages?since=123456789GET /api/node/logging/messages?since=123456789LoggingHandlerNodeLoggingAPITRUETRUETRUETRUESOLR-16458
78
Fetch Single Log LevelGET /api/node/logging/levels/className
79
Update Log LevelsGET /solr/admin/info/logging?set=className:WARNPUT /api/node/logging/levels [{"className": "WARN"}]PUT /api/node/logging/levels [{"className": "WARN"}]LoggingHandlerNodeLoggingAPITRUETRUETRUETRUESOLR-16458
80
81
Set LogWatcher ThresholdGET /solr/admin/info/logging?threshold=WARNPUT /api/node/logging/messages/thresholdPUT /api/node/logging/messages/thresholdLoggingHandlerNodeLoggingAPITRUETRUETRUETRUESOLR-16458
82
List Roles for NodeGET /api/cluster/node-roles/node/nodeNameGET /api/cluster/nodes/nodeName/roles OR GET /api/node-roles?nodeName=someNodeClusterAPITRUEFALSEFALSEFALSESOLR-16458
83
List Nodes with RoleGET /api/cluster/node-roles/role/roleNameGET /api/cluster/roles/roleName OR GET /api/node-roles?role=someRoleNameClusterAPITRUEFALSEFALSEFALSESOLR-16458
84
List all Roles and Associated NodesGET /api/cluster/node-rolesGET /api/node-rolesClusterAPITRUEFALSEFALSEFALSESOLR-16458
85
List Supported/Available Node RolesGET /api/cluster/node-roles/supportedGET /api/node-roles?supported=trueClusterAPITRUEFALSEFALSEFALSESOLR-16458
86
List Nodes with Role in particular ModeGET /api/cluster/node-roles/role/roleName/modeNameGET /api/node-roles?role=someRoleName&mode=someModeClusterAPITRUEFALSEFALSEFALSESOLR-16458
87
Add Role to NodeGET /solr/admin/collections?action=ADDROLEPOST /api/cluster {"add-role": {...}}PUT /api/cluster/nodes/nodeName/roles/roleName TODOCollectionsHandlerClusterAPITRUEFALSEFALSEFALSESOLR-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 NodeGET /solr/admin/collections?action=REMOVEROLEPOST /api/cluster {"remove-role": {...}}DELETE /api/cluster/nodes/nodeName/roles/roleName TODOCollectionsHandlerClusterAPITRUEFALSEFALSEFALSESOLR-16458
89
90
List Collection BackupsGET /solr/admin/collections?action=LISTBACKUPGET /api/backups/backupName/versionsGET /api/backups/backupName/versionsCollectionsHandlerCollectionBackupsAPITRUETRUETRUETRUESOLR-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 BackupGET /solr/admin/collections?action=BACKUP
POST /api/backups/backupName/collections/collectionName/versions
POST /api/backups/backupName/collections/collectionName/versionsCollectionsHandlerCollectionsAPITRUETRUETRUETRUESOLR-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=DELETEBACKUPDELETE /api/backups/backupName/versions/2DELETE /api/backups/backupName/versions/2CollectionsHandlerCollectionBackupsAPITRUETRUETRUETRUESOLR-16394
Should we also allow purgeUnused here, or only on /checkpoints
93
Delete All Backups Except Most Recent 'N'GET /solr/admin/collections?action=DELETEBACKUPDELETE /api/backups/backupName/versions?retainLatest=123&...DELETE /api/backups/backupName/versions?retainLatest=123&...CollectionsHandlerCollectionBackupsAPITRUETRUETRUETRUESOLR-16394
94
Delete Backups (unused files)GET /solr/admin/collections?action=DELETEBACKUPPUT /api/backups/backupName/purgeUnusedPUT /api/backups/backupName/purgeUnusedCollectionsHandlerCollectionBackupsAPITRUETRUETRUETRUESOLR-16394
Should this GC API be under a "commands" section in v2
95
96
Create Core BackupGET /solr/admin/cores?action=BACKUPCORE&core=coreNamePOST /api/cores/backups {...}POST /api/cores/backups {...}CoreAdminHandlerBackupCoreAPITRUETRUETRUETRUESOLR-16490Sanjay Dutt
97
98
List Collection SnapshotsGET /solr/admin/collections?action=LISTSNAPSHOTSGET /api/collections/collName/snapshotsGET /api/collections/collName/snapshotsCollectionsHandlerListCollectionSnapshotsAPITRUETRUETRUETRUESOLR-16468John Durham
99
Create Collection SnapshotGET /solr/admin/collections?action=CREATESNAPSHOTPOST /api/collections/collName/snapshots/snapshotNamePOST /api/collections/collName/snapshots/snapshotNameCollectionsHandlerCreateCollectionSnapshotAPITRUETRUETRUETRUESOLR-16468John Durham
100
Delete Collection SnapshotGET /solr/admin/collections?action=DELETESNAPSHOTDELETE /api/collections/collName/snapshots/snapshotNameDELETE /api/collections/collName/snapshots/snapshotNameCollectionsHandlerDeleteCollectionSnapshotAPITRUETRUETRUETRUESOLR-16468John Durham