Background
The MediaWiki REST API currently reflects both APIs native to MediaWiki Core and those that are defined through extensions. Documentation is reflected as a single list, and ownership over specific components can be muddy in terms of API and spec versioning.
By breaking extensions into API modules, we are able to create clear boundaries between API functional areas, which will result in clearer ownership and management of related endpoints.
Conditions of acceptance
- Complete an API Maintainer's list: https://docs.google.com/spreadsheets/d/1-fcgVYgM0elpTizqN93VEsBINgcs88Gp_6Kw-wrczIs/edit?gid=0#gid=0
- Create at least one or more extension API modules
- Identify simple/commonly used APIs based on Wikimedia configurations
- Assume public modules if not otherwise indicated
- Consult with owning teams to determine if there is need for private or internal modules --> Halley will facilitate this
- Create a repeatable technical solution that makes it easy to create a module when registering a new extension API
- Simplify deployment processes
- Investigate better encapsulation/abstraction options
- [Stretch]: Create an integrated linting PoC
- Potential option: Create a web form/toolforge tool for creating module definition JSON files (possibly a new feature in the linting tool?)
- Document how to create and maintain a module for future API authors & owners
- Document guidelines for module versioning
- [Stretch/Optional] Reroute/redirect non-module friendly paths to versioned modules
- Mark non-versioned endpoints as deprecated, along with redirect