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 0.5: History for iOS Client
The iOS client is going to include some history management UI, and we'd like to support that with the REST API in MW. So these history use cases, previously in Epic 3, are hoisted earlier to meet the iOS team's release targets.

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