**Story**
"As a Contributor, I want to get a list of revisions that I have made, to get a sense of the scale and importance of my own work."
A rough equivalent of the [[ https://en.wikipedia.org/wiki/Special:Contributions/EProdromou_(WMF) | user contributions ]] page in REST form. Compare T235073, which gets the contributions for //other// users.
**Done Criteria**
[ ] Returns a list of N page revisions by the current logged-in user
[ ] There is a stable chronological order allowing the client to request the next or previous segments such that the client will eventually receive all contributions
[ ] Returned list must segmented based on a LIMIT of 20 items
[ ] Response object must be JSON
[ ] Response object must contain the following fields:
- older: full link to API endpoint for the next older segment of results (usually the same endpoint plus "older_than" with the last revision in this segment). May be excluded if there are no known older revisions.Response object must be JSON
- newer: full link to API endpoint for the next newer segment of results (usually the same endpoint plus "newer_than" parameter for first - revision in this segment). May be excluded if there are no known older revisions.
- latest: full link to API endpoint for the latest values, usually just this endpoint with no parametersResponse object must contain the following fields:
- revisions: an array of 0 to segment_size revision objects, each with the following information:
- id: revision id
- comment: edit summary of the change, provided by the user
- timestamp: date of change, YYYY-MM-DDTHH:MM:SSZ
- delta: +/- count of bytes changed from previous - size: count of bytes
- page: Page that was modified, JSON object with the following properties: {id, key, title} (see the schema for details)
[ ] There is a stable chronological order among the revisions
[ ] the client should be able to request the next or previous segments such that the client will eventually receive all contributions. for this purpose, the response should contain the following fields:
- size: count of bytesolder: full link to API endpoint for the next older segment of results (usually the same endpoint plus "older_than" with the last revision in this segment). May be excluded if there are no known older revisions.
- page: Page that was modified, JSON object with the following properties: {id, key,newer: full link to API endpoint for the next newer segment of results (usually the same endpoint plus "newer_than" parameter for first - revision in this segment). title} (see the schema for details)May be excluded if there are no known older revisions.
- latest: full link to API endpoint for the latest values, usually just this endpoint with no parameters
[ ] Each revision should also have the field: delta: +/- count of bytes changed from previous
[ ] Each revision should also have the field: tags: array of Tag objects with [ tag, url ], per schema
**Designs/Interface/Mockups**
GET /me/contributions?segment=<segment-marker>&segment_size=<segment_size>
Segmented contribution history by user with name `name`. (I'm calling it "segmented" instead of "paged" so we don't all go crazy.)
segment_marker: ( "before" | "after" ) "|" timestamp "|" revision_id
segment_size: size of the segment to get; minimum is 1, default is 20, and maximum 100
Request body: none
Notable request headers: none
Status:
200 - OK
401 - not authenticated
400 - invalid segment marker or segment size is out of bounds
Notable response headers: none
Body: JSON, an object with the following fields:
older: full link to API endpoint for the next older segment of results. oldest segment will have this field null. all other segments will have a value.
newer: full link to API endpoint for the next newer segment of results. This will never be null (to account for edits occurring after we get results)
latest: full link to API endpoint for the latest values, usually just this endpoint with no parameters
revisions: an array of 0 to 20 revision objects, in reverse chronological order, each with the following information:
id: revision id
comment: edit summary of the change, provided by the user
timestamp: date of change, YYYY-MM-DDTHH:MM:SSZ
delta: +/- count of bogobytes changed from previous
size: count of bogobytes
page: Page that was modified, JSON object with the following properties: {id, key, title} (see [[ https://www.mediawiki.org/wiki/Core_Platform_Team/Initiatives/Core_REST_API_in_MediaWiki/Schema | schema ]] for details)
tags: array of Tag objects (see schema)
**Related Stories**
"As a Reader, I want to get a list of revisions of pages a Contributor has created or updated, because I want to read more of what they have written."
"As a Contributor, I want to get a list of revisions of pages another Contributor has created or updated, because I want to contribute to pages that are similar to ones that I've collaborated on with that person."
"As a Curator, I want to get a list of revisions of pages a Contributor has created or updated, because they may have made a repeated mistake on multiple pages."