The /page/title/{title} endpoint provides metadata about the pages.
Right now it doesn't even use the page_revisions table in the storage, because we didn't do rerenders on global user blocks (see T120212) so to avoid exposing potentially private data in usernames we rely on MediaWiki API access checks. The page_revisions table is used for access checks for other endpoints, but that might change in the future with the introduction of the revision table.
The endpoint is used though for updating the revision table state for page deletes, moves and undeletes, but we can as well notify RESTBase about those by requesting the HTML with some special header or allow ChangeProp to make requests to /sys hierarchy and remove the public access to the endpoint.
We are unaware of any major user of the endpoint inside or outside of the WMF, and according to monitoring over the last 3 months the external request rate was 0 except one burst of requests probably made by some bot.
The response schema specified in the documentation is the following:
{
"count": 0,
"items": {
"title": "string",
"page_id": 0,
"rev": 0,
"tid": "string",
"latest_rev": 0,
"latest_tid": "string",
"nextrev_tid": "string",
"comment": "string",
"renames": [
"string"
],
"restrictions": [
"string"
],
"tags": [
"string"
],
"user_id": 0,
"user_text": "string",
"timestamp": "2017-02-14T18:35:28.602Z",
"redirect": true
}
}and it's supported only partially, for example we don't really expose the latest_rev field and a couple others are not supported either.
As a part of releasing REST API 1.0 we need to decide what to do with the endpoint. Options are:
- Add proper support for all specified fields or remove unsupported fields from the schema, mark endpoint stable.
- Delete the endpoint. In case we delete it the /page/revision/{revision} will go away too together with a listing of revisions at /page/revision/. The listings have been proven impossible to support with Cassandra, and the /revision/{revision} endpoint is practically the same as the /title/{title} endpoint. Also, it's the only one using secondary indexes in our system, so we might be able to simplify the system a bit and remove the usage of secondary indexes - less key spaces in Cassandra, less overall load on updating, less range queries.
I would personally vote for solution 2 - delete unused stuff. @GWicke @mobrovac @Eevans what's your vote on this?