Core Platform Team/Initiative/Core REST API in MediaWiki/Epics, User Stories, and Requirements

Personae
Note that these personae don’t map exactly to user groups or roles within MediaWiki.


 * User - Any person with a registered account in the project
 * Reader - A person who reading content on the project
 * Contributor - A person who adds new information to the project
 * Curator - A person who edits and organizes existing information in the project
 * Administrator - A person who manages users, groups, roles, and monitors bad behaviour

Epic 1: Minimal client
At the end of this epic, the API should be sufficiently functional to support the needs of a minimal Web or mobile wiki client.

Epic 2: Media management
At the end of this epic, the API should be sufficient to handle basic media management tasks.

Epic 3: History
This epic will give us the tools necessary to handle historical versions of pages and files in the wiki.

Epic 4: Content management
At the end of this epic, we should have enough functionality to support the main efforts of curators.

Epic 5: User management
At the end of this epic, we should have the basic functionality that admins use for managing contributors to a wiki project.

Non-functional requirements

 * Secure HTTP-based
 * Positional arguments (e.g. /article/12331/history)
 * OAuth 2.0 authentication with API keys
 * Cache friendly (Last-Modified, Expires, Etag, If-Modified-Since, If-No-Match)
 * Rate-limiting
 * Global unauthenticated
 * Per API key, unauthenticated
 * Per API key/authenticated user
 * Explicit versioning
 * Cross-wiki API calls