In order to support the Parsoid HTTP service REST API, we need to have infrastructure within MediaWiki that allows us to create REST APIs.
|Open||EvanProdromou||T221158 Parsoid REST API in PHP|
|Open||EvanProdromou||T221737 REST API Infrastructure in MediaWiki|
|Open||tstarling||T219959 REST API Router|
|Resolved||tstarling||T219960 REST API Handler Interface|
|Resolved||EvanProdromou||T221177 REST route handler extension interface RFC|
|Resolved||tstarling||T219961 Sample REST API Handler|
|Open||Tgr||T223247 Unit or integration test for Sample REST API Handler|
|Open||None||T223239 REST API Parameter Validation|
|Resolved||Tgr||T223240 REST API ResponseFactory|
|Open||EvanProdromou||T221161 API keys|
|Open||EvanProdromou||T221162 REST API Rate Limiting|
|Open||EvanProdromou||T221741 Define REST API interface in MediaWiki using OpenAPI 3.0 definition|
|Open||EvanProdromou||T221742 API Sandbox in MediaWiki|
|Open||EvanProdromou||T221166 Session authentication in Parsoid REST API|
|Open||None||T224375 JSON validation in REST API|
|Open||None||T225761 Document the REST API on mediawiki.org|
|Open||tstarling||T226598 REST API i18n|
Some potential subtasks:
- make a public project page (blast from the past!)
- make some kind of outreach strategy (make announcement, tell interested people to work with us on Phabricator, have some idea on what the checkpoints are at which we want to gather more feedback)
- decide on the entry point
- extension interface (the handler interface is a big part of that, but also, what do you put in extension.json? How would the equivalent of, say, the APIQuerySiteInfoGeneralInfo hook look in a REST framework?)
- logging and monitoring
- testability (writing unit tests for the action API is not fun; for the new API we should design for ease of API module unit tests from day one)
- developer and user documentation
- do we want to investigate async PHP (a ReactPHP-like API endpoint) at some point?
- do we want to provide a client library in MediaWiki (something like mw.api)?
Btw do we want to split this into a generic epic about the planned MediaWiki REST API, and an MVP specifically for Parsoid? It would make it easier to see which tasks are blockers for the Parsoid project.
Am I right in assuming the idea is that integrating Parsoid functionality into the MW API is not enough, we need to maintain compatibility with existing Parsoid clients and therefore MW Core needs to add support for REST APIs?