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: Curation

 * As a Curator, I want to get a list of pages that link to a page, so I can see how they refer to the page, or change their links if I am going to delete the page.
 * As an Administrator, I want to protect a page, to keep untrusted users from modifying the page.
 * As an Administrator, I want to protect a media file, to keep untrusted users from modifying the file.
 * As a Curator, I want to undelete a page, if the page was deleted by mistake.
 * As an Administrator, I want to mark a version of a page as patrolled, to let other Administrators know that they don’t have to review that version of the page.

Epic 5: Administration

 * As an Administrator, I want to get a list of groups that a user is in, to understand their current level of access.
 * As an Administrator, I want to add a user to a group, to give them extra access.
 * As an Administrator, I want to remove a user from a group, to revoke their access.
 * As an Administrator, I want to block a user from making any changes to the project, so that they don’t cause any damage to the content or community.
 * As an Administrator, I want to block an IP address or IP subnet from making any changes to the project, so that they don’t cause any damage to the content or community.