diff --git a/data/api/branches/create-repository-branch.json b/data/api/branches/create-repository-branch.json
new file mode 100644
--- /dev/null
+++ b/data/api/branches/create-repository-branch.json
@@ -0,0 +1,25 @@
+{
+  "commit": {
+    "author_email": "john@example.com",
+    "author_name": "John Smith",
+    "authored_date": "2012-06-27T05:51:39-07:00",
+    "committed_date": "2012-06-28T03:44:20-07:00",
+    "committer_email": "john@example.com",
+    "committer_name": "John Smith",
+    "id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
+    "short_id": "7b5c3cc",
+    "title": "add projects API",
+    "message": "add projects API",
+    "parent_ids": [
+      "4ad91d3c1144c406e50c7b33bae684bd6837faf8"
+    ]
+  },
+  "name": "newbranch",
+  "merged": false,
+  "protected": false,
+  "default": false,
+  "developers_can_push": false,
+  "developers_can_merge": false,
+  "can_push": true,
+  "web_url": "https://gitlab.example.com/my-group/my-project/-/tree/newbranch"
+}
diff --git a/data/api/branches/get-single-repository-branch.json b/data/api/branches/get-single-repository-branch.json
new file mode 100644
--- /dev/null
+++ b/data/api/branches/get-single-repository-branch.json
@@ -0,0 +1,25 @@
+{
+  "name": "master",
+  "merged": false,
+  "protected": true,
+  "default": true,
+  "developers_can_push": false,
+  "developers_can_merge": false,
+  "can_push": true,
+  "web_url": "https://gitlab.example.com/my-group/my-project/-/tree/master",
+  "commit": {
+    "author_email": "john@example.com",
+    "author_name": "John Smith",
+    "authored_date": "2012-06-27T05:51:39-07:00",
+    "committed_date": "2012-06-28T03:44:20-07:00",
+    "committer_email": "john@example.com",
+    "committer_name": "John Smith",
+    "id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
+    "short_id": "7b5c3cc",
+    "title": "add projects API",
+    "message": "add projects API",
+    "parent_ids": [
+      "4ad91d3c1144c406e50c7b33bae684bd6837faf8"
+    ]
+  }
+}
diff --git a/data/api/branches/list-repository-branches.json b/data/api/branches/list-repository-branches.json
new file mode 100644
--- /dev/null
+++ b/data/api/branches/list-repository-branches.json
@@ -0,0 +1,27 @@
+[
+  {
+    "name": "master",
+    "merged": false,
+    "protected": true,
+    "default": true,
+    "developers_can_push": false,
+    "developers_can_merge": false,
+    "can_push": true,
+    "web_url": "https://gitlab.example.com/my-group/my-project/-/tree/master",
+    "commit": {
+      "author_email": "john@example.com",
+      "author_name": "John Smith",
+      "authored_date": "2012-06-27T05:51:39-07:00",
+      "committed_date": "2012-06-28T03:44:20-07:00",
+      "committer_email": "john@example.com",
+      "committer_name": "John Smith",
+      "id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
+      "short_id": "7b5c3cc",
+      "title": "add projects API",
+      "message": "add projects API",
+      "parent_ids": [
+        "4ad91d3c1144c406e50c7b33bae684bd6837faf8"
+      ]
+    }
+  }
+]
diff --git a/data/api/commits/cherry-pick-commit.json b/data/api/commits/cherry-pick-commit.json
new file mode 100644
--- /dev/null
+++ b/data/api/commits/cherry-pick-commit.json
@@ -0,0 +1,17 @@
+{
+  "id": "8b090c1b79a14f2bd9e8a738f717824ff53aebad",
+  "short_id": "8b090c1b",
+  "author_name": "Example User",
+  "author_email": "user@example.com",
+  "authored_date": "2016-12-12T20:10:39.000+01:00",
+  "created_at": "2016-12-12T20:10:39.000+01:00",
+  "committer_name": "Administrator",
+  "committer_email": "admin@example.com",
+  "committed_date": "2016-12-12T20:10:39.000+01:00",
+  "title": "Feature added",
+  "message": "Feature added\n\nSigned-off-by: Example User <user@example.com>\n",
+  "parent_ids": [
+    "a738f717824ff53aebad8b090c1b79a14f2bd9e8"
+  ],
+  "web_url": "https://gitlab.example.com/thedude/gitlab-foss/-/commit/8b090c1b79a14f2bd9e8a738f717824ff53aebad"
+}
diff --git a/data/api/commits/create-commit-multiple-files-commits.json b/data/api/commits/create-commit-multiple-files-commits.json
new file mode 100644
--- /dev/null
+++ b/data/api/commits/create-commit-multiple-files-commits.json
@@ -0,0 +1,23 @@
+{
+  "id": "ed899a2f4b50b4370feeea94676502b42383c746",
+  "short_id": "ed899a2f4b5",
+  "title": "some commit message",
+  "author_name": "Example User",
+  "author_email": "user@example.com",
+  "committer_name": "Example User",
+  "committer_email": "user@example.com",
+  "created_at": "2016-09-20T09:26:24.000-07:00",
+  "message": "some commit message",
+  "parent_ids": [
+    "ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
+  ],
+  "committed_date": "2016-09-20T09:26:24.000-07:00",
+  "authored_date": "2016-09-20T09:26:24.000-07:00",
+  "stats": {
+    "additions": 2,
+    "deletions": 2,
+    "total": 4
+  },
+  "status": null,
+  "web_url": "https://gitlab.example.com/thedude/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746"
+}
diff --git a/data/api/commits/get-comments-of-commit.json b/data/api/commits/get-comments-of-commit.json
new file mode 100644
--- /dev/null
+++ b/data/api/commits/get-comments-of-commit.json
@@ -0,0 +1,13 @@
+[
+  {
+    "note": "this code is really nice",
+    "author": {
+      "id": 11,
+      "username": "admin",
+      "email": "admin@local.host",
+      "name": "Administrator",
+      "state": "active",
+      "created_at": "2014-03-06T08:17:35Z"
+    }
+  }
+]
diff --git a/data/api/commits/get-diff-of-commit.json b/data/api/commits/get-diff-of-commit.json
new file mode 100644
--- /dev/null
+++ b/data/api/commits/get-diff-of-commit.json
@@ -0,0 +1,12 @@
+[
+  {
+    "diff": "--- a/doc/update/5.4-to-6.0.md\n+++ b/doc/update/5.4-to-6.0.md\n@@ -71,6 +71,8 @@\n sudo -u git -H bundle exec rake migrate_keys RAILS_ENV=production\n sudo -u git -H bundle exec rake migrate_inline_notes RAILS_ENV=production\n \n+sudo -u git -H bundle exec rake gitlab:assets:compile RAILS_ENV=production\n+\n ```\n \n ### 6. Update config files",
+    "new_path": "doc/update/5.4-to-6.0.md",
+    "old_path": "doc/update/5.4-to-6.0.md",
+    "a_mode": null,
+    "b_mode": "100644",
+    "new_file": false,
+    "renamed_file": false,
+    "deleted_file": false
+  }
+]
diff --git a/data/api/commits/list-repository-commits.json b/data/api/commits/list-repository-commits.json
new file mode 100644
--- /dev/null
+++ b/data/api/commits/list-repository-commits.json
@@ -0,0 +1,34 @@
+[
+  {
+    "id": "ed899a2f4b50b4370feeea94676502b42383c746",
+    "short_id": "ed899a2f4b5",
+    "title": "Replace sanitize with escape once",
+    "author_name": "Example User",
+    "author_email": "user@example.com",
+    "authored_date": "2012-09-20T11:50:22+03:00",
+    "committer_name": "Administrator",
+    "committer_email": "admin@example.com",
+    "committed_date": "2012-09-20T11:50:22+03:00",
+    "created_at": "2012-09-20T11:50:22+03:00",
+    "message": "Replace sanitize with escape once",
+    "parent_ids": [
+      "6104942438c14ec7bd21c6cd5bd995272b3faff6"
+    ],
+    "web_url": "https://gitlab.example.com/thedude/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746"
+  },
+  {
+    "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
+    "short_id": "6104942438c",
+    "title": "Sanitize for network graph",
+    "author_name": "randx",
+    "author_email": "user@example.com",
+    "committer_name": "ExampleName",
+    "committer_email": "user@example.com",
+    "created_at": "2012-09-20T09:06:12+03:00",
+    "message": "Sanitize for network graph",
+    "parent_ids": [
+      "ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
+    ],
+    "web_url": "https://gitlab.example.com/thedude/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746"
+  }
+]
diff --git a/data/api/commits/revert-commit.json b/data/api/commits/revert-commit.json
new file mode 100644
--- /dev/null
+++ b/data/api/commits/revert-commit.json
@@ -0,0 +1,15 @@
+{
+  "id":"8b090c1b79a14f2bd9e8a738f717824ff53aebad",
+  "short_id": "8b090c1b",
+  "title":"Revert \"Feature added\"",
+  "created_at":"2018-11-08T15:55:26.000Z",
+  "parent_ids":["a738f717824ff53aebad8b090c1b79a14f2bd9e8"],
+  "message":"Revert \"Feature added\"\n\nThis reverts commit a738f717824ff53aebad8b090c1b79a14f2bd9e8",
+  "author_name":"Administrator",
+  "author_email":"admin@example.com",
+  "authored_date":"2018-11-08T15:55:26.000Z",
+  "committer_name":"Administrator",
+  "committer_email":"admin@example.com",
+  "committed_date":"2018-11-08T15:55:26.000Z",
+  "web_url": "https://gitlab.example.com/thedude/gitlab-foss/-/commit/8b090c1b79a14f2bd9e8a738f717824ff53aebad"
+}
diff --git a/data/api/discussions/list-group-epic-discussion-items.json b/data/api/discussions/list-group-epic-discussion-items.json
new file mode 100644
--- /dev/null
+++ b/data/api/discussions/list-group-epic-discussion-items.json
@@ -0,0 +1,77 @@
+[
+  {
+    "id": "6a9c1750b37d513a43987b574953fceb50b03ce7",
+    "individual_note": false,
+    "notes": [
+      {
+        "id": 1126,
+        "type": "DiscussionNote",
+        "body": "discussion text",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-03T21:54:39.668Z",
+        "updated_at": "2018-03-03T21:54:39.668Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Epic",
+        "noteable_iid": null,
+        "resolvable": false
+      },
+      {
+        "id": 1129,
+        "type": "DiscussionNote",
+        "body": "reply to the discussion",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-04T13:38:02.127Z",
+        "updated_at": "2018-03-04T13:38:02.127Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Epic",
+        "noteable_iid": null,
+        "resolvable": false
+      }
+    ]
+  },
+  {
+    "id": "87805b7c09016a7058e91bdbe7b29d1f284a39e6",
+    "individual_note": true,
+    "notes": [
+      {
+        "id": 1128,
+        "type": null,
+        "body": "a single comment",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-04T09:17:22.52Z",
+        "updated_at": "2018-03-04T09:17:22.52Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Epic",
+        "noteable_iid": null,
+        "resolvable": false
+      }
+    ]
+  }
+]
diff --git a/data/api/discussions/list-project-commit-discussion-items.json b/data/api/discussions/list-project-commit-discussion-items.json
new file mode 100644
--- /dev/null
+++ b/data/api/discussions/list-project-commit-discussion-items.json
@@ -0,0 +1,77 @@
+[
+  {
+    "id": "6a9c1750b37d513a43987b574953fceb50b03ce7",
+    "individual_note": false,
+    "notes": [
+      {
+        "id": 1126,
+        "type": "DiscussionNote",
+        "body": "discussion text",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-03T21:54:39.668Z",
+        "updated_at": "2018-03-03T21:54:39.668Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Commit",
+        "noteable_iid": null,
+        "resolvable": false
+      },
+      {
+        "id": 1129,
+        "type": "DiscussionNote",
+        "body": "reply to the discussion",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-04T13:38:02.127Z",
+        "updated_at": "2018-03-04T13:38:02.127Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Commit",
+        "noteable_iid": null,
+        "resolvable": false
+      }
+    ]
+  },
+  {
+    "id": "87805b7c09016a7058e91bdbe7b29d1f284a39e6",
+    "individual_note": true,
+    "notes": [
+      {
+        "id": 1128,
+        "type": null,
+        "body": "a single comment",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-04T09:17:22.52Z",
+        "updated_at": "2018-03-04T09:17:22.52Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Commit",
+        "noteable_iid": null,
+        "resolvable": false
+      }
+    ]
+  }
+]
diff --git a/data/api/discussions/list-project-discussion-items.json b/data/api/discussions/list-project-discussion-items.json
new file mode 100644
--- /dev/null
+++ b/data/api/discussions/list-project-discussion-items.json
@@ -0,0 +1,76 @@
+[
+  {
+    "id": "6a9c1750b37d513a43987b574953fceb50b03ce7",
+    "individual_note": false,
+    "notes": [
+      {
+        "id": 1126,
+        "type": "DiscussionNote",
+        "body": "discussion text",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-03T21:54:39.668Z",
+        "updated_at": "2018-03-03T21:54:39.668Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Issue",
+        "noteable_iid": null
+      },
+      {
+        "id": 1129,
+        "type": "DiscussionNote",
+        "body": "reply to the discussion",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-04T13:38:02.127Z",
+        "updated_at": "2018-03-04T13:38:02.127Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Issue",
+        "noteable_iid": null,
+        "resolvable": false
+      }
+    ]
+  },
+  {
+    "id": "87805b7c09016a7058e91bdbe7b29d1f284a39e6",
+    "individual_note": true,
+    "notes": [
+      {
+        "id": 1128,
+        "type": null,
+        "body": "a single comment",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-04T09:17:22.52Z",
+        "updated_at": "2018-03-04T09:17:22.52Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Issue",
+        "noteable_iid": null,
+        "resolvable": false
+      }
+    ]
+  }
+]
diff --git a/data/api/discussions/list-project-merge-request-discussion-items.json b/data/api/discussions/list-project-merge-request-discussion-items.json
new file mode 100644
--- /dev/null
+++ b/data/api/discussions/list-project-merge-request-discussion-items.json
@@ -0,0 +1,84 @@
+[
+  {
+    "id": "6a9c1750b37d513a43987b574953fceb50b03ce7",
+    "individual_note": false,
+    "notes": [
+      {
+        "id": 1126,
+        "type": "DiscussionNote",
+        "body": "discussion text",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-03T21:54:39.668Z",
+        "updated_at": "2018-03-03T21:54:39.668Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Merge request",
+        "noteable_iid": null,
+        "resolved": false,
+        "resolvable": true,
+        "resolved_by": null,
+        "resolved_at": null
+      },
+      {
+        "id": 1129,
+        "type": "DiscussionNote",
+        "body": "reply to the discussion",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-04T13:38:02.127Z",
+        "updated_at": "2018-03-04T13:38:02.127Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Merge request",
+        "noteable_iid": null,
+        "resolved": false,
+        "resolvable": true,
+        "resolved_by": null
+      }
+    ]
+  },
+  {
+    "id": "87805b7c09016a7058e91bdbe7b29d1f284a39e6",
+    "individual_note": true,
+    "notes": [
+      {
+        "id": 1128,
+        "type": null,
+        "body": "a single comment",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-04T09:17:22.52Z",
+        "updated_at": "2018-03-04T09:17:22.52Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Merge request",
+        "noteable_iid": null,
+        "resolved": false,
+        "resolvable": true,
+        "resolved_by": null
+      }
+    ]
+  }
+]
diff --git a/data/api/discussions/list-project-snippet-discussion-items.json b/data/api/discussions/list-project-snippet-discussion-items.json
new file mode 100644
--- /dev/null
+++ b/data/api/discussions/list-project-snippet-discussion-items.json
@@ -0,0 +1,76 @@
+[
+  {
+    "id": "6a9c1750b37d513a43987b574953fceb50b03ce7",
+    "individual_note": false,
+    "notes": [
+      {
+        "id": 1126,
+        "type": "DiscussionNote",
+        "body": "discussion text",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-03T21:54:39.668Z",
+        "updated_at": "2018-03-03T21:54:39.668Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Snippet",
+        "noteable_iid": null
+      },
+      {
+        "id": 1129,
+        "type": "DiscussionNote",
+        "body": "reply to the discussion",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-04T13:38:02.127Z",
+        "updated_at": "2018-03-04T13:38:02.127Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Snippet",
+        "noteable_iid": null,
+        "resolvable": false
+      }
+    ]
+  },
+  {
+    "id": "87805b7c09016a7058e91bdbe7b29d1f284a39e6",
+    "individual_note": true,
+    "notes": [
+      {
+        "id": 1128,
+        "type": null,
+        "body": "a single comment",
+        "attachment": null,
+        "author": {
+          "id": 1,
+          "name": "root",
+          "username": "root",
+          "state": "active",
+          "avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
+          "web_url": "http://localhost:3000/root"
+        },
+        "created_at": "2018-03-04T09:17:22.52Z",
+        "updated_at": "2018-03-04T09:17:22.52Z",
+        "system": false,
+        "noteable_id": 3,
+        "noteable_type": "Snippet",
+        "noteable_iid": null,
+        "resolvable": false
+      }
+    ]
+  }
+]
diff --git a/data/api/events/get-user-contributions-events.json b/data/api/events/get-user-contributions-events.json
new file mode 100644
--- /dev/null
+++ b/data/api/events/get-user-contributions-events.json
@@ -0,0 +1,105 @@
+[
+  {
+    "id": 3,
+    "title": null,
+    "project_id": 15,
+    "action_name": "closed",
+    "target_id": 830,
+    "target_type": "Issue",
+    "author_id": 1,
+    "target_title": "Public project search field",
+    "author": {
+      "name": "Dmitriy Zaporozhets",
+      "username": "root",
+      "id": 1,
+      "state": "active",
+      "avatar_url": "http://localhost:3000/uploads/user/avatar/1/fox_avatar.png",
+      "web_url": "http://localhost:3000/root"
+    },
+    "author_username": "root"
+  },
+  {
+    "id": 4,
+    "title": null,
+    "project_id": 15,
+    "action_name": "pushed",
+    "target_id": null,
+    "target_type": null,
+    "author_id": 1,
+    "author": {
+      "name": "Dmitriy Zaporozhets",
+      "username": "root",
+      "id": 1,
+      "state": "active",
+      "avatar_url": "http://localhost:3000/uploads/user/avatar/1/fox_avatar.png",
+      "web_url": "http://localhost:3000/root"
+    },
+    "author_username": "john",
+    "push_data": {
+      "commit_count": 1,
+      "action": "pushed",
+      "ref_type": "branch",
+      "commit_from": "50d4420237a9de7be1304607147aec22e4a14af7",
+      "commit_to": "c5feabde2d8cd023215af4d2ceeb7a64839fc428",
+      "ref": "master",
+      "commit_title": "Add simple search to projects in public area"
+    },
+    "target_title": null
+  },
+  {
+    "id": 5,
+    "title": null,
+    "project_id": 15,
+    "action_name": "closed",
+    "target_id": 840,
+    "target_type": "Issue",
+    "author_id": 1,
+    "target_title": "Finish & merge Code search PR",
+    "author": {
+      "name": "Dmitriy Zaporozhets",
+      "username": "root",
+      "id": 1,
+      "state": "active",
+      "avatar_url": "http://localhost:3000/uploads/user/avatar/1/fox_avatar.png",
+      "web_url": "http://localhost:3000/root"
+    },
+    "author_username": "root"
+  },
+  {
+    "id": 7,
+    "title": null,
+    "project_id": 15,
+    "action_name": "commented on",
+    "target_id": 1312,
+    "target_type": "Note",
+    "author_id": 1,
+    "target_title": null,
+    "created_at": "2015-12-04T10:33:58.089Z",
+    "note": {
+      "id": 1312,
+      "body": "What an awesome day!",
+      "attachment": null,
+      "author": {
+        "name": "Dmitriy Zaporozhets",
+        "username": "root",
+        "id": 1,
+        "state": "active",
+        "avatar_url": "http://localhost:3000/uploads/user/avatar/1/fox_avatar.png",
+        "web_url": "http://localhost:3000/root"
+      },
+      "created_at": "2015-12-04T10:33:56.698Z",
+      "system": false,
+      "noteable_id": 377,
+      "noteable_type": "Issue"
+    },
+    "author": {
+      "name": "Dmitriy Zaporozhets",
+      "username": "root",
+      "id": 1,
+      "state": "active",
+      "avatar_url": "http://localhost:3000/uploads/user/avatar/1/fox_avatar.png",
+      "web_url": "http://localhost:3000/root"
+    },
+    "author_username": "root"
+  }
+]
diff --git a/data/api/events/list-current-authenticated-users-events.json b/data/api/events/list-current-authenticated-users-events.json
new file mode 100644
--- /dev/null
+++ b/data/api/events/list-current-authenticated-users-events.json
@@ -0,0 +1,42 @@
+[
+  {
+    "id": 1,
+    "title":null,
+    "project_id":1,
+    "action_name":"opened",
+    "target_id":160,
+    "target_type":"Issue",
+    "author_id":25,
+    "target_title":"Qui natus eos odio tempore et quaerat consequuntur ducimus cupiditate quis.",
+    "created_at":"2017-02-09T10:43:19.667Z",
+    "author":{
+      "name":"User 3",
+      "username":"user3",
+      "id":25,
+      "state":"active",
+      "avatar_url":"http://www.gravatar.com/avatar/97d6d9441ff85fdc730e02a6068d267b?s=80\u0026d=identicon",
+      "web_url":"https://gitlab.example.com/user3"
+    },
+    "author_username":"user3"
+  },
+  {
+    "id": 2,
+    "title":null,
+    "project_id":1,
+    "action_name":"opened",
+    "target_id":159,
+    "target_type":"Issue",
+    "author_id":21,
+    "target_title":"Nostrum enim non et sed optio illo deleniti non.",
+    "created_at":"2017-02-09T10:43:19.426Z",
+    "author":{
+      "name":"Test User",
+      "username":"ted",
+      "id":21,
+      "state":"active",
+      "avatar_url":"http://www.gravatar.com/avatar/80fb888c9a48b9a3f87477214acaa63f?s=80\u0026d=identicon",
+      "web_url":"https://gitlab.example.com/ted"
+    },
+    "author_username":"ted"
+  }
+]
diff --git a/data/api/events/list-projects-visible-events.json b/data/api/events/list-projects-visible-events.json
new file mode 100644
--- /dev/null
+++ b/data/api/events/list-projects-visible-events.json
@@ -0,0 +1,84 @@
+[
+  {
+    "id": 8,
+    "title":null,
+    "project_id":1,
+    "action_name":"opened",
+    "target_id":160,
+    "target_iid":160,
+    "target_type":"Issue",
+    "author_id":25,
+    "target_title":"Qui natus eos odio tempore et quaerat consequuntur ducimus cupiditate quis.",
+    "created_at":"2017-02-09T10:43:19.667Z",
+    "author":{
+      "name":"User 3",
+      "username":"user3",
+      "id":25,
+      "state":"active",
+      "avatar_url":"http://www.gravatar.com/avatar/97d6d9441ff85fdc730e02a6068d267b?s=80\u0026d=identicon",
+      "web_url":"https://gitlab.example.com/user3"
+    },
+    "author_username":"user3"
+  },
+  {
+    "id": 9,
+    "title":null,
+    "project_id":1,
+    "action_name":"opened",
+    "target_id":159,
+    "target_iid":159,
+    "target_type":"Issue",
+    "author_id":21,
+    "target_title":"Nostrum enim non et sed optio illo deleniti non.",
+    "created_at":"2017-02-09T10:43:19.426Z",
+    "author":{
+      "name":"Test User",
+      "username":"ted",
+      "id":21,
+      "state":"active",
+      "avatar_url":"http://www.gravatar.com/avatar/80fb888c9a48b9a3f87477214acaa63f?s=80\u0026d=identicon",
+      "web_url":"https://gitlab.example.com/ted"
+    },
+    "author_username":"ted"
+  },
+  {
+    "id": 10,
+    "title": null,
+    "project_id": 1,
+    "action_name": "commented on",
+    "target_id": 1312,
+    "target_iid": 1312,
+    "target_type": "Note",
+    "author_id": 1,
+    "data": null,
+    "target_title": null,
+    "created_at": "2015-12-04T10:33:58.089Z",
+    "note": {
+      "id": 1312,
+      "body": "What an awesome day!",
+      "attachment": null,
+      "author": {
+        "name": "Dmitriy Zaporozhets",
+        "username": "root",
+        "id": 1,
+        "state": "active",
+        "avatar_url": "https://gitlab.example.com/uploads/user/avatar/1/fox_avatar.png",
+        "web_url": "https://gitlab.example.com/root"
+      },
+      "created_at": "2015-12-04T10:33:56.698Z",
+      "system": false,
+      "noteable_id": 377,
+      "noteable_type": "Issue",
+      "noteable_iid": 377
+    },
+    "author": {
+      "name": "Dmitriy Zaporozhets",
+      "username": "root",
+      "id": 1,
+      "state": "active",
+      "avatar_url": "https://gitlab.example.com/uploads/user/avatar/1/fox_avatar.png",
+      "web_url": "https://gitlab.example.com/root"
+    },
+    "author_username": "root"
+  }
+]
diff --git a/data/api/groups/details-of-group-with-projects-false.json b/data/api/groups/details-of-group-with-projects-false.json
new file mode 100644
--- /dev/null
+++ b/data/api/groups/details-of-group-with-projects-false.json
@@ -0,0 +1,14 @@
+{
+  "id": 4,
+  "name": "Twitter",
+  "path": "twitter",
+  "description": "Aliquid qui quis dignissimos distinctio ut commodi voluptas est.",
+  "visibility": "public",
+  "avatar_url": null,
+  "web_url": "https://gitlab.example.com/groups/twitter",
+  "request_access_enabled": false,
+  "full_name": "Twitter",
+  "full_path": "twitter",
+  "file_template_project_id": 1,
+  "parent_id": null
+}
diff --git a/data/api/groups/details-of-group.json b/data/api/groups/details-of-group.json
new file mode 100644
--- /dev/null
+++ b/data/api/groups/details-of-group.json
@@ -0,0 +1,26 @@
+{
+  "id": 4,
+  "name": "Twitter",
+  "path": "twitter",
+  "description": "Aliquid qui quis dignissimos distinctio ut commodi voluptas est.",
+  "visibility": "public",
+  "avatar_url": null,
+  "web_url": "https://gitlab.example.com/groups/twitter",
+  "request_access_enabled": false,
+  "full_name": "Twitter",
+  "full_path": "twitter",
+  "runners_token": "ba324ca7b1c77fc20bb9",
+  "file_template_project_id": 1,
+  "parent_id": null,
+  "created_at": "2020-01-15T12:36:29.59Z",
+  "shared_with_groups": [
+    {
+      "group_id": 28,
+      "group_name": "H5bp",
+      "group_full_path": "h5bp",
+      "group_access_level": 20,
+      "expires_at": null
+    }
+  ],
+  "prevent_sharing_groups_outside_hierarchy": false
+}
diff --git a/data/api/groups/list-group-descendant-groups.json b/data/api/groups/list-group-descendant-groups.json
new file mode 100644
--- /dev/null
+++ b/data/api/groups/list-group-descendant-groups.json
@@ -0,0 +1,52 @@
+[
+  {
+    "id": 2,
+    "name": "Bar Group",
+    "path": "foo/bar",
+    "description": "A subgroup of Foo Group",
+    "visibility": "public",
+    "share_with_group_lock": false,
+    "require_two_factor_authentication": false,
+    "two_factor_grace_period": 48,
+    "project_creation_level": "developer",
+    "auto_devops_enabled": null,
+    "subgroup_creation_level": "owner",
+    "emails_disabled": null,
+    "mentions_disabled": null,
+    "lfs_enabled": true,
+    "default_branch_protection": 2,
+    "avatar_url": "http://gitlab.example.com/uploads/group/avatar/1/bar.jpg",
+    "web_url": "http://gitlab.example.com/groups/foo/bar",
+    "request_access_enabled": false,
+    "full_name": "Bar Group",
+    "full_path": "foo/bar",
+    "file_template_project_id": 1,
+    "parent_id": 123,
+    "created_at": "2020-01-15T12:36:29.59Z"
+  },
+  {
+    "id": 3,
+    "name": "Baz Group",
+    "path": "foo/bar/baz",
+    "description": "A subgroup of Bar Group",
+    "visibility": "public",
+    "share_with_group_lock": false,
+    "require_two_factor_authentication": false,
+    "two_factor_grace_period": 48,
+    "project_creation_level": "developer",
+    "auto_devops_enabled": null,
+    "subgroup_creation_level": "owner",
+    "emails_disabled": null,
+    "mentions_disabled": null,
+    "lfs_enabled": true,
+    "default_branch_protection": 2,
+    "avatar_url": "http://gitlab.example.com/uploads/group/avatar/1/baz.jpg",
+    "web_url": "http://gitlab.example.com/groups/foo/bar/baz",
+    "request_access_enabled": false,
+    "full_name": "Baz Group",
+    "full_path": "foo/bar/baz",
+    "file_template_project_id": 1,
+    "parent_id": 123,
+    "created_at": "2020-01-15T12:36:29.59Z"
+  }
+]
diff --git a/data/api/groups/list-group-projects.json b/data/api/groups/list-group-projects.json
new file mode 100644
--- /dev/null
+++ b/data/api/groups/list-group-projects.json
@@ -0,0 +1,40 @@
+[
+  {
+    "id": 9,
+    "description": "foo",
+    "default_branch": "master",
+    "tag_list": [],
+    "topics": [],
+    "archived": false,
+    "visibility": "internal",
+    "ssh_url_to_repo": "git@gitlab.example.com/html5-boilerplate.git",
+    "http_url_to_repo": "http://gitlab.example.com/h5bp/html5-boilerplate.git",
+    "web_url": "http://gitlab.example.com/h5bp/html5-boilerplate",
+    "name": "Html5 Boilerplate",
+    "name_with_namespace": "Experimental / Html5 Boilerplate",
+    "path": "html5-boilerplate",
+    "path_with_namespace": "h5bp/html5-boilerplate",
+    "issues_enabled": true,
+    "merge_requests_enabled": true,
+    "wiki_enabled": true,
+    "jobs_enabled": true,
+    "snippets_enabled": true,
+    "created_at": "2016-04-05T21:40:50.169Z",
+    "last_activity_at": "2016-04-06T16:52:08.432Z",
+    "shared_runners_enabled": true,
+    "creator_id": 1,
+    "namespace": {
+      "id": 5,
+      "name": "Experimental",
+      "path": "h5bp",
+      "kind": "group"
+    },
+    "avatar_url": null,
+    "star_count": 1,
+    "forks_count": 0,
+    "open_issues_count": 3,
+    "public_jobs": true,
+    "shared_with_groups": [],
+    "request_access_enabled": false
+  }
+]
diff --git a/data/api/groups/list-group-shared-projects.json b/data/api/groups/list-group-shared-projects.json
new file mode 100644
--- /dev/null
+++ b/data/api/groups/list-group-shared-projects.json
@@ -0,0 +1,102 @@
+[
+   {
+      "id":8,
+      "description":"Shared project for Html5 Boilerplate",
+      "name":"Html5 Boilerplate",
+      "name_with_namespace":"H5bp / Html5 Boilerplate",
+      "path":"html5-boilerplate",
+      "path_with_namespace":"h5bp/html5-boilerplate",
+      "created_at":"2020-04-27T06:13:22.642Z",
+      "default_branch":"master",
+      "tag_list":[],
+      "topics":[],
+      "ssh_url_to_repo":"ssh://git@gitlab.com/h5bp/html5-boilerplate.git",
+      "http_url_to_repo":"http://gitlab.com/h5bp/html5-boilerplate.git",
+      "web_url":"http://gitlab.com/h5bp/html5-boilerplate",
+      "readme_url":"http://gitlab.com/h5bp/html5-boilerplate/-/blob/master/README.md",
+      "avatar_url":null,
+      "star_count":0,
+      "forks_count":4,
+      "last_activity_at":"2020-04-27T06:13:22.642Z",
+      "namespace":{
+         "id":28,
+         "name":"H5bp",
+         "path":"h5bp",
+         "kind":"group",
+         "full_path":"h5bp",
+         "parent_id":null,
+         "avatar_url":null,
+         "web_url":"http://gitlab.com/groups/h5bp"
+      },
+      "_links":{
+         "self":"http://gitlab.com/api/v4/projects/8",
+         "issues":"http://gitlab.com/api/v4/projects/8/issues",
+         "merge_requests":"http://gitlab.com/api/v4/projects/8/merge_requests",
+         "repo_branches":"http://gitlab.com/api/v4/projects/8/repository/branches",
+         "labels":"http://gitlab.com/api/v4/projects/8/labels",
+         "events":"http://gitlab.com/api/v4/projects/8/events",
+         "members":"http://gitlab.com/api/v4/projects/8/members"
+      },
+      "empty_repo":false,
+      "archived":false,
+      "visibility":"public",
+      "resolve_outdated_diff_discussions":false,
+      "container_registry_enabled":true,
+      "container_expiration_policy":{
+         "cadence":"7d",
+         "enabled":true,
+         "keep_n":null,
+         "older_than":null,
+         "name_regex":null,
+         "name_regex_keep":null,
+         "next_run_at":"2020-05-04T06:13:22.654Z"
+      },
+      "issues_enabled":true,
+      "merge_requests_enabled":true,
+      "wiki_enabled":true,
+      "jobs_enabled":true,
+      "snippets_enabled":true,
+      "can_create_merge_request_in":true,
+      "issues_access_level":"enabled",
+      "repository_access_level":"enabled",
+      "merge_requests_access_level":"enabled",
+      "forking_access_level":"enabled",
+      "wiki_access_level":"enabled",
+      "builds_access_level":"enabled",
+      "snippets_access_level":"enabled",
+      "pages_access_level":"enabled",
+      "emails_disabled":null,
+      "shared_runners_enabled":true,
+      "lfs_enabled":true,
+      "creator_id":1,
+      "import_status":"failed",
+      "open_issues_count":10,
+      "ci_default_git_depth":50,
+      "ci_forward_deployment_enabled":true,
+      "public_jobs":true,
+      "build_timeout":3600,
+      "auto_cancel_pending_pipelines":"enabled",
+      "build_coverage_regex":null,
+      "ci_config_path":null,
+      "shared_with_groups":[
+         {
+            "group_id":24,
+            "group_name":"Commit451",
+            "group_full_path":"Commit451",
+            "group_access_level":30,
+            "expires_at":null
+         }
+      ],
+      "only_allow_merge_if_pipeline_succeeds":false,
+      "request_access_enabled":true,
+      "only_allow_merge_if_all_discussions_are_resolved":false,
+      "remove_source_branch_after_merge":true,
+      "printing_merge_request_link_enabled":true,
+      "merge_method":"merge",
+      "suggestion_commit_message":null,
+      "auto_devops_enabled":true,
+      "auto_devops_deploy_strategy":"continuous",
+      "autoclose_referenced_issues":true,
+      "repository_storage":"default"
+   }
+]
diff --git a/data/api/groups/list-group-subgroups.json b/data/api/groups/list-group-subgroups.json
new file mode 100644
--- /dev/null
+++ b/data/api/groups/list-group-subgroups.json
@@ -0,0 +1,27 @@
+[
+  {
+    "id": 1,
+    "name": "Foobar Group",
+    "path": "foo-bar",
+    "description": "An interesting group",
+    "visibility": "public",
+    "share_with_group_lock": false,
+    "require_two_factor_authentication": false,
+    "two_factor_grace_period": 48,
+    "project_creation_level": "developer",
+    "auto_devops_enabled": null,
+    "subgroup_creation_level": "owner",
+    "emails_disabled": null,
+    "mentions_disabled": null,
+    "lfs_enabled": true,
+    "default_branch_protection": 2,
+    "avatar_url": "http://gitlab.example.com/uploads/group/avatar/1/foo.jpg",
+    "web_url": "http://gitlab.example.com/groups/foo-bar",
+    "request_access_enabled": false,
+    "full_name": "Foobar Group",
+    "full_path": "foo-bar",
+    "file_template_project_id": 1,
+    "parent_id": 123,
+    "created_at": "2020-01-15T12:36:29.59Z"
+  }
+]
diff --git a/data/api/groups/list-groups-with-stats.json b/data/api/groups/list-groups-with-stats.json
new file mode 100644
--- /dev/null
+++ b/data/api/groups/list-groups-with-stats.json
@@ -0,0 +1,38 @@
+[
+  {
+    "id": 1,
+    "name": "Foobar Group",
+    "path": "foo-bar",
+    "description": "An interesting group",
+    "visibility": "public",
+    "share_with_group_lock": false,
+    "require_two_factor_authentication": false,
+    "two_factor_grace_period": 48,
+    "project_creation_level": "developer",
+    "auto_devops_enabled": null,
+    "subgroup_creation_level": "owner",
+    "emails_disabled": null,
+    "mentions_disabled": null,
+    "lfs_enabled": true,
+    "default_branch_protection": 2,
+    "avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg",
+    "web_url": "http://localhost:3000/groups/foo-bar",
+    "request_access_enabled": false,
+    "full_name": "Foobar Group",
+    "full_path": "foo-bar",
+    "file_template_project_id": 1,
+    "parent_id": null,
+    "created_at": "2020-01-15T12:36:29.59Z",
+    "statistics": {
+      "storage_size": 363,
+      "repository_size": 33,
+      "wiki_size": 100,
+      "lfs_objects_size": 123,
+      "job_artifacts_size": 57,
+      "pipeline_artifacts_size": 0,
+      "packages_size": 0,
+      "snippets_size": 50,
+      "uploads_size": 0
+    }
+  }
+]
diff --git a/data/api/groups/list-groups.json b/data/api/groups/list-groups.json
new file mode 100644
--- /dev/null
+++ b/data/api/groups/list-groups.json
@@ -0,0 +1,27 @@
+[
+  {
+    "id": 1,
+    "name": "Foobar Group",
+    "path": "foo-bar",
+    "description": "An interesting group",
+    "visibility": "public",
+    "share_with_group_lock": false,
+    "require_two_factor_authentication": false,
+    "two_factor_grace_period": 48,
+    "project_creation_level": "developer",
+    "auto_devops_enabled": null,
+    "subgroup_creation_level": "owner",
+    "emails_disabled": null,
+    "mentions_disabled": null,
+    "lfs_enabled": true,
+    "default_branch_protection": 2,
+    "avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg",
+    "web_url": "http://localhost:3000/groups/foo-bar",
+    "request_access_enabled": false,
+    "full_name": "Foobar Group",
+    "full_path": "foo-bar",
+    "file_template_project_id": 1,
+    "parent_id": null,
+    "created_at": "2020-01-15T12:36:29.59Z"
+  }
+]
diff --git a/data/api/groups/search-for-group.json b/data/api/groups/search-for-group.json
new file mode 100644
--- /dev/null
+++ b/data/api/groups/search-for-group.json
@@ -0,0 +1,8 @@
+[
+  {
+    "id": 1,
+    "name": "Foobar Group",
+    "path": "foo-bar",
+    "description": "An interesting group"
+  }
+]
diff --git a/data/api/groups/update-group.json b/data/api/groups/update-group.json
new file mode 100644
--- /dev/null
+++ b/data/api/groups/update-group.json
@@ -0,0 +1,16 @@
+{
+  "id": 5,
+  "name": "Experimental",
+  "path": "h5bp",
+  "description": "foo",
+  "visibility": "internal",
+  "avatar_url": null,
+  "web_url": "http://gitlab.example.com/groups/h5bp",
+  "request_access_enabled": false,
+  "full_name": "Foobar Group",
+  "full_path": "foo-bar",
+  "file_template_project_id": 1,
+  "parent_id": null,
+  "created_at": "2020-01-15T12:36:29.59Z",
+  "prevent_sharing_groups_outside_hierarchy": false
+}
diff --git a/data/api/issues/add-time-spent-for-issue.json b/data/api/issues/add-time-spent-for-issue.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/add-time-spent-for-issue.json
@@ -0,0 +1,6 @@
+{
+  "human_time_estimate": null,
+  "human_total_time_spent": null,
+  "time_estimate": 0,
+  "total_time_spent": 0
+}
diff --git a/data/api/issues/clone-issue.json b/data/api/issues/clone-issue.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/clone-issue.json
@@ -0,0 +1,78 @@
+{
+  "id":290,
+  "iid":1,
+  "project_id":143,
+  "title":"foo",
+  "description":"closed",
+  "state":"opened",
+  "created_at":"2021-09-14T22:24:11.696Z",
+  "updated_at":"2021-09-14T22:24:11.696Z",
+  "closed_at":null,
+  "closed_by":null,
+  "labels":[
+
+  ],
+  "milestone":null,
+  "assignees":[
+    {
+      "id":179,
+      "name":"John Doe2",
+      "username":"john",
+      "state":"active",
+      "avatar_url":"https://www.gravatar.com/avatar/10fc7f102be8de7657fb4d80898bbfe3?s=80\u0026d=identicon",
+      "web_url":"https://gitlab.example.com/john"
+    }
+  ],
+  "author":{
+    "id":179,
+    "name":"John Doe2",
+    "username":"john",
+    "state":"active",
+    "avatar_url":"https://www.gravatar.com/avatar/10fc7f102be8de7657fb4d80898bbfe3?s=80\u0026d=identicon",
+    "web_url":"https://gitlab.example.com/john"
+  },
+  "type":"ISSUE",
+  "assignee":{
+    "id":179,
+    "name":"John Doe2",
+    "username":"john",
+    "state":"active",
+    "avatar_url":"https://www.gravatar.com/avatar/10fc7f102be8de7657fb4d80898bbfe3?s=80\u0026d=identicon",
+    "web_url":"https://gitlab.example.com/john"
+  },
+  "user_notes_count":1,
+  "merge_requests_count":0,
+  "upvotes":0,
+  "downvotes":0,
+  "due_date":null,
+  "confidential":false,
+  "discussion_locked":null,
+  "issue_type":"issue",
+  "web_url":"https://gitlab.example.com/namespace1/project2/-/issues/1",
+  "time_stats":{
+    "time_estimate":0,
+    "total_time_spent":0,
+    "human_time_estimate":null,
+    "human_total_time_spent":null
+  },
+  "task_completion_status":{
+    "count":0,
+    "completed_count":0
+  },
+  "blocking_issues_count":0,
+  "has_tasks":false,
+  "_links":{
+    "self":"https://gitlab.example.com/api/v4/projects/143/issues/1",
+    "notes":"https://gitlab.example.com/api/v4/projects/143/issues/1/notes",
+    "award_emoji":"https://gitlab.example.com/api/v4/projects/143/issues/1/award_emoji",
+    "project":"https://gitlab.example.com/api/v4/projects/143"
+  },
+  "references":{
+    "short":"#1",
+    "relative":"#1",
+    "full":"namespace1/project2#1"
+  },
+  "subscribed":true,
+  "moved_to_id":null,
+  "service_desk_reply_to":null
+}
diff --git a/data/api/issues/create-todo-item.json b/data/api/issues/create-todo-item.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/create-todo-item.json
@@ -0,0 +1,90 @@
+{
+  "id": 112,
+  "project": {
+    "id": 5,
+    "name": "GitLab CI/CD",
+    "name_with_namespace": "GitLab Org / GitLab CI/CD",
+    "path": "gitlab-ci",
+    "path_with_namespace": "gitlab-org/gitlab-ci"
+  },
+  "author": {
+    "name": "Administrator",
+    "username": "root",
+    "id": 1,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/root"
+  },
+  "action_name": "marked",
+  "target_type": "Issue",
+  "target": {
+    "id": 93,
+    "iid": 10,
+    "project_id": 5,
+    "title": "Vel voluptas atque dicta mollitia adipisci qui at.",
+    "description": "Tempora laboriosam sint magni sed voluptas similique.",
+    "state": "closed",
+    "created_at": "2016-06-17T07:47:39.486Z",
+    "updated_at": "2016-07-01T11:09:13.998Z",
+    "labels": [],
+    "milestone": {
+      "id": 26,
+      "iid": 1,
+      "project_id": 5,
+      "title": "v0.0",
+      "description": "Accusantium nostrum rerum quae quia quis nesciunt suscipit id.",
+      "state": "closed",
+      "created_at": "2016-06-17T07:47:33.832Z",
+      "updated_at": "2016-06-17T07:47:33.832Z",
+      "due_date": null
+    },
+    "assignees": [{
+      "name": "Jarret O'Keefe",
+      "username": "francisca",
+      "id": 14,
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/a7fa515d53450023c83d62986d0658a8?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/francisca"
+    }],
+    "assignee": {
+      "name": "Jarret O'Keefe",
+      "username": "francisca",
+      "id": 14,
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/a7fa515d53450023c83d62986d0658a8?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/francisca"
+    },
+    "type" : "ISSUE",
+    "author": {
+      "name": "Maxie Medhurst",
+      "username": "craig_rutherford",
+      "id": 12,
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/craig_rutherford"
+    },
+    "subscribed": true,
+    "user_notes_count": 7,
+    "upvotes": 0,
+    "downvotes": 0,
+    "merge_requests_count": 0,
+    "due_date": null,
+    "web_url": "http://gitlab.example.com/my-group/my-project/issues/10",
+    "references": {
+      "short": "#10",
+      "relative": "#10",
+      "full": "my-group/my-project#10"
+    },
+    "confidential": false,
+    "discussion_locked": false,
+    "issue_type": "issue",
+    "task_completion_status":{
+       "count":0,
+       "completed_count":0
+    }
+  },
+  "target_url": "https://gitlab.example.com/gitlab-org/gitlab-ci/issues/10",
+  "body": "Vel voluptas atque dicta mollitia adipisci qui at.",
+  "state": "pending",
+  "created_at": "2016-07-01T11:09:13.992Z"
+}
diff --git a/data/api/issues/edit-issue.json b/data/api/issues/edit-issue.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/edit-issue.json
@@ -0,0 +1,64 @@
+{
+   "created_at" : "2016-01-07T12:46:01.41Z",
+   "author" : {
+      "name" : "Alexandra Bashirian",
+      "avatar_url" : null,
+      "username" : "eileen.lowe",
+      "id" : 18,
+      "state" : "active",
+      "web_url" : "https://gitlab.example.com/eileen.lowe"
+   },
+   "state" : "closed",
+   "title" : "Issues with auth",
+   "project_id" : 4,
+   "description" : null,
+   "updated_at" : "2016-01-07T12:55:16.213Z",
+   "closed_at" : "2016-01-08T12:55:16.213Z",
+   "closed_by" : {
+      "state" : "active",
+      "web_url" : "https://gitlab.example.com/root",
+      "avatar_url" : null,
+      "username" : "root",
+      "id" : 1,
+      "name" : "Administrator"
+    },
+   "iid" : 15,
+   "labels" : [
+      "bug"
+   ],
+   "upvotes": 4,
+   "downvotes": 0,
+   "merge_requests_count": 0,
+   "id" : 85,
+   "assignees" : [],
+   "assignee" : null,
+   "milestone" : null,
+   "subscribed" : true,
+   "user_notes_count": 0,
+   "due_date": "2016-07-22",
+   "web_url": "http://gitlab.example.com/my-group/my-project/issues/15",
+   "references": {
+     "short": "#15",
+     "relative": "#15",
+     "full": "my-group/my-project#15"
+   },
+   "time_stats": {
+      "time_estimate": 0,
+      "total_time_spent": 0,
+      "human_time_estimate": null,
+      "human_total_time_spent": null
+   },
+   "confidential": false,
+   "discussion_locked": false,
+   "issue_type": "issue",
+   "_links": {
+      "self": "http://gitlab.example.com/api/v4/projects/1/issues/2",
+      "notes": "http://gitlab.example.com/api/v4/projects/1/issues/2/notes",
+      "award_emoji": "http://gitlab.example.com/api/v4/projects/1/issues/2/award_emoji",
+      "project": "http://gitlab.example.com/api/v4/projects/1"
+   },
+   "task_completion_status":{
+      "count":0,
+      "completed_count":0
+   }
+}
diff --git a/data/api/issues/get-time-tracking-stats.json b/data/api/issues/get-time-tracking-stats.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/get-time-tracking-stats.json
@@ -0,0 +1,6 @@
+{
+  "human_time_estimate": "2h",
+  "human_total_time_spent": "1h",
+  "time_estimate": 7200,
+  "total_time_spent": 3600
+}
diff --git a/data/api/issues/list-group-issues.json b/data/api/issues/list-group-issues.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/list-group-issues.json
@@ -0,0 +1,83 @@
+[
+   {
+      "project_id" : 4,
+      "milestone" : {
+         "due_date" : null,
+         "project_id" : 4,
+         "state" : "closed",
+         "description" : "Rerum est voluptatem provident consequuntur molestias similique ipsum dolor.",
+         "iid" : 3,
+         "id" : 11,
+         "title" : "v3.0",
+         "created_at" : "2016-01-04T15:31:39.788Z",
+         "updated_at" : "2016-01-04T15:31:39.788Z"
+      },
+      "author" : {
+         "state" : "active",
+         "web_url" : "https://gitlab.example.com/root",
+         "avatar_url" : null,
+         "username" : "root",
+         "id" : 1,
+         "name" : "Administrator"
+      },
+      "description" : "Omnis vero earum sunt corporis dolor et placeat.",
+      "state" : "closed",
+      "iid" : 1,
+      "assignees" : [{
+         "avatar_url" : null,
+         "web_url" : "https://gitlab.example.com/lennie",
+         "state" : "active",
+         "username" : "lennie",
+         "id" : 9,
+         "name" : "Dr. Luella Kovacek"
+      }],
+      "assignee" : {
+         "avatar_url" : null,
+         "web_url" : "https://gitlab.example.com/lennie",
+         "state" : "active",
+         "username" : "lennie",
+         "id" : 9,
+         "name" : "Dr. Luella Kovacek"
+      },
+      "type" : "ISSUE",
+      "labels" : ["foo", "bar"],
+      "upvotes": 4,
+      "downvotes": 0,
+      "merge_requests_count": 0,
+      "id" : 41,
+      "title" : "Ut commodi ullam eos dolores perferendis nihil sunt.",
+      "updated_at" : "2016-01-04T15:31:46.176Z",
+      "created_at" : "2016-01-04T15:31:46.176Z",
+      "closed_at" : null,
+      "closed_by" : null,
+      "user_notes_count": 1,
+      "due_date": null,
+      "web_url": "http://gitlab.example.com/my-group/my-project/issues/1",
+      "references": {
+        "short": "#1",
+        "relative": "my-project#1",
+        "full": "my-group/my-project#1"
+      },
+      "time_stats": {
+         "time_estimate": 0,
+         "total_time_spent": 0,
+         "human_time_estimate": null,
+         "human_total_time_spent": null
+      },
+      "has_tasks": true,
+      "task_status": "10 of 15 tasks completed",
+      "confidential": false,
+      "discussion_locked": false,
+      "issue_type": "issue",
+      "_links":{
+         "self":"http://gitlab.example.com/api/v4/projects/4/issues/41",
+         "notes":"http://gitlab.example.com/api/v4/projects/4/issues/41/notes",
+         "award_emoji":"http://gitlab.example.com/api/v4/projects/4/issues/41/award_emoji",
+         "project":"http://gitlab.example.com/api/v4/projects/4"
+      },
+      "task_completion_status":{
+         "count":0,
+         "completed_count":0
+      }
+   }
+]
diff --git a/data/api/issues/list-issues.json b/data/api/issues/list-issues.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/list-issues.json
@@ -0,0 +1,93 @@
+[
+   {
+      "state" : "opened",
+      "description" : "Ratione dolores corrupti mollitia soluta quia.",
+       "weight": null,
+       "epic": {
+           "id" : 42,
+           "iid" : 5,
+           "title": "My epic epic",
+           "url" : "/groups/h5bp/-/epics/5",
+           "group_id": 8
+       },
+       "health_status": "on_track",
+      "author" : {
+         "state" : "active",
+         "id" : 18,
+         "web_url" : "https://gitlab.example.com/eileen.lowe",
+         "name" : "Alexandra Bashirian",
+         "avatar_url" : null,
+         "username" : "eileen.lowe"
+      },
+      "milestone" : {
+         "project_id" : 1,
+         "description" : "Ducimus nam enim ex consequatur cumque ratione.",
+         "state" : "closed",
+         "due_date" : null,
+         "iid" : 2,
+         "created_at" : "2016-01-04T15:31:39.996Z",
+         "title" : "v4.0",
+         "id" : 17,
+         "updated_at" : "2016-01-04T15:31:39.996Z"
+      },
+      "project_id" : 1,
+      "assignees" : [{
+         "state" : "active",
+         "id" : 1,
+         "name" : "Administrator",
+         "web_url" : "https://gitlab.example.com/root",
+         "avatar_url" : null,
+         "username" : "root"
+      }],
+      "assignee" : {
+         "state" : "active",
+         "id" : 1,
+         "name" : "Administrator",
+         "web_url" : "https://gitlab.example.com/root",
+         "avatar_url" : null,
+         "username" : "root"
+      },
+      "type" : "ISSUE",
+      "updated_at" : "2016-01-04T15:31:51.081Z",
+      "closed_at" : null,
+      "closed_by" : null,
+      "id" : 76,
+      "title" : "Consequatur vero maxime deserunt laboriosam est voluptas dolorem.",
+      "created_at" : "2016-01-04T15:31:51.081Z",
+      "moved_to_id" : null,
+      "iid" : 6,
+      "labels" : ["foo", "bar"],
+      "upvotes": 4,
+      "downvotes": 0,
+      "merge_requests_count": 0,
+      "user_notes_count": 1,
+      "due_date": "2016-07-22",
+      "web_url": "http://gitlab.example.com/my-group/my-project/issues/6",
+      "references": {
+        "short": "#6",
+        "relative": "my-group/my-project#6",
+        "full": "my-group/my-project#6"
+      },
+      "time_stats": {
+         "time_estimate": 0,
+         "total_time_spent": 0,
+         "human_time_estimate": null,
+         "human_total_time_spent": null
+      },
+      "has_tasks": true,
+      "task_status": "10 of 15 tasks completed",
+      "confidential": false,
+      "discussion_locked": false,
+      "issue_type": "issue",
+      "_links":{
+         "self":"http://gitlab.example.com/api/v4/projects/1/issues/76",
+         "notes":"http://gitlab.example.com/api/v4/projects/1/issues/76/notes",
+         "award_emoji":"http://gitlab.example.com/api/v4/projects/1/issues/76/award_emoji",
+         "project":"http://gitlab.example.com/api/v4/projects/1"
+      },
+      "task_completion_status":{
+         "count":0,
+         "completed_count":0
+      }
+   }
+]
diff --git a/data/api/issues/list-project-issues.json b/data/api/issues/list-project-issues.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/list-project-issues.json
@@ -0,0 +1,90 @@
+[
+   {
+      "project_id" : 4,
+      "milestone" : {
+         "due_date" : null,
+         "project_id" : 4,
+         "state" : "closed",
+         "description" : "Rerum est voluptatem provident consequuntur molestias similique ipsum dolor.",
+         "iid" : 3,
+         "id" : 11,
+         "title" : "v3.0",
+         "created_at" : "2016-01-04T15:31:39.788Z",
+         "updated_at" : "2016-01-04T15:31:39.788Z"
+      },
+      "author" : {
+         "state" : "active",
+         "web_url" : "https://gitlab.example.com/root",
+         "avatar_url" : null,
+         "username" : "root",
+         "id" : 1,
+         "name" : "Administrator"
+      },
+      "description" : "Omnis vero earum sunt corporis dolor et placeat.",
+      "state" : "closed",
+      "iid" : 1,
+      "assignees" : [{
+         "avatar_url" : null,
+         "web_url" : "https://gitlab.example.com/lennie",
+         "state" : "active",
+         "username" : "lennie",
+         "id" : 9,
+         "name" : "Dr. Luella Kovacek"
+      }],
+      "assignee" : {
+         "avatar_url" : null,
+         "web_url" : "https://gitlab.example.com/lennie",
+         "state" : "active",
+         "username" : "lennie",
+         "id" : 9,
+         "name" : "Dr. Luella Kovacek"
+      },
+      "type" : "ISSUE",
+      "labels" : ["foo", "bar"],
+      "upvotes": 4,
+      "downvotes": 0,
+      "merge_requests_count": 0,
+      "id" : 41,
+      "title" : "Ut commodi ullam eos dolores perferendis nihil sunt.",
+      "updated_at" : "2016-01-04T15:31:46.176Z",
+      "created_at" : "2016-01-04T15:31:46.176Z",
+      "closed_at" : "2016-01-05T15:31:46.176Z",
+      "closed_by" : {
+         "state" : "active",
+         "web_url" : "https://gitlab.example.com/root",
+         "avatar_url" : null,
+         "username" : "root",
+         "id" : 1,
+         "name" : "Administrator"
+      },
+      "user_notes_count": 1,
+      "due_date": "2016-07-22",
+      "web_url": "http://gitlab.example.com/my-group/my-project/issues/1",
+      "references": {
+        "short": "#1",
+        "relative": "#1",
+        "full": "my-group/my-project#1"
+      },
+      "time_stats": {
+         "time_estimate": 0,
+         "total_time_spent": 0,
+         "human_time_estimate": null,
+         "human_total_time_spent": null
+      },
+      "has_tasks": true,
+      "task_status": "10 of 15 tasks completed",
+      "confidential": false,
+      "discussion_locked": false,
+      "issue_type": "issue",
+      "_links":{
+         "self":"http://gitlab.example.com/api/v4/projects/4/issues/41",
+         "notes":"http://gitlab.example.com/api/v4/projects/4/issues/41/notes",
+         "award_emoji":"http://gitlab.example.com/api/v4/projects/4/issues/41/award_emoji",
+         "project":"http://gitlab.example.com/api/v4/projects/4"
+      },
+      "task_completion_status":{
+         "count":0,
+         "completed_count":0
+      }
+   }
+]
diff --git a/data/api/issues/merge-requests-close-issue-on-merge.json b/data/api/issues/merge-requests-close-issue-on-merge.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/merge-requests-close-issue-on-merge.json
@@ -0,0 +1,54 @@
+[
+  {
+    "id": 6471,
+    "iid": 6432,
+    "project_id": 1,
+    "title": "add a test for cgi lexer options",
+    "description": "closes #11",
+    "state": "opened",
+    "created_at": "2017-04-06T18:33:34.168Z",
+    "updated_at": "2017-04-09T20:10:24.983Z",
+    "target_branch": "master",
+    "source_branch": "feature.custom-highlighting",
+    "upvotes": 0,
+    "downvotes": 0,
+    "author": {
+      "name": "Administrator",
+      "username": "root",
+      "id": 1,
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/root"
+    },
+    "assignee": null,
+    "source_project_id": 1,
+    "target_project_id": 1,
+    "closed_at": null,
+    "closed_by": null,
+    "labels": [],
+    "draft": false,
+    "work_in_progress": false,
+    "milestone": null,
+    "merge_when_pipeline_succeeds": false,
+    "merge_status": "unchecked",
+    "sha": "5a62481d563af92b8e32d735f2fa63b94e806835",
+    "merge_commit_sha": null,
+    "squash_commit_sha": null,
+    "user_notes_count": 1,
+    "should_remove_source_branch": null,
+    "force_remove_source_branch": false,
+    "web_url": "https://gitlab.example.com/gitlab-org/gitlab-test/merge_requests/6432",
+    "reference": "!6432",
+    "references": {
+      "short": "!6432",
+      "relative": "!6432",
+      "full": "gitlab-org/gitlab-test!6432"
+    },
+    "time_stats": {
+      "time_estimate": 0,
+      "total_time_spent": 0,
+      "human_time_estimate": null,
+      "human_total_time_spent": null
+    }
+  }
+]
diff --git a/data/api/issues/merge-requests-related-to-issue.json b/data/api/issues/merge-requests-related-to-issue.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/merge-requests-related-to-issue.json
@@ -0,0 +1,132 @@
+[
+  {
+    "id": 29,
+    "iid": 11,
+    "project_id": 1,
+    "title": "Provident eius eos blanditiis consequatur neque odit.",
+    "description": "Ut consequatur ipsa aspernatur quisquam voluptatum fugit. Qui harum corporis quo fuga ut incidunt veritatis. Autem necessitatibus et harum occaecati nihil ea.\r\n\r\ntwitter/flight#8",
+    "state": "opened",
+    "created_at": "2018-09-18T14:36:15.51Z",
+    "updated_at": "2018-09-19T07:45:13.089Z",
+    "closed_by": null,
+    "closed_at": null,
+    "target_branch": "v2.x",
+    "source_branch": "so_long_jquery",
+    "user_notes_count": 9,
+    "upvotes": 0,
+    "downvotes": 0,
+    "author": {
+      "id": 14,
+      "name": "Verna Hills",
+      "username": "lawanda_reinger",
+      "state": "active",
+      "avatar_url": "https://www.gravatar.com/avatar/de68a91aeab1cff563795fb98a0c2cc0?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/lawanda_reinger"
+    },
+    "assignee": {
+      "id": 19,
+      "name": "Jody Baumbach",
+      "username": "felipa.kuvalis",
+      "state": "active",
+      "avatar_url": "https://www.gravatar.com/avatar/6541fc75fc4e87e203529bd275fafd07?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/felipa.kuvalis"
+    },
+    "source_project_id": 1,
+    "target_project_id": 1,
+    "labels": [],
+    "draft": false,
+    "work_in_progress": false,
+    "milestone": {
+      "id": 27,
+      "iid": 2,
+      "project_id": 1,
+      "title": "v1.0",
+      "description": "Et tenetur voluptatem minima doloribus vero dignissimos vitae.",
+      "state": "active",
+      "created_at": "2018-09-18T14:35:44.353Z",
+      "updated_at": "2018-09-18T14:35:44.353Z",
+      "due_date": null,
+      "start_date": null,
+      "web_url": "https://gitlab.example.com/twitter/flight/milestones/2"
+    },
+    "merge_when_pipeline_succeeds": false,
+    "merge_status": "cannot_be_merged",
+    "sha": "3b7b528e9353295c1c125dad281ac5b5deae5f12",
+    "merge_commit_sha": null,
+    "squash_commit_sha": null,
+    "discussion_locked": null,
+    "should_remove_source_branch": null,
+    "force_remove_source_branch": false,
+    "reference": "!11",
+    "web_url": "https://gitlab.example.com/twitter/flight/merge_requests/4",
+    "references": {
+      "short": "!4",
+      "relative": "!4",
+      "full": "twitter/flight!4"
+    },
+    "time_stats": {
+      "time_estimate": 0,
+      "total_time_spent": 0,
+      "human_time_estimate": null,
+      "human_total_time_spent": null
+    },
+    "squash": false,
+    "task_completion_status": {
+      "count": 0,
+      "completed_count": 0
+    },
+    "changes_count": "10",
+    "latest_build_started_at": "2018-12-05T01:16:41.723Z",
+    "latest_build_finished_at": "2018-12-05T02:35:54.046Z",
+    "first_deployed_to_production_at": null,
+    "pipeline": {
+      "id": 38980952,
+      "sha": "81c6a84c7aebd45a1ac2c654aa87f11e32338e0a",
+      "ref": "test-branch",
+      "status": "success",
+      "web_url": "https://gitlab.com/gitlab-org/gitlab/pipelines/38980952"
+    },
+    "head_pipeline": {
+      "id": 38980952,
+      "sha": "81c6a84c7aebd45a1ac2c654aa87f11e32338e0a",
+      "ref": "test-branch",
+      "status": "success",
+      "web_url": "https://gitlab.example.com/twitter/flight/pipelines/38980952",
+      "before_sha": "3c738a37eb23cf4c0ed0d45d6ddde8aad4a8da51",
+      "tag": false,
+      "yaml_errors": null,
+      "user": {
+        "id": 19,
+        "name": "Jody Baumbach",
+        "username": "felipa.kuvalis",
+        "state": "active",
+        "avatar_url": "https://www.gravatar.com/avatar/6541fc75fc4e87e203529bd275fafd07?s=80&d=identicon",
+        "web_url": "https://gitlab.example.com/felipa.kuvalis"
+      },
+      "created_at": "2018-12-05T01:16:13.342Z",
+      "updated_at": "2018-12-05T02:35:54.086Z",
+      "started_at": "2018-12-05T01:16:41.723Z",
+      "finished_at": "2018-12-05T02:35:54.046Z",
+      "committed_at": null,
+      "duration": 4436,
+      "coverage": "46.68",
+      "detailed_status": {
+        "icon": "status_warning",
+        "text": "passed",
+        "label": "passed with warnings",
+        "group": "success-with-warnings",
+        "tooltip": "passed",
+        "has_details": true,
+        "details_path": "/twitter/flight/pipelines/38",
+        "illustration": null,
+        "favicon": "https://gitlab.example.com/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png"
+      }
+    },
+    "diff_refs": {
+      "base_sha": "d052d768f0126e8cddf80afd8b1eb07f406a3fcb",
+      "head_sha": "81c6a84c7aebd45a1ac2c654aa87f11e32338e0a",
+      "start_sha": "d052d768f0126e8cddf80afd8b1eb07f406a3fcb"
+    },
+    "merge_error": null
+  }
+]
diff --git a/data/api/issues/move-issue.json b/data/api/issues/move-issue.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/move-issue.json
@@ -0,0 +1,68 @@
+{
+  "id": 92,
+  "iid": 11,
+  "project_id": 5,
+  "title": "Sit voluptas tempora quisquam aut doloribus et.",
+  "description": "Repellat voluptas quibusdam voluptatem exercitationem.",
+  "state": "opened",
+  "created_at": "2016-04-05T21:41:45.652Z",
+  "updated_at": "2016-04-07T12:20:17.596Z",
+  "closed_at": null,
+  "closed_by": null,
+  "labels": [],
+  "upvotes": 4,
+  "downvotes": 0,
+  "merge_requests_count": 0,
+  "milestone": null,
+  "assignees": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "assignee": {
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  },
+  "type" : "ISSUE",
+  "author": {
+    "name": "Kris Steuber",
+    "username": "solon.cremin",
+    "id": 10,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/7a190fecbaa68212a4b68aeb6e3acd10?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/solon.cremin"
+  },
+  "due_date": null,
+  "web_url": "http://gitlab.example.com/my-group/my-project/issues/11",
+  "references": {
+    "short": "#11",
+    "relative": "#11",
+    "full": "my-group/my-project#11"
+  },
+  "time_stats": {
+    "time_estimate": 0,
+    "total_time_spent": 0,
+    "human_time_estimate": null,
+    "human_total_time_spent": null
+  },
+  "confidential": false,
+  "discussion_locked": false,
+  "issue_type": "issue",
+  "_links": {
+    "self": "http://gitlab.example.com/api/v4/projects/1/issues/2",
+    "notes": "http://gitlab.example.com/api/v4/projects/1/issues/2/notes",
+    "award_emoji": "http://gitlab.example.com/api/v4/projects/1/issues/2/award_emoji",
+    "project": "http://gitlab.example.com/api/v4/projects/1"
+  },
+  "task_completion_status":{
+     "count":0,
+     "completed_count":0
+  }
+}
diff --git a/data/api/issues/new-issue.json b/data/api/issues/new-issue.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/new-issue.json
@@ -0,0 +1,58 @@
+{
+   "project_id" : 4,
+   "id" : 84,
+   "created_at" : "2016-01-07T12:44:33.959Z",
+   "iid" : 14,
+   "title" : "Issues with auth",
+   "state" : "opened",
+   "assignees" : [],
+   "assignee" : null,
+   "type" : "ISSUE",
+   "labels" : [
+      "bug"
+   ],
+   "upvotes": 4,
+   "downvotes": 0,
+   "merge_requests_count": 0,
+   "author" : {
+      "name" : "Alexandra Bashirian",
+      "avatar_url" : null,
+      "state" : "active",
+      "web_url" : "https://gitlab.example.com/eileen.lowe",
+      "id" : 18,
+      "username" : "eileen.lowe"
+   },
+   "description" : null,
+   "updated_at" : "2016-01-07T12:44:33.959Z",
+   "closed_at" : null,
+   "closed_by" : null,
+   "milestone" : null,
+   "subscribed" : true,
+   "user_notes_count": 0,
+   "due_date": null,
+   "web_url": "http://gitlab.example.com/my-group/my-project/issues/14",
+   "references": {
+     "short": "#14",
+     "relative": "#14",
+     "full": "my-group/my-project#14"
+   },
+   "time_stats": {
+      "time_estimate": 0,
+      "total_time_spent": 0,
+      "human_time_estimate": null,
+      "human_total_time_spent": null
+   },
+   "confidential": false,
+   "discussion_locked": false,
+   "issue_type": "issue",
+   "_links": {
+      "self": "http://gitlab.example.com/api/v4/projects/1/issues/2",
+      "notes": "http://gitlab.example.com/api/v4/projects/1/issues/2/notes",
+      "award_emoji": "http://gitlab.example.com/api/v4/projects/1/issues/2/award_emoji",
+      "project": "http://gitlab.example.com/api/v4/projects/1"
+   },
+   "task_completion_status":{
+      "count":0,
+      "completed_count":0
+   }
+}
diff --git a/data/api/issues/participants-on-issues.json b/data/api/issues/participants-on-issues.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/participants-on-issues.json
@@ -0,0 +1,18 @@
+[
+  {
+    "id": 1,
+    "name": "John Doe1",
+    "username": "user1",
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/c922747a93b40d1ea88262bf1aebee62?s=80&d=identicon",
+    "web_url": "http://gitlab.example.com/user1"
+  },
+  {
+    "id": 5,
+    "name": "John Doe5",
+    "username": "user5",
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/4aea8cf834ed91844a2da4ff7ae6b491?s=80&d=identicon",
+    "web_url": "http://gitlab.example.com/user5"
+  }
+]
diff --git a/data/api/issues/promote-issue-to-epic.json b/data/api/issues/promote-issue-to-epic.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/promote-issue-to-epic.json
@@ -0,0 +1,25 @@
+{
+   "id":699,
+   "type":null,
+   "body":"Lets promote this to an epic",
+   "attachment":null,
+   "author": {
+      "id":1,
+      "name":"Alexandra Bashirian",
+      "username":"eileen.lowe",
+      "state":"active",
+      "avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+      "web_url":"https://gitlab.example.com/eileen.lowe"
+   },
+   "created_at":"2020-12-03T12:27:17.844Z",
+   "updated_at":"2020-12-03T12:27:17.844Z",
+   "system":false,
+   "noteable_id":461,
+   "noteable_type":"Issue",
+   "resolvable":false,
+   "confidential":false,
+   "noteable_iid":33,
+   "commands_changes": {
+      "promote_to_epic":true
+   }
+}
diff --git a/data/api/issues/reset-time-estimate-for-issue.json b/data/api/issues/reset-time-estimate-for-issue.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/reset-time-estimate-for-issue.json
@@ -0,0 +1,6 @@
+{
+  "human_time_estimate": null,
+  "human_total_time_spent": null,
+  "time_estimate": 0,
+  "total_time_spent": 0
+}
diff --git a/data/api/issues/reset-time-spent-for-issue.json b/data/api/issues/reset-time-spent-for-issue.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/reset-time-spent-for-issue.json
@@ -0,0 +1,6 @@
+{
+  "human_time_estimate": null,
+  "human_total_time_spent": null,
+  "time_estimate": 0,
+  "total_time_spent": 0
+}
diff --git a/data/api/issues/set-time-estimate-for-issue.json b/data/api/issues/set-time-estimate-for-issue.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/set-time-estimate-for-issue.json
@@ -0,0 +1,6 @@
+{
+  "human_time_estimate": "3h 30m",
+  "human_total_time_spent": null,
+  "time_estimate": 12600,
+  "total_time_spent": 0
+}
diff --git a/data/api/issues/single-issue.json b/data/api/issues/single-issue.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/single-issue.json
@@ -0,0 +1,86 @@
+{
+  "id": 1,
+  "milestone": {
+    "due_date": null,
+    "project_id": 4,
+    "state": "closed",
+    "description": "Rerum est voluptatem provident consequuntur molestias similique ipsum dolor.",
+    "iid": 3,
+    "id": 11,
+    "title": "v3.0",
+    "created_at": "2016-01-04T15:31:39.788Z",
+    "updated_at": "2016-01-04T15:31:39.788Z",
+    "closed_at": "2016-01-05T15:31:46.176Z"
+  },
+  "author": {
+    "state": "active",
+    "web_url": "https://gitlab.example.com/root",
+    "avatar_url": null,
+    "username": "root",
+    "id": 1,
+    "name": "Administrator"
+  },
+  "description": "Omnis vero earum sunt corporis dolor et placeat.",
+  "state": "closed",
+  "iid": 1,
+  "assignees": [
+    {
+      "avatar_url": null,
+      "web_url": "https://gitlab.example.com/lennie",
+      "state": "active",
+      "username": "lennie",
+      "id": 9,
+      "name": "Dr. Luella Kovacek"
+    }
+  ],
+  "assignee": {
+    "avatar_url": null,
+    "web_url": "https://gitlab.example.com/lennie",
+    "state": "active",
+    "username": "lennie",
+    "id": 9,
+    "name": "Dr. Luella Kovacek"
+  },
+  "type": "ISSUE",
+  "labels": [],
+  "upvotes": 4,
+  "downvotes": 0,
+  "merge_requests_count": 0,
+  "title": "Ut commodi ullam eos dolores perferendis nihil sunt.",
+  "updated_at": "2016-01-04T15:31:46.176Z",
+  "created_at": "2016-01-04T15:31:46.176Z",
+  "closed_at": null,
+  "closed_by": null,
+  "subscribed": false,
+  "user_notes_count": 1,
+  "due_date": null,
+  "web_url": "http://example.com/my-group/my-project/issues/1",
+  "references": {
+    "short": "#1",
+    "relative": "#1",
+    "full": "my-group/my-project#1"
+  },
+  "time_stats": {
+    "time_estimate": 0,
+    "total_time_spent": 0,
+    "human_time_estimate": null,
+    "human_total_time_spent": null
+  },
+  "confidential": false,
+  "discussion_locked": false,
+  "issue_type": "issue",
+  "task_completion_status": {
+    "count": 0,
+    "completed_count": 0
+  },
+  "weight": null,
+  "has_tasks": false,
+  "_links": {
+    "self": "http://gitlab.example:3000/api/v4/projects/1/issues/1",
+    "notes": "http://gitlab.example:3000/api/v4/projects/1/issues/1/notes",
+    "award_emoji": "http://gitlab.example:3000/api/v4/projects/1/issues/1/award_emoji",
+    "project": "http://gitlab.example:3000/api/v4/projects/1"
+  },
+  "moved_to_id": null,
+  "service_desk_reply_to": "service.desk@gitlab.com"
+}
diff --git a/data/api/issues/single-project-issue.json b/data/api/issues/single-project-issue.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/single-project-issue.json
@@ -0,0 +1,81 @@
+{
+   "project_id" : 4,
+   "milestone" : {
+      "due_date" : null,
+      "project_id" : 4,
+      "state" : "closed",
+      "description" : "Rerum est voluptatem provident consequuntur molestias similique ipsum dolor.",
+      "iid" : 3,
+      "id" : 11,
+      "title" : "v3.0",
+      "created_at" : "2016-01-04T15:31:39.788Z",
+      "updated_at" : "2016-01-04T15:31:39.788Z",
+      "closed_at" : "2016-01-05T15:31:46.176Z"
+   },
+   "author" : {
+      "state" : "active",
+      "web_url" : "https://gitlab.example.com/root",
+      "avatar_url" : null,
+      "username" : "root",
+      "id" : 1,
+      "name" : "Administrator"
+   },
+   "description" : "Omnis vero earum sunt corporis dolor et placeat.",
+   "state" : "closed",
+   "iid" : 1,
+   "assignees" : [{
+      "avatar_url" : null,
+      "web_url" : "https://gitlab.example.com/lennie",
+      "state" : "active",
+      "username" : "lennie",
+      "id" : 9,
+      "name" : "Dr. Luella Kovacek"
+   }],
+   "assignee" : {
+      "avatar_url" : null,
+      "web_url" : "https://gitlab.example.com/lennie",
+      "state" : "active",
+      "username" : "lennie",
+      "id" : 9,
+      "name" : "Dr. Luella Kovacek"
+   },
+   "type" : "ISSUE",
+   "labels" : [],
+   "upvotes": 4,
+   "downvotes": 0,
+   "merge_requests_count": 0,
+   "id" : 41,
+   "title" : "Ut commodi ullam eos dolores perferendis nihil sunt.",
+   "updated_at" : "2016-01-04T15:31:46.176Z",
+   "created_at" : "2016-01-04T15:31:46.176Z",
+   "closed_at" : null,
+   "closed_by" : null,
+   "subscribed": false,
+   "user_notes_count": 1,
+   "due_date": null,
+   "web_url": "http://gitlab.example.com/my-group/my-project/issues/1",
+   "references": {
+     "short": "#1",
+     "relative": "#1",
+     "full": "my-group/my-project#1"
+   },
+   "time_stats": {
+      "time_estimate": 0,
+      "total_time_spent": 0,
+      "human_time_estimate": null,
+      "human_total_time_spent": null
+   },
+   "confidential": false,
+   "discussion_locked": false,
+   "issue_type": "issue",
+   "_links": {
+      "self": "http://gitlab.example.com/api/v4/projects/1/issues/2",
+      "notes": "http://gitlab.example.com/api/v4/projects/1/issues/2/notes",
+      "award_emoji": "http://gitlab.example.com/api/v4/projects/1/issues/2/award_emoji",
+      "project": "http://gitlab.example.com/api/v4/projects/1"
+   },
+   "task_completion_status":{
+      "count":0,
+      "completed_count":0
+   }
+}
diff --git a/data/api/issues/subscribe-to-issue.json b/data/api/issues/subscribe-to-issue.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/subscribe-to-issue.json
@@ -0,0 +1,68 @@
+{
+  "id": 92,
+  "iid": 11,
+  "project_id": 5,
+  "title": "Sit voluptas tempora quisquam aut doloribus et.",
+  "description": "Repellat voluptas quibusdam voluptatem exercitationem.",
+  "state": "opened",
+  "created_at": "2016-04-05T21:41:45.652Z",
+  "updated_at": "2016-04-07T12:20:17.596Z",
+  "closed_at": null,
+  "closed_by": null,
+  "labels": [],
+  "upvotes": 4,
+  "downvotes": 0,
+  "merge_requests_count": 0,
+  "milestone": null,
+  "assignees": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "assignee": {
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  },
+  "type" : "ISSUE",
+  "author": {
+    "name": "Kris Steuber",
+    "username": "solon.cremin",
+    "id": 10,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/7a190fecbaa68212a4b68aeb6e3acd10?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/solon.cremin"
+  },
+  "due_date": null,
+  "web_url": "http://gitlab.example.com/my-group/my-project/issues/11",
+  "references": {
+    "short": "#11",
+    "relative": "#11",
+    "full": "my-group/my-project#11"
+  },
+  "time_stats": {
+    "time_estimate": 0,
+    "total_time_spent": 0,
+    "human_time_estimate": null,
+    "human_total_time_spent": null
+  },
+  "confidential": false,
+  "discussion_locked": false,
+  "issue_type": "issue",
+  "_links": {
+    "self": "http://gitlab.example.com/api/v4/projects/1/issues/2",
+    "notes": "http://gitlab.example.com/api/v4/projects/1/issues/2/notes",
+    "award_emoji": "http://gitlab.example.com/api/v4/projects/1/issues/2/award_emoji",
+    "project": "http://gitlab.example.com/api/v4/projects/1"
+  },
+  "task_completion_status":{
+     "count":0,
+     "completed_count":0
+  }
+}
diff --git a/data/api/issues/unsubscribe-from-issue.json b/data/api/issues/unsubscribe-from-issue.json
new file mode 100644
--- /dev/null
+++ b/data/api/issues/unsubscribe-from-issue.json
@@ -0,0 +1,49 @@
+{
+  "id": 93,
+  "iid": 12,
+  "project_id": 5,
+  "title": "Incidunt et rerum ea expedita iure quibusdam.",
+  "description": "Et cumque architecto sed aut ipsam.",
+  "state": "opened",
+  "created_at": "2016-04-05T21:41:45.217Z",
+  "updated_at": "2016-04-07T13:02:37.905Z",
+  "labels": [],
+  "upvotes": 4,
+  "downvotes": 0,
+  "merge_requests_count": 0,
+  "milestone": null,
+  "assignee": {
+    "name": "Edwardo Grady",
+    "username": "keyon",
+    "id": 21,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/3e6f06a86cf27fa8b56f3f74f7615987?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/keyon"
+  },
+  "type" : "ISSUE",
+  "closed_at": null,
+  "closed_by": null,
+  "author": {
+    "name": "Vivian Hermann",
+    "username": "orville",
+    "id": 11,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/5224fd70153710e92fb8bcf79ac29d67?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/orville"
+  },
+  "subscribed": false,
+  "due_date": null,
+  "web_url": "http://gitlab.example.com/my-group/my-project/issues/12",
+  "references": {
+    "short": "#12",
+    "relative": "#12",
+    "full": "my-group/my-project#12"
+  },
+  "confidential": false,
+  "discussion_locked": false,
+  "issue_type": "issue",
+  "task_completion_status":{
+     "count":0,
+     "completed_count":0
+  }
+}
diff --git a/data/api/jobs/cancel-job.json b/data/api/jobs/cancel-job.json
new file mode 100644
--- /dev/null
+++ b/data/api/jobs/cancel-job.json
@@ -0,0 +1,28 @@
+{
+  "commit": {
+    "author_email": "admin@example.com",
+    "author_name": "Administrator",
+    "created_at": "2015-12-24T16:51:14.000+01:00",
+    "id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+    "message": "Test the CI integration.",
+    "short_id": "0ff3ae19",
+    "title": "Test the CI integration."
+  },
+  "coverage": null,
+  "allow_failure": false,
+  "created_at": "2016-01-11T10:13:33.506Z",
+  "started_at": "2016-01-11T10:14:09.526Z",
+  "finished_at": null,
+  "duration": 8,
+  "queued_duration": 0.010,
+  "id": 42,
+  "name": "rubocop",
+  "ref": "main",
+  "artifacts": [],
+  "runner": null,
+  "stage": "test",
+  "status": "canceled",
+  "tag": false,
+  "web_url": "https://example.com/foo/bar/-/jobs/42",
+  "user": null
+}
diff --git a/data/api/jobs/erase-job.json b/data/api/jobs/erase-job.json
new file mode 100644
--- /dev/null
+++ b/data/api/jobs/erase-job.json
@@ -0,0 +1,29 @@
+{
+  "commit": {
+    "author_email": "admin@example.com",
+    "author_name": "Administrator",
+    "created_at": "2015-12-24T16:51:14.000+01:00",
+    "id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+    "message": "Test the CI integration.",
+    "short_id": "0ff3ae19",
+    "title": "Test the CI integration."
+  },
+  "coverage": null,
+  "allow_failure": false,
+  "download_url": null,
+  "id": 42,
+  "name": "rubocop",
+  "ref": "main",
+  "artifacts": [],
+  "runner": null,
+  "stage": "test",
+  "created_at": "2016-01-11T10:13:33.506Z",
+  "started_at": "2016-01-11T10:13:33.506Z",
+  "finished_at": "2016-01-11T10:15:10.506Z",
+  "duration": 97.0,
+  "queued_duration": 0.010,
+  "status": "failed",
+  "tag": false,
+  "web_url": "https://example.com/foo/bar/-/jobs/42",
+  "user": null
+}
diff --git a/data/api/jobs/job-tokens-job.json b/data/api/jobs/job-tokens-job.json
new file mode 100644
--- /dev/null
+++ b/data/api/jobs/job-tokens-job.json
@@ -0,0 +1,53 @@
+{
+  "commit": {
+    "author_email": "admin@example.com",
+    "author_name": "Administrator",
+    "created_at": "2015-12-24T16:51:14.000+01:00",
+    "id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+    "message": "Test the CI integration.",
+    "short_id": "0ff3ae19",
+    "title": "Test the CI integration."
+  },
+  "coverage": null,
+  "allow_failure": false,
+  "created_at": "2015-12-24T15:51:21.88Z",
+  "started_at": "2015-12-24T17:54:30.733Z",
+  "finished_at": "2015-12-24T17:54:31.198Z",
+  "duration": 0.465,
+  "queued_duration": 0.123,
+  "artifacts_expire_at": "2016-01-23T17:54:31.198Z",
+  "id": 8,
+  "name": "rubocop",
+  "pipeline": {
+    "id": 6,
+    "project_id": 1,
+    "ref": "main",
+    "sha": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+    "status": "pending"
+  },
+  "ref": "main",
+  "artifacts": [],
+  "runner": null,
+  "stage": "test",
+  "status": "failed",
+  "failure_reason": "script_failure",
+  "tag": false,
+  "web_url": "https://example.com/foo/bar/-/jobs/8",
+  "user": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "root",
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+    "web_url": "http://gitlab.dev/root",
+    "created_at": "2015-12-21T13:14:24.077Z",
+    "bio": null,
+    "location": null,
+    "public_email": "",
+    "skype": "",
+    "linkedin": "",
+    "twitter": "",
+    "website_url": "",
+    "organization": ""
+  }
+}
diff --git a/data/api/jobs/pipeline-bridges.json b/data/api/jobs/pipeline-bridges.json
new file mode 100644
--- /dev/null
+++ b/data/api/jobs/pipeline-bridges.json
@@ -0,0 +1,63 @@
+[
+  {
+    "commit": {
+      "author_email": "admin@example.com",
+      "author_name": "Administrator",
+      "created_at": "2015-12-24T16:51:14.000+01:00",
+      "id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+      "message": "Test the CI integration.",
+      "short_id": "0ff3ae19",
+      "title": "Test the CI integration."
+    },
+    "coverage": null,
+    "allow_failure": false,
+    "created_at": "2015-12-24T15:51:21.802Z",
+    "started_at": "2015-12-24T17:54:27.722Z",
+    "finished_at": "2015-12-24T17:58:27.895Z",
+    "duration": 240,
+    "queued_duration": 0.123,
+    "id": 7,
+    "name": "teaspoon",
+    "pipeline": {
+      "id": 6,
+      "project_id": 1,
+      "ref": "main",
+      "sha": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+      "status": "pending",
+      "created_at": "2015-12-24T15:50:16.123Z",
+      "updated_at": "2015-12-24T18:00:44.432Z",
+      "web_url": "https://example.com/foo/bar/pipelines/6"
+    },
+    "ref": "main",
+    "stage": "test",
+    "status": "pending",
+    "tag": false,
+    "web_url": "https://example.com/foo/bar/-/jobs/7",
+    "user": {
+      "id": 1,
+      "name": "Administrator",
+      "username": "root",
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+      "web_url": "http://gitlab.dev/root",
+      "created_at": "2015-12-21T13:14:24.077Z",
+      "bio": null,
+      "location": null,
+      "public_email": "",
+      "skype": "",
+      "linkedin": "",
+      "twitter": "",
+      "website_url": "",
+      "organization": ""
+    },
+    "downstream_pipeline": {
+      "id": 5,
+      "sha": "f62a4b2fb89754372a346f24659212eb8da13601",
+      "ref": "main",
+      "status": "pending",
+      "created_at": "2015-12-24T17:54:27.722Z",
+      "updated_at": "2015-12-24T17:58:27.896Z",
+      "web_url": "https://example.com/diaspora/diaspora-client/pipelines/5"
+    }
+  }
+]
diff --git a/data/api/jobs/pipeline-jobs.json b/data/api/jobs/pipeline-jobs.json
new file mode 100644
--- /dev/null
+++ b/data/api/jobs/pipeline-jobs.json
@@ -0,0 +1,123 @@
+[
+  {
+    "commit": {
+      "author_email": "admin@example.com",
+      "author_name": "Administrator",
+      "created_at": "2015-12-24T16:51:14.000+01:00",
+      "id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+      "message": "Test the CI integration.",
+      "short_id": "0ff3ae19",
+      "title": "Test the CI integration."
+    },
+    "coverage": null,
+    "allow_failure": false,
+    "created_at": "2015-12-24T15:51:21.727Z",
+    "started_at": "2015-12-24T17:54:24.729Z",
+    "finished_at": "2015-12-24T17:54:24.921Z",
+    "duration": 0.192,
+    "queued_duration": 0.023,
+    "artifacts_expire_at": "2016-01-23T17:54:24.921Z",
+    "tag_list": [
+      "docker runner", "ubuntu18"
+    ],
+    "id": 6,
+    "name": "rspec:other",
+    "pipeline": {
+      "id": 6,
+      "project_id": 1,
+      "ref": "main",
+      "sha": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+      "status": "pending"
+    },
+    "ref": "main",
+    "artifacts": [],
+    "runner": null,
+    "stage": "test",
+    "status": "failed",
+    "failure_reason": "stuck_or_timeout_failure",
+    "tag": false,
+    "web_url": "https://example.com/foo/bar/-/jobs/6",
+    "user": {
+      "id": 1,
+      "name": "Administrator",
+      "username": "root",
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+      "web_url": "http://gitlab.dev/root",
+      "created_at": "2015-12-21T13:14:24.077Z",
+      "bio": null,
+      "location": null,
+      "public_email": "",
+      "skype": "",
+      "linkedin": "",
+      "twitter": "",
+      "website_url": "",
+      "organization": ""
+    }
+  },
+  {
+    "commit": {
+      "author_email": "admin@example.com",
+      "author_name": "Administrator",
+      "created_at": "2015-12-24T16:51:14.000+01:00",
+      "id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+      "message": "Test the CI integration.",
+      "short_id": "0ff3ae19",
+      "title": "Test the CI integration."
+    },
+    "coverage": null,
+    "allow_failure": false,
+    "created_at": "2015-12-24T15:51:21.802Z",
+    "started_at": "2015-12-24T17:54:27.722Z",
+    "finished_at": "2015-12-24T17:54:27.895Z",
+    "duration": 0.173,
+    "queued_duration": 0.023,
+    "artifacts_file": {
+      "filename": "artifacts.zip",
+      "size": 1000
+    },
+    "artifacts": [
+      {"file_type": "archive", "size": 1000, "filename": "artifacts.zip", "file_format": "zip"},
+      {"file_type": "metadata", "size": 186, "filename": "metadata.gz", "file_format": "gzip"},
+      {"file_type": "trace", "size": 1500, "filename": "job.log", "file_format": "raw"},
+      {"file_type": "junit", "size": 750, "filename": "junit.xml.gz", "file_format": "gzip"}
+    ],
+    "artifacts_expire_at": "2016-01-23T17:54:27.895Z",
+    "tag_list": [
+      "docker runner", "ubuntu18"
+    ],
+    "id": 7,
+    "name": "teaspoon",
+    "pipeline": {
+      "id": 6,
+      "project_id": 1,
+      "ref": "main",
+      "sha": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+      "status": "pending"
+    },
+    "ref": "main",
+    "runner": null,
+    "stage": "test",
+    "status": "failed",
+    "failure_reason": "script_failure",
+    "tag": false,
+    "web_url": "https://example.com/foo/bar/-/jobs/7",
+    "user": {
+      "id": 1,
+      "name": "Administrator",
+      "username": "root",
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+      "web_url": "http://gitlab.dev/root",
+      "created_at": "2015-12-21T13:14:24.077Z",
+      "bio": null,
+      "location": null,
+      "public_email": "",
+      "skype": "",
+      "linkedin": "",
+      "twitter": "",
+      "website_url": "",
+      "organization": ""
+    }
+  }
+]
diff --git a/data/api/jobs/play-job.json b/data/api/jobs/play-job.json
new file mode 100644
--- /dev/null
+++ b/data/api/jobs/play-job.json
@@ -0,0 +1,28 @@
+{
+  "commit": {
+    "author_email": "admin@example.com",
+    "author_name": "Administrator",
+    "created_at": "2015-12-24T16:51:14.000+01:00",
+    "id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+    "message": "Test the CI integration.",
+    "short_id": "0ff3ae19",
+    "title": "Test the CI integration."
+  },
+  "coverage": null,
+  "allow_failure": false,
+  "created_at": "2016-01-11T10:13:33.506Z",
+  "started_at": null,
+  "finished_at": null,
+  "duration": null,
+  "queued_duration": 0.010,
+  "id": 42,
+  "name": "rubocop",
+  "ref": "main",
+  "artifacts": [],
+  "runner": null,
+  "stage": "test",
+  "status": "pending",
+  "tag": false,
+  "web_url": "https://example.com/foo/bar/-/jobs/42",
+  "user": null
+}
diff --git a/data/api/jobs/project-jobs.json b/data/api/jobs/project-jobs.json
new file mode 100644
--- /dev/null
+++ b/data/api/jobs/project-jobs.json
@@ -0,0 +1,123 @@
+[
+  {
+    "commit": {
+      "author_email": "admin@example.com",
+      "author_name": "Administrator",
+      "created_at": "2015-12-24T16:51:14.000+01:00",
+      "id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+      "message": "Test the CI integration.",
+      "short_id": "0ff3ae19",
+      "title": "Test the CI integration."
+    },
+    "coverage": null,
+    "allow_failure": false,
+    "created_at": "2015-12-24T15:51:21.802Z",
+    "started_at": "2015-12-24T17:54:27.722Z",
+    "finished_at": "2015-12-24T17:54:27.895Z",
+    "duration": 0.173,
+    "queued_duration": 0.010,
+    "artifacts_file": {
+      "filename": "artifacts.zip",
+      "size": 1000
+    },
+    "artifacts": [
+      {"file_type": "archive", "size": 1000, "filename": "artifacts.zip", "file_format": "zip"},
+      {"file_type": "metadata", "size": 186, "filename": "metadata.gz", "file_format": "gzip"},
+      {"file_type": "trace", "size": 1500, "filename": "job.log", "file_format": "raw"},
+      {"file_type": "junit", "size": 750, "filename": "junit.xml.gz", "file_format": "gzip"}
+    ],
+    "artifacts_expire_at": "2016-01-23T17:54:27.895Z",
+    "tag_list": [
+      "docker runner", "ubuntu18"
+    ],
+    "id": 7,
+    "name": "teaspoon",
+    "pipeline": {
+      "id": 6,
+      "project_id": 1,
+      "ref": "main",
+      "sha": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+      "status": "pending"
+    },
+    "ref": "main",
+    "runner": null,
+    "stage": "test",
+    "status": "failed",
+    "failure_reason": "script_failure",
+    "tag": false,
+    "web_url": "https://example.com/foo/bar/-/jobs/7",
+    "user": {
+      "id": 1,
+      "name": "Administrator",
+      "username": "root",
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+      "web_url": "http://gitlab.dev/root",
+      "created_at": "2015-12-21T13:14:24.077Z",
+      "bio": null,
+      "location": null,
+      "public_email": "",
+      "skype": "",
+      "linkedin": "",
+      "twitter": "",
+      "website_url": "",
+      "organization": ""
+    }
+  },
+  {
+    "commit": {
+      "author_email": "admin@example.com",
+      "author_name": "Administrator",
+      "created_at": "2015-12-24T16:51:14.000+01:00",
+      "id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+      "message": "Test the CI integration.",
+      "short_id": "0ff3ae19",
+      "title": "Test the CI integration."
+    },
+    "coverage": null,
+    "allow_failure": false,
+    "created_at": "2015-12-24T15:51:21.727Z",
+    "started_at": "2015-12-24T17:54:24.729Z",
+    "finished_at": "2015-12-24T17:54:24.921Z",
+    "duration": 0.192,
+    "queued_duration": 0.023,
+    "artifacts_expire_at": "2016-01-23T17:54:24.921Z",
+    "tag_list": [
+      "docker runner", "win10-2004"
+    ],
+    "id": 6,
+    "name": "rspec:other",
+    "pipeline": {
+      "id": 6,
+      "project_id": 1,
+      "ref": "main",
+      "sha": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+      "status": "pending"
+    },
+    "ref": "main",
+    "artifacts": [],
+    "runner": null,
+    "stage": "test",
+    "status": "failed",
+    "failure_reason": "stuck_or_timeout_failure",
+    "tag": false,
+    "web_url": "https://example.com/foo/bar/-/jobs/6",
+    "user": {
+      "id": 1,
+      "name": "Administrator",
+      "username": "root",
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+      "web_url": "http://gitlab.dev/root",
+      "created_at": "2015-12-21T13:14:24.077Z",
+      "bio": null,
+      "location": null,
+      "public_email": "",
+      "skype": "",
+      "linkedin": "",
+      "twitter": "",
+      "website_url": "",
+      "organization": ""
+    }
+  }
+]
diff --git a/data/api/jobs/retry-job.json b/data/api/jobs/retry-job.json
new file mode 100644
--- /dev/null
+++ b/data/api/jobs/retry-job.json
@@ -0,0 +1,28 @@
+{
+  "commit": {
+    "author_email": "admin@example.com",
+    "author_name": "Administrator",
+    "created_at": "2015-12-24T16:51:14.000+01:00",
+    "id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+    "message": "Test the CI integration.",
+    "short_id": "0ff3ae19",
+    "title": "Test the CI integration."
+  },
+  "coverage": null,
+  "allow_failure": false,
+  "created_at": "2016-01-11T10:13:33.506Z",
+  "started_at": null,
+  "finished_at": null,
+  "duration": null,
+  "queued_duration": 0.010,
+  "id": 42,
+  "name": "rubocop",
+  "ref": "main",
+  "artifacts": [],
+  "runner": null,
+  "stage": "test",
+  "status": "pending",
+  "tag": false,
+  "web_url": "https://example.com/foo/bar/-/jobs/42",
+  "user": null
+}
diff --git a/data/api/jobs/single-job.json b/data/api/jobs/single-job.json
new file mode 100644
--- /dev/null
+++ b/data/api/jobs/single-job.json
@@ -0,0 +1,55 @@
+{
+  "commit": {
+    "author_email": "admin@example.com",
+    "author_name": "Administrator",
+    "created_at": "2015-12-24T16:51:14.000+01:00",
+    "id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+    "message": "Test the CI integration.",
+    "short_id": "0ff3ae19",
+    "title": "Test the CI integration."
+  },
+  "coverage": null,
+  "allow_failure": false,
+  "created_at": "2015-12-24T15:51:21.88Z",
+  "started_at": "2015-12-24T17:54:30.733Z",
+  "finished_at": "2015-12-24T17:54:31.198Z",
+  "duration": 0.465,
+  "queued_duration": 0.010,
+  "artifacts_expire_at": "2016-01-23T17:54:31.198Z",
+  "tag_list": [
+      "docker runner", "macos-10.15"
+    ],
+  "id": 8,
+  "name": "rubocop",
+  "pipeline": {
+    "id": 6,
+    "project_id": 1,
+    "ref": "main",
+    "sha": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
+    "status": "pending"
+  },
+  "ref": "main",
+  "artifacts": [],
+  "runner": null,
+  "stage": "test",
+  "status": "failed",
+  "tag": false,
+  "web_url": "https://example.com/foo/bar/-/jobs/8",
+  "user": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "root",
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+    "web_url": "http://gitlab.dev/root",
+    "created_at": "2015-12-21T13:14:24.077Z",
+    "bio": null,
+    "location": null,
+    "public_email": "",
+    "skype": "",
+    "linkedin": "",
+    "twitter": "",
+    "website_url": "",
+    "organization": ""
+  }
+}
diff --git a/data/api/members/add-member-group-project.json b/data/api/members/add-member-group-project.json
new file mode 100644
--- /dev/null
+++ b/data/api/members/add-member-group-project.json
@@ -0,0 +1,12 @@
+{
+  "id": 1,
+  "username": "raymond_smith",
+  "name": "Raymond Smith",
+  "state": "active",
+  "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
+  "web_url": "http://192.168.1.8:3000/root",
+  "expires_at": "2012-10-22T14:13:35Z",
+  "access_level": 30,
+  "email": "john@example.com",
+  "group_saml_identity": null
+}
diff --git a/data/api/members/billable-members-of-group.json b/data/api/members/billable-members-of-group.json
new file mode 100644
--- /dev/null
+++ b/data/api/members/billable-members-of-group.json
@@ -0,0 +1,39 @@
+[
+  {
+    "id": 1,
+    "username": "raymond_smith",
+    "name": "Raymond Smith",
+    "state": "active",
+    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
+    "web_url": "http://192.168.1.8:3000/root",
+    "last_activity_on": "2021-01-27",
+    "membership_type": "group_member",
+    "removable": true,
+    "created_at": "2021-01-03T12:16:02Z"
+  },
+  {
+    "id": 2,
+    "username": "john_doe",
+    "name": "John Doe",
+    "state": "active",
+    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
+    "web_url": "http://192.168.1.8:3000/root",
+    "email": "john@example.com",
+    "last_activity_on": "2021-01-25",
+    "membership_type": "group_member",
+    "removable": true,
+    "created_at": "2021-01-04T18:46:42Z"
+  },
+  {
+    "id": 3,
+    "username": "foo_bar",
+    "name": "Foo bar",
+    "state": "active",
+    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
+    "web_url": "http://192.168.1.8:3000/root",
+    "last_activity_on": "2021-01-20",
+    "membership_type": "group_invite",
+    "removable": false,
+    "created_at": "2021-01-09T07:12:31Z"
+  }
+]
diff --git a/data/api/members/edit-member-group-project.json b/data/api/members/edit-member-group-project.json
new file mode 100644
--- /dev/null
+++ b/data/api/members/edit-member-group-project.json
@@ -0,0 +1,12 @@
+{
+  "id": 1,
+  "username": "raymond_smith",
+  "name": "Raymond Smith",
+  "state": "active",
+  "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
+  "web_url": "http://192.168.1.8:3000/root",
+  "expires_at": "2012-10-22T14:13:35Z",
+  "access_level": 40,
+  "email": "john@example.com",
+  "group_saml_identity": null
+}
diff --git a/data/api/members/list-all-memembers-group-or-project-including-inherited-invited.json b/data/api/members/list-all-memembers-group-or-project-including-inherited-invited.json
new file mode 100644
--- /dev/null
+++ b/data/api/members/list-all-memembers-group-or-project-including-inherited-invited.json
@@ -0,0 +1,43 @@
+[
+  {
+    "id": 1,
+    "username": "raymond_smith",
+    "name": "Raymond Smith",
+    "state": "active",
+    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
+    "web_url": "http://192.168.1.8:3000/root",
+    "expires_at": "2012-10-22T14:13:35Z",
+    "access_level": 30,
+    "group_saml_identity": null,
+    "membership_state": "active"
+  },
+  {
+    "id": 2,
+    "username": "john_doe",
+    "name": "John Doe",
+    "state": "active",
+    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
+    "web_url": "http://192.168.1.8:3000/root",
+    "expires_at": "2012-10-22T14:13:35Z",
+    "access_level": 30,
+    "email": "john@example.com",
+    "group_saml_identity": {
+      "extern_uid":"ABC-1234567890",
+      "provider": "group_saml",
+      "saml_provider_id": 10
+    },
+    "membership_state": "active"
+  },
+  {
+    "id": 3,
+    "username": "foo_bar",
+    "name": "Foo bar",
+    "state": "active",
+    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
+    "web_url": "http://192.168.1.8:3000/root",
+    "expires_at": "2012-11-22T14:13:35Z",
+    "access_level": 30,
+    "group_saml_identity": null,
+    "membership_state": "active"
+  }
+]
diff --git a/data/api/members/list-all-memembers-group-or-project.json b/data/api/members/list-all-memembers-group-or-project.json
new file mode 100644
--- /dev/null
+++ b/data/api/members/list-all-memembers-group-or-project.json
@@ -0,0 +1,31 @@
+[
+  {
+    "id": 1,
+    "username": "raymond_smith",
+    "name": "Raymond Smith",
+    "state": "active",
+    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
+    "web_url": "http://192.168.1.8:3000/root",
+    "expires_at": "2012-10-22T14:13:35Z",
+    "access_level": 30,
+    "group_saml_identity": null,
+    "membership_state": "active"
+  },
+  {
+    "id": 2,
+    "username": "john_doe",
+    "name": "John Doe",
+    "state": "active",
+    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
+    "web_url": "http://192.168.1.8:3000/root",
+    "expires_at": "2012-10-22T14:13:35Z",
+    "access_level": 30,
+    "email": "john@example.com",
+    "group_saml_identity": {
+      "extern_uid":"ABC-1234567890",
+      "provider": "group_saml",
+      "saml_provider_id": 10
+    },
+    "membership_state": "active"
+  }
+]
diff --git a/data/api/members/list-pending-members.json b/data/api/members/list-pending-members.json
new file mode 100644
--- /dev/null
+++ b/data/api/members/list-pending-members.json
@@ -0,0 +1,26 @@
+[
+  {
+    "id": 168,
+    "name": "Alex Garcia",
+    "username": "alex_garcia",
+    "email": "alex@example.com",
+    "avatar_url": "http://example.com/uploads/user/avatar/1/cd8.jpeg",
+    "web_url": "http://example.com/alex_garcia",
+    "approved": false,
+    "invited": false
+  },
+  {
+    "id": 169,
+    "email": "sidney@example.com",
+    "avatar_url": "http://gravatar.com/../e346561cd8.jpeg",
+    "approved": false,
+    "invited": true
+  },
+  {
+    "id": 170,
+    "email": "zhang@example.com",
+    "avatar_url": "http://gravatar.com/../e32131cd8.jpeg",
+    "approved": true,
+    "invited": true
+  }
+]
diff --git a/data/api/members/member-group-or-project-including-inherited-invited.json b/data/api/members/member-group-or-project-including-inherited-invited.json
new file mode 100644
--- /dev/null
+++ b/data/api/members/member-group-or-project-including-inherited-invited.json
@@ -0,0 +1,13 @@
+{
+  "id": 1,
+  "username": "raymond_smith",
+  "name": "Raymond Smith",
+  "state": "active",
+  "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
+  "web_url": "http://192.168.1.8:3000/root",
+  "access_level": 30,
+  "email": "john@example.com",
+  "expires_at": null,
+  "group_saml_identity": null,
+  "membership_state": "active"
+}
diff --git a/data/api/members/member-group-or-project.json b/data/api/members/member-group-or-project.json
new file mode 100644
--- /dev/null
+++ b/data/api/members/member-group-or-project.json
@@ -0,0 +1,14 @@
+{
+  "id": 1,
+  "username": "raymond_smith",
+  "name": "Raymond Smith",
+  "state": "active",
+  "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
+  "web_url": "http://192.168.1.8:3000/root",
+  "access_level": 30,
+  "email": "john@example.com",
+  "created_at": "2012-10-22T14:13:35Z",
+  "expires_at": null,
+  "group_saml_identity": null,
+  "membership_state": "active"
+}
diff --git a/data/api/members/membership-billable-member-of-group.json b/data/api/members/membership-billable-member-of-group.json
new file mode 100644
--- /dev/null
+++ b/data/api/members/membership-billable-member-of-group.json
@@ -0,0 +1,26 @@
+[
+  {
+    "id": 168,
+    "source_id": 131,
+    "source_full_name": "Root Group / Sub Group One",
+    "source_members_url": "https://gitlab.example.com/groups/root-group/sub-group-one/-/group_members",
+    "created_at": "2021-03-31T17:28:44.812Z",
+    "expires_at": "2022-03-21",
+    "access_level": {
+      "string_value": "Developer",
+      "integer_value": 30
+    }
+  },
+  {
+    "id": 169,
+    "source_id": 63,
+    "source_full_name": "Root Group / Sub Group One / My Project",
+    "source_members_url": "https://gitlab.example.com/root-group/sub-group-one/my-project/-/project_members",
+    "created_at": "2021-03-31T17:29:14.934Z",
+    "expires_at": null,
+    "access_level": {
+      "string_value": "Maintainer",
+      "integer_value": 40
+    }
+  }
+]
diff --git a/data/api/members/override-flag-member-group.json b/data/api/members/override-flag-member-group.json
new file mode 100644
--- /dev/null
+++ b/data/api/members/override-flag-member-group.json
@@ -0,0 +1,12 @@
+{
+  "id": 1,
+  "username": "raymond_smith",
+  "name": "Raymond Smith",
+  "state": "active",
+  "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
+  "web_url": "http://192.168.1.8:3000/root",
+  "expires_at": "2012-10-22T14:13:35Z",
+  "access_level": 40,
+  "email": "john@example.com",
+  "override": true
+}
diff --git a/data/api/members/removed-override-flag-member-group.json b/data/api/members/removed-override-flag-member-group.json
new file mode 100644
--- /dev/null
+++ b/data/api/members/removed-override-flag-member-group.json
@@ -0,0 +1,12 @@
+{
+  "id": 1,
+  "username": "raymond_smith",
+  "name": "Raymond Smith",
+  "state": "active",
+  "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
+  "web_url": "http://192.168.1.8:3000/root",
+  "expires_at": "2012-10-22",
+  "access_level": 40,
+  "email": "john@example.com",
+  "override": false
+}
diff --git a/data/api/merge-requests/accept-merge-request.json b/data/api/merge-requests/accept-merge-request.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/accept-merge-request.json
@@ -0,0 +1,125 @@
+{
+  "id": 1,
+  "iid": 1,
+  "project_id": 3,
+  "title": "test1",
+  "description": "fixed login page css paddings",
+  "state": "merged",
+  "created_at": "2017-04-29T08:46:00Z",
+  "updated_at": "2017-04-29T08:46:00Z",
+  "target_branch": "master",
+  "source_branch": "test1",
+  "upvotes": 0,
+  "downvotes": 0,
+  "author": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "admin",
+    "state": "active",
+    "avatar_url": null,
+    "web_url" : "https://gitlab.example.com/admin"
+  },
+  "assignee": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "admin",
+    "state": "active",
+    "avatar_url": null,
+    "web_url" : "https://gitlab.example.com/admin"
+  },
+  "assignees": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "reviewers": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "source_project_id": 2,
+  "target_project_id": 3,
+  "labels": [
+    "Community contribution",
+    "Manage"
+  ],
+  "draft": false,
+  "work_in_progress": false,
+  "milestone": {
+    "id": 5,
+    "iid": 1,
+    "project_id": 3,
+    "title": "v2.0",
+    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
+    "state": "closed",
+    "created_at": "2015-02-02T19:49:26.013Z",
+    "updated_at": "2015-02-02T19:49:26.013Z",
+    "due_date": "2018-09-22",
+    "start_date": "2018-08-08",
+    "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
+  },
+  "merge_when_pipeline_succeeds": true,
+  "merge_status": "can_be_merged",
+  "merge_error": null,
+  "sha": "8888888888888888888888888888888888888888",
+  "merge_commit_sha": null,
+  "squash_commit_sha": null,
+  "user_notes_count": 1,
+  "discussion_locked": null,
+  "should_remove_source_branch": true,
+  "force_remove_source_branch": false,
+  "allow_collaboration": false,
+  "allow_maintainer_to_push": false,
+  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
+  "references": {
+    "short": "!1",
+    "relative": "!1",
+    "full": "my-group/my-project!1"
+  },
+  "time_stats": {
+    "time_estimate": 0,
+    "total_time_spent": 0,
+    "human_time_estimate": null,
+    "human_total_time_spent": null
+  },
+  "squash": false,
+  "subscribed": false,
+  "changes_count": "1",
+  "merged_by": {
+    "id": 87854,
+    "name": "Douwe Maan",
+    "username": "DouweM",
+    "state": "active",
+    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
+    "web_url": "https://gitlab.com/DouweM"
+  },
+  "merged_at": "2018-09-07T11:16:17.52Z",
+  "closed_by": null,
+  "closed_at": null,
+  "latest_build_started_at": "2018-09-07T07:27:38.472Z",
+  "latest_build_finished_at": "2018-09-07T08:07:06.012Z",
+  "first_deployed_to_production_at": null,
+  "pipeline": {
+    "id": 29626725,
+    "sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
+    "ref": "patch-28",
+    "status": "success",
+    "web_url": "https://gitlab.example.com/my-group/my-project/pipelines/29626725"
+  },
+  "diff_refs": {
+    "base_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00",
+    "head_sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
+    "start_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00"
+  },
+  "diverged_commits_count": 2,
+  "task_completion_status":{
+    "count":0,
+    "completed_count":0
+  }
+}
diff --git a/data/api/merge-requests/add-spent-time-merge-request.json b/data/api/merge-requests/add-spent-time-merge-request.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/add-spent-time-merge-request.json
@@ -0,0 +1,6 @@
+{
+  "human_time_estimate": null,
+  "human_total_time_spent": "1h",
+  "time_estimate": 0,
+  "total_time_spent": 3600
+}
diff --git a/data/api/merge-requests/cancel-merge-request-when-pipeline-succeeds.json b/data/api/merge-requests/cancel-merge-request-when-pipeline-succeeds.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/cancel-merge-request-when-pipeline-succeeds.json
@@ -0,0 +1,125 @@
+{
+  "id": 1,
+  "iid": 1,
+  "project_id": 3,
+  "title": "test1",
+  "description": "fixed login page css paddings",
+  "state": "merged",
+  "created_at": "2017-04-29T08:46:00Z",
+  "updated_at": "2017-04-29T08:46:00Z",
+  "target_branch": "master",
+  "source_branch": "test1",
+  "upvotes": 0,
+  "downvotes": 0,
+  "author": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "admin",
+    "state": "active",
+    "avatar_url": null,
+    "web_url" : "https://gitlab.example.com/admin"
+  },
+  "assignee": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "admin",
+    "state": "active",
+    "avatar_url": null,
+    "web_url" : "https://gitlab.example.com/admin"
+  },
+  "assignees": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "reviewers": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "source_project_id": 2,
+  "target_project_id": 3,
+  "labels": [
+    "Community contribution",
+    "Manage"
+  ],
+  "draft": false,
+  "work_in_progress": false,
+  "milestone": {
+    "id": 5,
+    "iid": 1,
+    "project_id": 3,
+    "title": "v2.0",
+    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
+    "state": "closed",
+    "created_at": "2015-02-02T19:49:26.013Z",
+    "updated_at": "2015-02-02T19:49:26.013Z",
+    "due_date": "2018-09-22",
+    "start_date": "2018-08-08",
+    "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
+  },
+  "merge_when_pipeline_succeeds": false,
+  "merge_status": "can_be_merged",
+  "merge_error": null,
+  "sha": "8888888888888888888888888888888888888888",
+  "merge_commit_sha": null,
+  "squash_commit_sha": null,
+  "user_notes_count": 1,
+  "discussion_locked": null,
+  "should_remove_source_branch": true,
+  "force_remove_source_branch": false,
+  "allow_collaboration": false,
+  "allow_maintainer_to_push": false,
+  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
+  "references": {
+    "short": "!1",
+    "relative": "!1",
+    "full": "my-group/my-project!1"
+  },
+  "time_stats": {
+    "time_estimate": 0,
+    "total_time_spent": 0,
+    "human_time_estimate": null,
+    "human_total_time_spent": null
+  },
+  "squash": false,
+  "subscribed": false,
+  "changes_count": "1",
+  "merged_by": {
+    "id": 87854,
+    "name": "Douwe Maan",
+    "username": "DouweM",
+    "state": "active",
+    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
+    "web_url": "https://gitlab.com/DouweM"
+  },
+  "merged_at": "2018-09-07T11:16:17.52Z",
+  "closed_by": null,
+  "closed_at": null,
+  "latest_build_started_at": "2018-09-07T07:27:38.472Z",
+  "latest_build_finished_at": "2018-09-07T08:07:06.012Z",
+  "first_deployed_to_production_at": null,
+  "pipeline": {
+    "id": 29626725,
+    "sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
+    "ref": "patch-28",
+    "status": "success",
+    "web_url": "https://gitlab.example.com/my-group/my-project/pipelines/29626725"
+  },
+  "diff_refs": {
+    "base_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00",
+    "head_sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
+    "start_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00"
+  },
+  "diverged_commits_count": 2,
+  "task_completion_status":{
+    "count":0,
+    "completed_count":0
+  }
+}
diff --git a/data/api/merge-requests/comments-on-merge-requests.json b/data/api/merge-requests/comments-on-merge-requests.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/comments-on-merge-requests.json
@@ -0,0 +1,42 @@
+[
+   {
+      "state" : "opened",
+      "description" : "Ratione dolores corrupti mollitia soluta quia.",
+      "author" : {
+         "state" : "active",
+         "id" : 18,
+         "web_url" : "https://gitlab.example.com/eileen.lowe",
+         "name" : "Alexandra Bashirian",
+         "avatar_url" : null,
+         "username" : "eileen.lowe"
+      },
+      "milestone" : {
+         "project_id" : 1,
+         "description" : "Ducimus nam enim ex consequatur cumque ratione.",
+         "state" : "closed",
+         "due_date" : null,
+         "iid" : 2,
+         "created_at" : "2016-01-04T15:31:39.996Z",
+         "title" : "v4.0",
+         "id" : 17,
+         "updated_at" : "2016-01-04T15:31:39.996Z"
+      },
+      "project_id" : 1,
+      "assignee" : {
+         "state" : "active",
+         "id" : 1,
+         "name" : "Administrator",
+         "web_url" : "https://gitlab.example.com/root",
+         "avatar_url" : null,
+         "username" : "root"
+      },
+      "updated_at" : "2016-01-04T15:31:51.081Z",
+      "id" : 76,
+      "title" : "Consequatur vero maxime deserunt laboriosam est voluptas dolorem.",
+      "created_at" : "2016-01-04T15:31:51.081Z",
+      "iid" : 6,
+      "labels" : [],
+      "user_notes_count": 1,
+      "changes_count": "1"
+   }
+]
diff --git a/data/api/merge-requests/create-merge-request-pipeline.json b/data/api/merge-requests/create-merge-request-pipeline.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/create-merge-request-pipeline.json
@@ -0,0 +1,36 @@
+{
+  "id": 2,
+  "sha": "b83d6e391c22777fca1ed3012fce84f633d7fed0",
+  "ref": "refs/merge-requests/1/head",
+  "status": "pending",
+  "web_url": "http://localhost/user1/project1/pipelines/2",
+  "before_sha": "0000000000000000000000000000000000000000",
+  "tag": false,
+  "yaml_errors": null,
+  "user": {
+    "id": 1,
+    "name": "John Doe1",
+    "username": "user1",
+    "state": "active",
+    "avatar_url": "https://www.gravatar.com/avatar/c922747a93b40d1ea88262bf1aebee62?s=80&d=identicon",
+    "web_url": "http://example.com"
+  },
+  "created_at": "2019-09-04T19:20:18.267Z",
+  "updated_at": "2019-09-04T19:20:18.459Z",
+  "started_at": null,
+  "finished_at": null,
+  "committed_at": null,
+  "duration": null,
+  "coverage": null,
+  "detailed_status": {
+    "icon": "status_pending",
+    "text": "pending",
+    "label": "pending",
+    "group": "pending",
+    "tooltip": "pending",
+    "has_details": false,
+    "details_path": "/user1/project1/pipelines/2",
+    "illustration": null,
+    "favicon": "/assets/ci_favicons/favicon_status_pending-5bdf338420e5221ca24353b6bff1c9367189588750632e9a871b7af09ff6a2ae.png"
+  }
+}
diff --git a/data/api/merge-requests/create-merge-request.json b/data/api/merge-requests/create-merge-request.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/create-merge-request.json
@@ -0,0 +1,109 @@
+{
+  "id": 1,
+  "iid": 1,
+  "project_id": 3,
+  "title": "test1",
+  "description": "fixed login page css paddings",
+  "state": "merged",
+  "created_at": "2017-04-29T08:46:00Z",
+  "updated_at": "2017-04-29T08:46:00Z",
+  "target_branch": "master",
+  "source_branch": "test1",
+  "upvotes": 0,
+  "downvotes": 0,
+  "author": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "admin",
+    "state": "active",
+    "avatar_url": null,
+    "web_url" : "https://gitlab.example.com/admin"
+  },
+  "assignee": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "admin",
+    "state": "active",
+    "avatar_url": null,
+    "web_url" : "https://gitlab.example.com/admin"
+  },
+  "source_project_id": 2,
+  "target_project_id": 3,
+  "labels": [
+    "Community contribution",
+    "Manage"
+  ],
+  "draft": false,
+  "work_in_progress": false,
+  "milestone": {
+    "id": 5,
+    "iid": 1,
+    "project_id": 3,
+    "title": "v2.0",
+    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
+    "state": "closed",
+    "created_at": "2015-02-02T19:49:26.013Z",
+    "updated_at": "2015-02-02T19:49:26.013Z",
+    "due_date": "2018-09-22",
+    "start_date": "2018-08-08",
+    "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
+  },
+  "merge_when_pipeline_succeeds": true,
+  "merge_status": "can_be_merged",
+  "merge_error": null,
+  "sha": "8888888888888888888888888888888888888888",
+  "merge_commit_sha": null,
+  "squash_commit_sha": null,
+  "user_notes_count": 1,
+  "discussion_locked": null,
+  "should_remove_source_branch": true,
+  "force_remove_source_branch": false,
+  "allow_collaboration": false,
+  "allow_maintainer_to_push": false,
+  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
+  "references": {
+    "short": "!1",
+    "relative": "!1",
+    "full": "my-group/my-project!1"
+  },
+  "time_stats": {
+    "time_estimate": 0,
+    "total_time_spent": 0,
+    "human_time_estimate": null,
+    "human_total_time_spent": null
+  },
+  "squash": false,
+  "subscribed": false,
+  "changes_count": "1",
+  "merged_by": {
+    "id": 87854,
+    "name": "Douwe Maan",
+    "username": "DouweM",
+    "state": "active",
+    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
+    "web_url": "https://gitlab.com/DouweM"
+  },
+  "merged_at": "2018-09-07T11:16:17.52Z",
+  "closed_by": null,
+  "closed_at": null,
+  "latest_build_started_at": "2018-09-07T07:27:38.472Z",
+  "latest_build_finished_at": "2018-09-07T08:07:06.012Z",
+  "first_deployed_to_production_at": null,
+  "pipeline": {
+    "id": 29626725,
+    "sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
+    "ref": "patch-28",
+    "status": "success",
+    "web_url": "https://gitlab.example.com/my-group/my-project/pipelines/29626725"
+  },
+  "diff_refs": {
+    "base_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00",
+    "head_sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
+    "start_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00"
+  },
+  "diverged_commits_count": 2,
+  "task_completion_status":{
+    "count":0,
+    "completed_count":0
+  }
+}
diff --git a/data/api/merge-requests/create-todo-item.json b/data/api/merge-requests/create-todo-item.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/create-todo-item.json
@@ -0,0 +1,104 @@
+{
+  "id": 113,
+  "project": {
+    "id": 3,
+    "name": "GitLab CI/CD",
+    "name_with_namespace": "GitLab Org / GitLab CI/CD",
+    "path": "gitlab-ci",
+    "path_with_namespace": "gitlab-org/gitlab-ci"
+  },
+  "author": {
+    "name": "Administrator",
+    "username": "root",
+    "id": 1,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/root"
+  },
+  "action_name": "marked",
+  "target_type": "MergeRequest",
+  "target": {
+    "id": 27,
+    "iid": 7,
+    "project_id": 3,
+    "title": "Et voluptas laudantium minus nihil recusandae ut accusamus earum aut non.",
+    "description": "Veniam sunt nihil modi earum cumque illum delectus. Nihil ad quis distinctio quia. Autem eligendi at quibusdam repellendus.",
+    "state": "merged",
+    "created_at": "2016-06-17T07:48:04.33Z",
+    "updated_at": "2016-07-01T11:14:15.537Z",
+    "target_branch": "allow_regex_for_project_skip_ref",
+    "source_branch": "backup",
+    "upvotes": 0,
+    "downvotes": 0,
+    "author": {
+      "name": "Jarret O'Keefe",
+      "username": "francisca",
+      "id": 14,
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/a7fa515d53450023c83d62986d0658a8?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/francisca",
+      "discussion_locked": false
+    },
+    "assignee": {
+      "name": "Dr. Gabrielle Strosin",
+      "username": "barrett.krajcik",
+      "id": 4,
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/733005fcd7e6df12d2d8580171ccb966?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/barrett.krajcik"
+    },
+    "assignees": [{
+      "name": "Miss Monserrate Beier",
+      "username": "axel.block",
+      "id": 12,
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/axel.block"
+    }],
+    "reviewers": [{
+      "name": "Miss Monserrate Beier",
+      "username": "axel.block",
+      "id": 12,
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/axel.block"
+    }],
+    "source_project_id": 3,
+    "target_project_id": 3,
+    "labels": [],
+    "draft": false,
+    "work_in_progress": false,
+    "milestone": {
+      "id": 27,
+      "iid": 2,
+      "project_id": 3,
+      "title": "v1.0",
+      "description": "Quis ea accusantium animi hic fuga assumenda.",
+      "state": "active",
+      "created_at": "2016-06-17T07:47:33.84Z",
+      "updated_at": "2016-06-17T07:47:33.84Z",
+      "due_date": null
+    },
+    "merge_when_pipeline_succeeds": false,
+    "merge_status": "unchecked",
+    "subscribed": true,
+    "sha": "8888888888888888888888888888888888888888",
+    "merge_commit_sha": null,
+    "squash_commit_sha": null,
+    "user_notes_count": 7,
+    "changes_count": "1",
+    "should_remove_source_branch": true,
+    "force_remove_source_branch": false,
+    "squash": false,
+    "web_url": "http://example.com/my-group/my-project/merge_requests/1",
+    "references": {
+      "short": "!1",
+      "relative": "!1",
+      "full": "my-group/my-project!1"
+    }
+  },
+  "target_url": "https://gitlab.example.com/gitlab-org/gitlab-ci/merge_requests/7",
+  "body": "Et voluptas laudantium minus nihil recusandae ut accusamus earum aut non.",
+  "state": "pending",
+  "created_at": "2016-07-01T11:14:15.53Z"
+}
diff --git a/data/api/merge-requests/get-merge-request-diff-versions.json b/data/api/merge-requests/get-merge-request-diff-versions.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/get-merge-request-diff-versions.json
@@ -0,0 +1,19 @@
+[{
+  "id": 110,
+  "head_commit_sha": "33e2ee8579fda5bc36accc9c6fbd0b4fefda9e30",
+  "base_commit_sha": "eeb57dffe83deb686a60a71c16c32f71046868fd",
+  "start_commit_sha": "eeb57dffe83deb686a60a71c16c32f71046868fd",
+  "created_at": "2016-07-26T14:44:48.926Z",
+  "merge_request_id": 105,
+  "state": "collected",
+  "real_size": "1"
+}, {
+  "id": 108,
+  "head_commit_sha": "3eed087b29835c48015768f839d76e5ea8f07a24",
+  "base_commit_sha": "eeb57dffe83deb686a60a71c16c32f71046868fd",
+  "start_commit_sha": "eeb57dffe83deb686a60a71c16c32f71046868fd",
+  "created_at": "2016-07-25T14:21:33.028Z",
+  "merge_request_id": 105,
+  "state": "collected",
+  "real_size": "1"
+}]
diff --git a/data/api/merge-requests/list-group-merge-requests.json b/data/api/merge-requests/list-group-merge-requests.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/list-group-merge-requests.json
@@ -0,0 +1,108 @@
+[
+  {
+    "id": 1,
+    "iid": 1,
+    "project_id": 3,
+    "title": "test1",
+    "description": "fixed login page css paddings",
+    "state": "merged",
+    "merged_by": {
+      "id": 87854,
+      "name": "Douwe Maan",
+      "username": "DouweM",
+      "state": "active",
+      "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
+      "web_url": "https://gitlab.com/DouweM"
+    },
+    "merged_at": "2018-09-07T11:16:17.52Z",
+    "closed_by": null,
+    "closed_at": null,
+    "created_at": "2017-04-29T08:46:00Z",
+    "updated_at": "2017-04-29T08:46:00Z",
+    "target_branch": "master",
+    "source_branch": "test1",
+    "upvotes": 0,
+    "downvotes": 0,
+    "author": {
+      "id": 1,
+      "name": "Administrator",
+      "username": "admin",
+      "state": "active",
+      "avatar_url": null,
+      "web_url" : "https://gitlab.example.com/admin"
+    },
+    "assignee": {
+      "id": 1,
+      "name": "Administrator",
+      "username": "admin",
+      "state": "active",
+      "avatar_url": null,
+      "web_url" : "https://gitlab.example.com/admin"
+    },
+    "assignees": [{
+      "name": "Miss Monserrate Beier",
+      "username": "axel.block",
+      "id": 12,
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/axel.block"
+    }],
+    "reviewers": [{
+      "id": 2,
+      "name": "Sam Bauch",
+      "username": "kenyatta_oconnell",
+      "state": "active",
+      "avatar_url": "https://www.gravatar.com/avatar/956c92487c6f6f7616b536927e22c9a0?s=80&d=identicon",
+      "web_url": "http://gitlab.example.com//kenyatta_oconnell"
+    }],
+    "source_project_id": 2,
+    "target_project_id": 3,
+    "labels": [
+      "Community contribution",
+      "Manage"
+    ],
+    "draft": false,
+    "work_in_progress": false,
+    "milestone": {
+      "id": 5,
+      "iid": 1,
+      "project_id": 3,
+      "title": "v2.0",
+      "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
+      "state": "closed",
+      "created_at": "2015-02-02T19:49:26.013Z",
+      "updated_at": "2015-02-02T19:49:26.013Z",
+      "due_date": "2018-10-22",
+      "start_date": "2018-09-08",
+      "web_url": "gitlab.example.com/my-group/my-project/milestones/1"
+    },
+    "merge_when_pipeline_succeeds": true,
+    "merge_status": "can_be_merged",
+    "sha": "8888888888888888888888888888888888888888",
+    "merge_commit_sha": null,
+    "squash_commit_sha": null,
+    "user_notes_count": 1,
+    "discussion_locked": null,
+    "should_remove_source_branch": true,
+    "force_remove_source_branch": false,
+    "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
+    "references": {
+      "short": "!1",
+      "relative": "my-project!1",
+      "full": "my-group/my-project!1"
+    },
+    "time_stats": {
+      "time_estimate": 0,
+      "total_time_spent": 0,
+      "human_time_estimate": null,
+      "human_total_time_spent": null
+    },
+    "squash": false,
+    "task_completion_status":{
+      "count":0,
+      "completed_count":0
+    },
+    "has_conflicts": false,
+    "blocking_discussions_resolved": true
+  }
+]
diff --git a/data/api/merge-requests/list-merge-request-pipelines.json b/data/api/merge-requests/list-merge-request-pipelines.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/list-merge-request-pipelines.json
@@ -0,0 +1,8 @@
+[
+  {
+    "id": 77,
+    "sha": "959e04d7c7a30600c894bd3c0cd0e1ce7f42c11d",
+    "ref": "master",
+    "status": "success"
+  }
+]
diff --git a/data/api/merge-requests/list-merge-requests.json b/data/api/merge-requests/list-merge-requests.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/list-merge-requests.json
@@ -0,0 +1,108 @@
+[
+  {
+    "id": 1,
+    "iid": 1,
+    "project_id": 3,
+    "title": "test1",
+    "description": "fixed login page css paddings",
+    "state": "merged",
+    "merged_by": {
+      "id": 87854,
+      "name": "Douwe Maan",
+      "username": "DouweM",
+      "state": "active",
+      "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
+      "web_url": "https://gitlab.com/DouweM"
+    },
+    "merged_at": "2018-09-07T11:16:17.52Z",
+    "closed_by": null,
+    "closed_at": null,
+    "created_at": "2017-04-29T08:46:00Z",
+    "updated_at": "2017-04-29T08:46:00Z",
+    "target_branch": "master",
+    "source_branch": "test1",
+    "upvotes": 0,
+    "downvotes": 0,
+    "author": {
+      "id": 1,
+      "name": "Administrator",
+      "username": "admin",
+      "state": "active",
+      "avatar_url": null,
+      "web_url" : "https://gitlab.example.com/admin"
+    },
+    "assignee": {
+      "id": 1,
+      "name": "Administrator",
+      "username": "admin",
+      "state": "active",
+      "avatar_url": null,
+      "web_url" : "https://gitlab.example.com/admin"
+    },
+    "assignees": [{
+      "name": "Miss Monserrate Beier",
+      "username": "axel.block",
+      "id": 12,
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/axel.block"
+    }],
+    "reviewers": [{
+      "id": 2,
+      "name": "Sam Bauch",
+      "username": "kenyatta_oconnell",
+      "state": "active",
+      "avatar_url": "https://www.gravatar.com/avatar/956c92487c6f6f7616b536927e22c9a0?s=80&d=identicon",
+      "web_url": "http://gitlab.example.com//kenyatta_oconnell"
+    }],
+    "source_project_id": 2,
+    "target_project_id": 3,
+    "labels": [
+      "Community contribution",
+      "Manage"
+    ],
+    "draft": false,
+    "work_in_progress": false,
+    "milestone": {
+      "id": 5,
+      "iid": 1,
+      "project_id": 3,
+      "title": "v2.0",
+      "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
+      "state": "closed",
+      "created_at": "2015-02-02T19:49:26.013Z",
+      "updated_at": "2015-02-02T19:49:26.013Z",
+      "due_date": "2018-09-22",
+      "start_date": "2018-08-08",
+      "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
+    },
+    "merge_when_pipeline_succeeds": true,
+    "merge_status": "can_be_merged",
+    "sha": "8888888888888888888888888888888888888888",
+    "merge_commit_sha": null,
+    "squash_commit_sha": null,
+    "user_notes_count": 1,
+    "discussion_locked": null,
+    "should_remove_source_branch": true,
+    "force_remove_source_branch": false,
+    "allow_collaboration": false,
+    "allow_maintainer_to_push": false,
+    "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
+    "references": {
+      "short": "!1",
+      "relative": "my-group/my-project!1",
+      "full": "my-group/my-project!1"
+    },
+    "time_stats": {
+      "time_estimate": 0,
+      "total_time_spent": 0,
+      "human_time_estimate": null,
+      "human_total_time_spent": null
+    },
+    "squash": false,
+    "task_completion_status":{
+      "count":0,
+      "completed_count":0
+    }
+  }
+]
diff --git a/data/api/merge-requests/list-project-merge-requests.json b/data/api/merge-requests/list-project-merge-requests.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/list-project-merge-requests.json
@@ -0,0 +1,110 @@
+[
+  {
+    "id": 1,
+    "iid": 1,
+    "project_id": 3,
+    "title": "test1",
+    "description": "fixed login page css paddings",
+    "state": "merged",
+    "merged_by": {
+      "id": 87854,
+      "name": "Douwe Maan",
+      "username": "DouweM",
+      "state": "active",
+      "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
+      "web_url": "https://gitlab.com/DouweM"
+    },
+    "merged_at": "2018-09-07T11:16:17.52Z",
+    "closed_by": null,
+    "closed_at": null,
+    "created_at": "2017-04-29T08:46:00Z",
+    "updated_at": "2017-04-29T08:46:00Z",
+    "target_branch": "master",
+    "source_branch": "test1",
+    "upvotes": 0,
+    "downvotes": 0,
+    "author": {
+      "id": 1,
+      "name": "Administrator",
+      "username": "admin",
+      "state": "active",
+      "avatar_url": null,
+      "web_url" : "https://gitlab.example.com/admin"
+    },
+    "assignee": {
+      "id": 1,
+      "name": "Administrator",
+      "username": "admin",
+      "state": "active",
+      "avatar_url": null,
+      "web_url" : "https://gitlab.example.com/admin"
+    },
+    "assignees": [{
+      "name": "Miss Monserrate Beier",
+      "username": "axel.block",
+      "id": 12,
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/axel.block"
+    }],
+    "reviewers": [{
+      "id": 2,
+      "name": "Sam Bauch",
+      "username": "kenyatta_oconnell",
+      "state": "active",
+      "avatar_url": "https://www.gravatar.com/avatar/956c92487c6f6f7616b536927e22c9a0?s=80&d=identicon",
+      "web_url": "http://gitlab.example.com//kenyatta_oconnell"
+    }],
+    "source_project_id": 2,
+    "target_project_id": 3,
+    "labels": [
+      "Community contribution",
+      "Manage"
+    ],
+    "draft": false,
+    "work_in_progress": false,
+    "milestone": {
+      "id": 5,
+      "iid": 1,
+      "project_id": 3,
+      "title": "v2.0",
+      "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
+      "state": "closed",
+      "created_at": "2015-02-02T19:49:26.013Z",
+      "updated_at": "2015-02-02T19:49:26.013Z",
+      "due_date": "2018-09-22",
+      "start_date": "2018-08-08",
+      "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
+    },
+    "merge_when_pipeline_succeeds": true,
+    "merge_status": "can_be_merged",
+    "sha": "8888888888888888888888888888888888888888",
+    "merge_commit_sha": null,
+    "squash_commit_sha": null,
+    "user_notes_count": 1,
+    "discussion_locked": null,
+    "should_remove_source_branch": true,
+    "force_remove_source_branch": false,
+    "allow_collaboration": false,
+    "allow_maintainer_to_push": false,
+    "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
+    "references": {
+      "short": "!1",
+      "relative": "!1",
+      "full": "my-group/my-project!1"
+    },
+    "time_stats": {
+      "time_estimate": 0,
+      "total_time_spent": 0,
+      "human_time_estimate": null,
+      "human_total_time_spent": null
+    },
+    "squash": false,
+    "task_completion_status":{
+      "count":0,
+      "completed_count":0
+    },
+    "has_conflicts": false,
+    "blocking_discussions_resolved": true
+  }
+]
diff --git a/data/api/merge-requests/merge-to-default-merge-path.json b/data/api/merge-requests/merge-to-default-merge-path.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/merge-to-default-merge-path.json
@@ -0,0 +1,3 @@
+{
+  "commit_id": "854a3a7a17acbcc0bbbea170986df1eb60435f34"
+}
diff --git a/data/api/merge-requests/rebase-merge-request.json b/data/api/merge-requests/rebase-merge-request.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/rebase-merge-request.json
@@ -0,0 +1,3 @@
+{
+  "rebase_in_progress": true
+}
diff --git a/data/api/merge-requests/reset-time-estimate-merge-request.json b/data/api/merge-requests/reset-time-estimate-merge-request.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/reset-time-estimate-merge-request.json
@@ -0,0 +1,6 @@
+{
+  "human_time_estimate": null,
+  "human_total_time_spent": null,
+  "time_estimate": 0,
+  "total_time_spent": 0
+}
diff --git a/data/api/merge-requests/reset-time-merge-request.json b/data/api/merge-requests/reset-time-merge-request.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/reset-time-merge-request.json
@@ -0,0 +1,6 @@
+{
+  "human_time_estimate": null,
+  "human_total_time_spent": null,
+  "time_estimate": 0,
+  "total_time_spent": 0
+}
diff --git a/data/api/merge-requests/single-merge-request-changes.json b/data/api/merge-requests/single-merge-request-changes.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/single-merge-request-changes.json
@@ -0,0 +1,103 @@
+{
+  "id": 21,
+  "iid": 1,
+  "project_id": 4,
+  "title": "Blanditiis beatae suscipit hic assumenda et molestias nisi asperiores repellat et.",
+  "state": "reopened",
+  "created_at": "2015-02-02T19:49:39.159Z",
+  "updated_at": "2015-02-02T20:08:49.959Z",
+  "target_branch": "secret_token",
+  "source_branch": "version-1-9",
+  "upvotes": 0,
+  "downvotes": 0,
+  "author": {
+    "name": "Chad Hamill",
+    "username": "jarrett",
+    "id": 5,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/b95567800f828948baf5f4160ebb2473?s=40&d=identicon",
+    "web_url" : "https://gitlab.example.com/jarrett"
+  },
+  "assignee": {
+    "name": "Administrator",
+    "username": "root",
+    "id": 1,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40&d=identicon",
+    "web_url" : "https://gitlab.example.com/root"
+  },
+  "assignees": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "reviewers": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "source_project_id": 4,
+  "target_project_id": 4,
+  "labels": [ ],
+  "description": "Qui voluptatibus placeat ipsa alias quasi. Deleniti rem ut sint. Optio velit qui distinctio.",
+  "draft": false,
+  "work_in_progress": false,
+  "milestone": {
+    "id": 5,
+    "iid": 1,
+    "project_id": 4,
+    "title": "v2.0",
+    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
+    "state": "closed",
+    "created_at": "2015-02-02T19:49:26.013Z",
+    "updated_at": "2015-02-02T19:49:26.013Z",
+    "due_date": null
+  },
+  "merge_when_pipeline_succeeds": true,
+  "merge_status": "can_be_merged",
+  "subscribed" : true,
+  "sha": "8888888888888888888888888888888888888888",
+  "merge_commit_sha": null,
+  "squash_commit_sha": null,
+  "user_notes_count": 1,
+  "changes_count": "1",
+  "should_remove_source_branch": true,
+  "force_remove_source_branch": false,
+  "squash": false,
+  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
+  "references": {
+    "short": "!1",
+    "relative": "!1",
+    "full": "my-group/my-project!1"
+  },
+  "discussion_locked": false,
+  "time_stats": {
+    "time_estimate": 0,
+    "total_time_spent": 0,
+    "human_time_estimate": null,
+    "human_total_time_spent": null
+  },
+  "task_completion_status":{
+    "count":0,
+    "completed_count":0
+  },
+  "changes": [
+    {
+    "old_path": "VERSION",
+    "new_path": "VERSION",
+    "a_mode": "100644",
+    "b_mode": "100644",
+    "diff": "--- a/VERSION\\ +++ b/VERSION\\ @@ -1 +1 @@\\ -1.9.7\\ +1.9.8",
+    "new_file": false,
+    "renamed_file": false,
+    "deleted_file": false
+    }
+  ],
+  "overflow": false
+}
diff --git a/data/api/merge-requests/single-merge-request-commits.json b/data/api/merge-requests/single-merge-request-commits.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/single-merge-request-commits.json
@@ -0,0 +1,20 @@
+[
+  {
+    "id": "ed899a2f4b50b4370feeea94676502b42383c746",
+    "short_id": "ed899a2f4b5",
+    "title": "Replace sanitize with escape once",
+    "author_name": "Example User",
+    "author_email": "user@example.com",
+    "created_at": "2012-09-20T11:50:22+03:00",
+    "message": "Replace sanitize with escape once"
+  },
+  {
+    "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
+    "short_id": "6104942438c",
+    "title": "Sanitize for network graph",
+    "author_name": "Example User",
+    "author_email": "user@example.com",
+    "created_at": "2012-09-20T09:06:12+03:00",
+    "message": "Sanitize for network graph"
+  }
+]
diff --git a/data/api/merge-requests/single-merge-request-diff-version.json b/data/api/merge-requests/single-merge-request-diff-version.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/single-merge-request-diff-version.json
@@ -0,0 +1,45 @@
+{
+  "id": 110,
+  "head_commit_sha": "33e2ee8579fda5bc36accc9c6fbd0b4fefda9e30",
+  "base_commit_sha": "eeb57dffe83deb686a60a71c16c32f71046868fd",
+  "start_commit_sha": "eeb57dffe83deb686a60a71c16c32f71046868fd",
+  "created_at": "2016-07-26T14:44:48.926Z",
+  "merge_request_id": 105,
+  "state": "collected",
+  "real_size": "1",
+  "commits": [{
+    "id": "33e2ee8579fda5bc36accc9c6fbd0b4fefda9e30",
+    "short_id": "33e2ee85",
+    "title": "Change year to 2018",
+    "author_name": "Administrator",
+    "author_email": "admin@example.com",
+    "created_at": "2016-07-26T17:44:29.000+03:00",
+    "message": "Change year to 2018"
+  }, {
+    "id": "aa24655de48b36335556ac8a3cd8bb521f977cbd",
+    "short_id": "aa24655d",
+    "title": "Update LICENSE",
+    "author_name": "Administrator",
+    "author_email": "admin@example.com",
+    "created_at": "2016-07-25T17:21:53.000+03:00",
+    "message": "Update LICENSE"
+  }, {
+    "id": "3eed087b29835c48015768f839d76e5ea8f07a24",
+    "short_id": "3eed087b",
+    "title": "Add license",
+    "author_name": "Administrator",
+    "author_email": "admin@example.com",
+    "created_at": "2016-07-25T17:21:20.000+03:00",
+    "message": "Add license"
+  }],
+  "diffs": [{
+    "old_path": "LICENSE",
+    "new_path": "LICENSE",
+    "a_mode": "0",
+    "b_mode": "100644",
+    "diff": "--- /dev/null\n+++ b/LICENSE\n@@ -0,0 +1,21 @@\n+The MIT License (MIT)\n+\n+Copyright (c) 2018 Administrator\n+\n+Permission is hereby granted, free of charge, to any person obtaining a copy\n+of this software and associated documentation files (the \"Software\"), to deal\n+in the Software without restriction, including without limitation the rights\n+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+copies of the Software, and to permit persons to whom the Software is\n+furnished to do so, subject to the following conditions:\n+\n+The above copyright notice and this permission notice shall be included in all\n+copies or substantial portions of the Software.\n+\n+THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n+SOFTWARE.\n",
+    "new_file": true,
+    "renamed_file": false,
+    "deleted_file": false
+  }]
+}
diff --git a/data/api/merge-requests/single-merge-request-participants.json b/data/api/merge-requests/single-merge-request-participants.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/single-merge-request-participants.json
@@ -0,0 +1,18 @@
+[
+  {
+    "id": 1,
+    "name": "John Doe1",
+    "username": "user1",
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/c922747a93b40d1ea88262bf1aebee62?s=80&d=identicon",
+    "web_url": "http://localhost/user1"
+  },
+  {
+    "id": 2,
+    "name": "John Doe2",
+    "username": "user2",
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/10fc7f102be8de7657fb4d80898bbfe3?s=80&d=identicon",
+    "web_url": "http://localhost/user2"
+  }
+]
diff --git a/data/api/merge-requests/single-merge-request.json b/data/api/merge-requests/single-merge-request.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/single-merge-request.json
@@ -0,0 +1,132 @@
+{
+  "id": 1,
+  "iid": 1,
+  "project_id": 3,
+  "title": "test1",
+  "description": "fixed login page css paddings",
+  "state": "merged",
+  "created_at": "2017-04-29T08:46:00Z",
+  "updated_at": "2017-04-29T08:46:00Z",
+  "target_branch": "master",
+  "source_branch": "test1",
+  "upvotes": 0,
+  "downvotes": 0,
+  "author": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "admin",
+    "state": "active",
+    "avatar_url": null,
+    "web_url" : "https://gitlab.example.com/admin"
+  },
+  "user" : {
+    "can_merge" : false
+  },
+  "assignee": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "admin",
+    "state": "active",
+    "avatar_url": null,
+    "web_url" : "https://gitlab.example.com/admin"
+  },
+  "assignees": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "reviewers": [{
+    "id": 2,
+    "name": "Sam Bauch",
+    "username": "kenyatta_oconnell",
+    "state": "active",
+    "avatar_url": "https://www.gravatar.com/avatar/956c92487c6f6f7616b536927e22c9a0?s=80&d=identicon",
+    "web_url": "http://gitlab.example.com//kenyatta_oconnell"
+  }],
+  "source_project_id": 2,
+  "target_project_id": 3,
+  "labels": [
+    "Community contribution",
+    "Manage"
+  ],
+  "draft": false,
+  "work_in_progress": false,
+  "milestone": {
+    "id": 5,
+    "iid": 1,
+    "project_id": 3,
+    "title": "v2.0",
+    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
+    "state": "closed",
+    "created_at": "2015-02-02T19:49:26.013Z",
+    "updated_at": "2015-02-02T19:49:26.013Z",
+    "due_date": "2018-09-22",
+    "start_date": "2018-08-08",
+    "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
+  },
+  "merge_when_pipeline_succeeds": true,
+  "merge_status": "can_be_merged",
+  "merge_error": null,
+  "sha": "8888888888888888888888888888888888888888",
+  "merge_commit_sha": null,
+  "squash_commit_sha": null,
+  "user_notes_count": 1,
+  "discussion_locked": null,
+  "should_remove_source_branch": true,
+  "force_remove_source_branch": false,
+  "allow_collaboration": false,
+  "allow_maintainer_to_push": false,
+  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
+  "references": {
+    "short": "!1",
+    "relative": "!1",
+    "full": "my-group/my-project!1"
+  },
+  "time_stats": {
+    "time_estimate": 0,
+    "total_time_spent": 0,
+    "human_time_estimate": null,
+    "human_total_time_spent": null
+  },
+  "squash": false,
+  "subscribed": false,
+  "changes_count": "1",
+  "merged_by": {
+    "id": 87854,
+    "name": "Douwe Maan",
+    "username": "DouweM",
+    "state": "active",
+    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
+    "web_url": "https://gitlab.com/DouweM"
+  },
+  "merged_at": "2018-09-07T11:16:17.520Z",
+  "closed_by": null,
+  "closed_at": null,
+  "latest_build_started_at": "2018-09-07T07:27:38.472Z",
+  "latest_build_finished_at": "2018-09-07T08:07:06.012Z",
+  "first_deployed_to_production_at": null,
+  "pipeline": {
+    "id": 29626725,
+    "sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
+    "ref": "patch-28",
+    "status": "success",
+    "web_url": "https://gitlab.example.com/my-group/my-project/pipelines/29626725"
+  },
+  "diff_refs": {
+    "base_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00",
+    "head_sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
+    "start_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00"
+  },
+  "diverged_commits_count": 2,
+  "rebase_in_progress": false,
+  "first_contribution": false,
+  "task_completion_status":{
+    "count":0,
+    "completed_count":0
+  },
+  "has_conflicts": false,
+  "blocking_discussions_resolved": true
+}
diff --git a/data/api/merge-requests/subscribe-merge-request.json b/data/api/merge-requests/subscribe-merge-request.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/subscribe-merge-request.json
@@ -0,0 +1,124 @@
+{
+  "id": 1,
+  "iid": 1,
+  "project_id": 3,
+  "title": "test1",
+  "description": "fixed login page css paddings",
+  "state": "merged",
+  "created_at": "2017-04-29T08:46:00Z",
+  "updated_at": "2017-04-29T08:46:00Z",
+  "target_branch": "master",
+  "source_branch": "test1",
+  "upvotes": 0,
+  "downvotes": 0,
+  "author": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "admin",
+    "state": "active",
+    "avatar_url": null,
+    "web_url" : "https://gitlab.example.com/admin"
+  },
+  "assignee": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "admin",
+    "state": "active",
+    "avatar_url": null,
+    "web_url" : "https://gitlab.example.com/admin"
+  },
+  "assignees": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "reviewers": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "source_project_id": 2,
+  "target_project_id": 3,
+  "labels": [
+    "Community contribution",
+    "Manage"
+  ],
+  "draft": false,
+  "work_in_progress": false,
+  "milestone": {
+    "id": 5,
+    "iid": 1,
+    "project_id": 3,
+    "title": "v2.0",
+    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
+    "state": "closed",
+    "created_at": "2015-02-02T19:49:26.013Z",
+    "updated_at": "2015-02-02T19:49:26.013Z",
+    "due_date": "2018-09-22",
+    "start_date": "2018-08-08",
+    "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
+  },
+  "merge_when_pipeline_succeeds": true,
+  "merge_status": "can_be_merged",
+  "sha": "8888888888888888888888888888888888888888",
+  "merge_commit_sha": null,
+  "squash_commit_sha": null,
+  "user_notes_count": 1,
+  "discussion_locked": null,
+  "should_remove_source_branch": true,
+  "force_remove_source_branch": false,
+  "allow_collaboration": false,
+  "allow_maintainer_to_push": false,
+  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
+  "references": {
+    "short": "!1",
+    "relative": "!1",
+    "full": "my-group/my-project!1"
+  },
+  "time_stats": {
+    "time_estimate": 0,
+    "total_time_spent": 0,
+    "human_time_estimate": null,
+    "human_total_time_spent": null
+  },
+  "squash": false,
+  "subscribed": false,
+  "changes_count": "1",
+  "merged_by": {
+    "id": 87854,
+    "name": "Douwe Maan",
+    "username": "DouweM",
+    "state": "active",
+    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
+    "web_url": "https://gitlab.com/DouweM"
+  },
+  "merged_at": "2018-09-07T11:16:17.52Z",
+  "closed_by": null,
+  "closed_at": null,
+  "latest_build_started_at": "2018-09-07T07:27:38.472Z",
+  "latest_build_finished_at": "2018-09-07T08:07:06.012Z",
+  "first_deployed_to_production_at": null,
+  "pipeline": {
+    "id": 29626725,
+    "sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
+    "ref": "patch-28",
+    "status": "success",
+    "web_url": "https://gitlab.example.com/my-group/my-project/pipelines/29626725"
+  },
+  "diff_refs": {
+    "base_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00",
+    "head_sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
+    "start_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00"
+  },
+  "diverged_commits_count": 2,
+  "task_completion_status":{
+    "count":0,
+    "completed_count":0
+  }
+}
diff --git a/data/api/merge-requests/time-estimate-merge-request.json b/data/api/merge-requests/time-estimate-merge-request.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/time-estimate-merge-request.json
@@ -0,0 +1,6 @@
+{
+  "human_time_estimate": "3h 30m",
+  "human_total_time_spent": null,
+  "time_estimate": 12600,
+  "total_time_spent": 0
+}
diff --git a/data/api/merge-requests/time-tracking-stats.json b/data/api/merge-requests/time-tracking-stats.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/time-tracking-stats.json
@@ -0,0 +1,6 @@
+{
+  "human_time_estimate": "2h",
+  "human_total_time_spent": "1h",
+  "time_estimate": 7200,
+  "total_time_spent": 3600
+}
diff --git a/data/api/merge-requests/unsubscribe-merge-request.json b/data/api/merge-requests/unsubscribe-merge-request.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/unsubscribe-merge-request.json
@@ -0,0 +1,124 @@
+{
+  "id": 1,
+  "iid": 1,
+  "project_id": 3,
+  "title": "test1",
+  "description": "fixed login page css paddings",
+  "state": "merged",
+  "created_at": "2017-04-29T08:46:00Z",
+  "updated_at": "2017-04-29T08:46:00Z",
+  "target_branch": "master",
+  "source_branch": "test1",
+  "upvotes": 0,
+  "downvotes": 0,
+  "author": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "admin",
+    "state": "active",
+    "avatar_url": null,
+    "web_url" : "https://gitlab.example.com/admin"
+  },
+  "assignee": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "admin",
+    "state": "active",
+    "avatar_url": null,
+    "web_url" : "https://gitlab.example.com/admin"
+  },
+  "assignees": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "reviewers": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "source_project_id": 2,
+  "target_project_id": 3,
+  "labels": [
+    "Community contribution",
+    "Manage"
+  ],
+  "draft": false,
+  "work_in_progress": false,
+  "milestone": {
+    "id": 5,
+    "iid": 1,
+    "project_id": 3,
+    "title": "v2.0",
+    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
+    "state": "closed",
+    "created_at": "2015-02-02T19:49:26.013Z",
+    "updated_at": "2015-02-02T19:49:26.013Z",
+    "due_date": "2018-09-22",
+    "start_date": "2018-08-08",
+    "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
+  },
+  "merge_when_pipeline_succeeds": true,
+  "merge_status": "can_be_merged",
+  "sha": "8888888888888888888888888888888888888888",
+  "merge_commit_sha": null,
+  "squash_commit_sha": null,
+  "user_notes_count": 1,
+  "discussion_locked": null,
+  "should_remove_source_branch": true,
+  "force_remove_source_branch": false,
+  "allow_collaboration": false,
+  "allow_maintainer_to_push": false,
+  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
+  "references": {
+    "short": "!1",
+    "relative": "!1",
+    "full": "my-group/my-project!1"
+  },
+  "time_stats": {
+    "time_estimate": 0,
+    "total_time_spent": 0,
+    "human_time_estimate": null,
+    "human_total_time_spent": null
+  },
+  "squash": false,
+  "subscribed": false,
+  "changes_count": "1",
+  "merged_by": {
+    "id": 87854,
+    "name": "Douwe Maan",
+    "username": "DouweM",
+    "state": "active",
+    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
+    "web_url": "https://gitlab.com/DouweM"
+  },
+  "merged_at": "2018-09-07T11:16:17.52Z",
+  "closed_by": null,
+  "closed_at": null,
+  "latest_build_started_at": "2018-09-07T07:27:38.472Z",
+  "latest_build_finished_at": "2018-09-07T08:07:06.012Z",
+  "first_deployed_to_production_at": null,
+  "pipeline": {
+    "id": 29626725,
+    "sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
+    "ref": "patch-28",
+    "status": "success",
+    "web_url": "https://gitlab.example.com/my-group/my-project/pipelines/29626725"
+  },
+  "diff_refs": {
+    "base_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00",
+    "head_sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
+    "start_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00"
+  },
+  "diverged_commits_count": 2,
+  "task_completion_status":{
+    "count":0,
+    "completed_count":0
+  }
+}
diff --git a/data/api/merge-requests/update-merge-request.json b/data/api/merge-requests/update-merge-request.json
new file mode 100644
--- /dev/null
+++ b/data/api/merge-requests/update-merge-request.json
@@ -0,0 +1,125 @@
+{
+  "id": 1,
+  "iid": 1,
+  "project_id": 3,
+  "title": "test1",
+  "description": "fixed login page css paddings",
+  "state": "merged",
+  "created_at": "2017-04-29T08:46:00Z",
+  "updated_at": "2017-04-29T08:46:00Z",
+  "target_branch": "master",
+  "source_branch": "test1",
+  "upvotes": 0,
+  "downvotes": 0,
+  "author": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "admin",
+    "state": "active",
+    "avatar_url": null,
+    "web_url" : "https://gitlab.example.com/admin"
+  },
+  "assignee": {
+    "id": 1,
+    "name": "Administrator",
+    "username": "admin",
+    "state": "active",
+    "avatar_url": null,
+    "web_url" : "https://gitlab.example.com/admin"
+  },
+  "assignees": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "reviewers": [{
+    "name": "Miss Monserrate Beier",
+    "username": "axel.block",
+    "id": 12,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
+    "web_url": "https://gitlab.example.com/axel.block"
+  }],
+  "source_project_id": 2,
+  "target_project_id": 3,
+  "labels": [
+    "Community contribution",
+    "Manage"
+  ],
+  "draft": false,
+  "work_in_progress": false,
+  "milestone": {
+    "id": 5,
+    "iid": 1,
+    "project_id": 3,
+    "title": "v2.0",
+    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
+    "state": "closed",
+    "created_at": "2015-02-02T19:49:26.013Z",
+    "updated_at": "2015-02-02T19:49:26.013Z",
+    "due_date": "2018-09-22",
+    "start_date": "2018-08-08",
+    "web_url": "https://gitlab.example.com/my-group/my-project/milestones/1"
+  },
+  "merge_when_pipeline_succeeds": true,
+  "merge_status": "can_be_merged",
+  "merge_error": null,
+  "sha": "8888888888888888888888888888888888888888",
+  "merge_commit_sha": null,
+  "squash_commit_sha": null,
+  "user_notes_count": 1,
+  "discussion_locked": null,
+  "should_remove_source_branch": true,
+  "force_remove_source_branch": false,
+  "allow_collaboration": false,
+  "allow_maintainer_to_push": false,
+  "web_url": "http://gitlab.example.com/my-group/my-project/merge_requests/1",
+  "references": {
+    "short": "!1",
+    "relative": "!1",
+    "full": "my-group/my-project!1"
+  },
+  "time_stats": {
+    "time_estimate": 0,
+    "total_time_spent": 0,
+    "human_time_estimate": null,
+    "human_total_time_spent": null
+  },
+  "squash": false,
+  "subscribed": false,
+  "changes_count": "1",
+  "merged_by": {
+    "id": 87854,
+    "name": "Douwe Maan",
+    "username": "DouweM",
+    "state": "active",
+    "avatar_url": "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
+    "web_url": "https://gitlab.com/DouweM"
+  },
+  "merged_at": "2018-09-07T11:16:17.52Z",
+  "closed_by": null,
+  "closed_at": null,
+  "latest_build_started_at": "2018-09-07T07:27:38.472Z",
+  "latest_build_finished_at": "2018-09-07T08:07:06.012Z",
+  "first_deployed_to_production_at": null,
+  "pipeline": {
+    "id": 29626725,
+    "sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
+    "ref": "patch-28",
+    "status": "success",
+    "web_url": "https://gitlab.example.com/my-group/my-project/pipelines/29626725"
+  },
+  "diff_refs": {
+    "base_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00",
+    "head_sha": "2be7ddb704c7b6b83732fdd5b9f09d5a397b5f8f",
+    "start_sha": "c380d3acebd181f13629a25d2e2acca46ffe1e00"
+  },
+  "diverged_commits_count": 2,
+  "task_completion_status":{
+    "count":0,
+    "completed_count":0
+  }
+}
diff --git a/data/api/notes/project-issue-notes.json b/data/api/notes/project-issue-notes.json
new file mode 100644
--- /dev/null
+++ b/data/api/notes/project-issue-notes.json
@@ -0,0 +1,44 @@
+[
+  {
+    "id": 302,
+    "body": "closed",
+    "attachment": null,
+    "author": {
+      "id": 1,
+      "username": "pipin",
+      "email": "admin@example.com",
+      "name": "Pip",
+      "state": "active",
+      "created_at": "2013-09-30T13:46:01Z"
+    },
+    "created_at": "2013-10-02T09:22:45Z",
+    "updated_at": "2013-10-02T10:22:45Z",
+    "system": true,
+    "noteable_id": 377,
+    "noteable_type": "Issue",
+    "noteable_iid": 377,
+    "resolvable": false,
+    "confidential": false
+  },
+  {
+    "id": 305,
+    "body": "Text of the comment\r\n",
+    "attachment": null,
+    "author": {
+      "id": 1,
+      "username": "pipin",
+      "email": "admin@example.com",
+      "name": "Pip",
+      "state": "active",
+      "created_at": "2013-09-30T13:46:01Z"
+    },
+    "created_at": "2013-10-02T09:56:03Z",
+    "updated_at": "2013-10-02T09:56:03Z",
+    "system": true,
+    "noteable_id": 121,
+    "noteable_type": "Issue",
+    "noteable_iid": 121,
+    "resolvable": false,
+    "confidential": true
+  }
+]
diff --git a/data/api/notes/single-merge-request-note.json b/data/api/notes/single-merge-request-note.json
new file mode 100644
--- /dev/null
+++ b/data/api/notes/single-merge-request-note.json
@@ -0,0 +1,21 @@
+{
+  "id": 301,
+  "body": "Comment for MR",
+  "attachment": null,
+  "author": {
+    "id": 1,
+    "username": "pipin",
+    "email": "admin@example.com",
+    "name": "Pip",
+    "state": "active",
+    "created_at": "2013-09-30T13:46:01Z"
+  },
+  "created_at": "2013-10-02T08:57:14Z",
+  "updated_at": "2013-10-02T08:57:14Z",
+  "system": false,
+  "noteable_id": 2,
+  "noteable_type": "MergeRequest",
+  "noteable_iid": 2,
+  "resolvable": false,
+  "confidential": false
+}
diff --git a/data/api/notes/single-snippet-note.json b/data/api/notes/single-snippet-note.json
new file mode 100644
--- /dev/null
+++ b/data/api/notes/single-snippet-note.json
@@ -0,0 +1,16 @@
+{
+  "id": 52,
+  "title": "Snippet",
+  "file_name": "snippet.rb",
+  "author": {
+    "id": 1,
+    "username": "pipin",
+    "email": "admin@example.com",
+    "name": "Pip",
+    "state": "active",
+    "created_at": "2013-09-30T13:46:01Z"
+  },
+  "expires_at": null,
+  "updated_at": "2013-10-02T07:34:20Z",
+  "created_at": "2013-10-02T07:34:20Z"
+}
diff --git a/data/api/pipelines/cancel-pipeline-jobs.json b/data/api/pipelines/cancel-pipeline-jobs.json
new file mode 100644
--- /dev/null
+++ b/data/api/pipelines/cancel-pipeline-jobs.json
@@ -0,0 +1,28 @@
+{
+  "id": 46,
+  "iid": 11,
+  "project_id": 1,
+  "status": "canceled",
+  "ref": "main",
+  "sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
+  "before_sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
+  "tag": false,
+  "yaml_errors": null,
+  "user": {
+    "name": "Administrator",
+    "username": "root",
+    "id": 1,
+    "state": "active",
+    "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+    "web_url": "http://localhost:3000/root"
+  },
+  "created_at": "2016-08-11T11:28:34.085Z",
+  "updated_at": "2016-08-11T11:32:35.169Z",
+  "started_at": null,
+  "finished_at": "2016-08-11T11:32:35.145Z",
+  "committed_at": null,
+  "duration": null,
+  "queued_duration": 0.010,
+  "coverage": null,
+  "web_url": "https://example.com/foo/bar/pipelines/46"
+}
diff --git a/data/api/projects/archive-project.json b/data/api/projects/archive-project.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/archive-project.json
@@ -0,0 +1,97 @@
+{
+  "id": 3,
+  "description": null,
+  "default_branch": "master",
+  "visibility": "private",
+  "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
+  "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
+  "web_url": "http://example.com/diaspora/diaspora-project-site",
+  "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/master/README.md",
+  "tag_list": [
+    "example",
+    "disapora project"
+  ],
+  "topics": [
+    "example",
+    "disapora project"
+  ],
+  "owner": {
+    "id": 3,
+    "name": "Diaspora",
+    "created_at": "2013-09-30T13:46:02Z"
+  },
+  "name": "Diaspora Project Site",
+  "name_with_namespace": "Diaspora / Diaspora Project Site",
+  "path": "diaspora-project-site",
+  "path_with_namespace": "diaspora/diaspora-project-site",
+  "issues_enabled": true,
+  "open_issues_count": 1,
+  "merge_requests_enabled": true,
+  "jobs_enabled": true,
+  "wiki_enabled": true,
+  "snippets_enabled": false,
+  "can_create_merge_request_in": true,
+  "resolve_outdated_diff_discussions": false,
+  "container_registry_enabled": false,
+  "container_registry_access_level": "disabled",
+  "created_at": "2013-09-30T13:46:02Z",
+  "last_activity_at": "2013-09-30T13:46:02Z",
+  "creator_id": 3,
+  "namespace": {
+    "id": 3,
+    "name": "Diaspora",
+    "path": "diaspora",
+    "kind": "group",
+    "full_path": "diaspora"
+  },
+  "import_status": "none",
+  "import_error": null,
+  "permissions": {
+    "project_access": {
+      "access_level": 10,
+      "notification_level": 3
+    },
+    "group_access": {
+      "access_level": 50,
+      "notification_level": 3
+    }
+  },
+  "archived": true,
+  "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
+  "license_url": "http://example.com/diaspora/diaspora-client/blob/master/LICENSE",
+  "license": {
+    "key": "lgpl-3.0",
+    "name": "GNU Lesser General Public License v3.0",
+    "nickname": "GNU LGPLv3",
+    "html_url": "http://choosealicense.com/licenses/lgpl-3.0/",
+    "source_url": "http://www.gnu.org/licenses/lgpl-3.0.txt"
+  },
+  "shared_runners_enabled": true,
+  "forks_count": 0,
+  "star_count": 0,
+  "runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b",
+  "ci_default_git_depth": 50,
+  "ci_forward_deployment_enabled": true,
+  "public_jobs": true,
+  "shared_with_groups": [],
+  "only_allow_merge_if_pipeline_succeeds": false,
+  "allow_merge_on_skipped_pipeline": false,
+  "restrict_user_defined_variables": false,
+  "only_allow_merge_if_all_discussions_are_resolved": false,
+  "remove_source_branch_after_merge": false,
+  "request_access_enabled": false,
+  "merge_method": "merge",
+  "squash_option": "default_on",
+  "autoclose_referenced_issues": true,
+  "suggestion_commit_message": null,
+  "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site",
+  "_links": {
+    "self": "http://example.com/api/v4/projects",
+    "issues": "http://example.com/api/v4/projects/1/issues",
+    "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
+    "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
+    "labels": "http://example.com/api/v4/projects/1/labels",
+    "events": "http://example.com/api/v4/projects/1/events",
+    "members": "http://example.com/api/v4/projects/1/members"
+  }
+}
diff --git a/data/api/projects/get-path-to-repository-storage.json b/data/api/projects/get-path-to-repository-storage.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/get-path-to-repository-storage.json
@@ -0,0 +1,8 @@
+[
+  {
+    "project_id": 1,
+    "disk_path": "@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b",
+    "created_at": "2012-10-12T17:04:47Z",
+    "repository_storage": "default"
+  }
+]
diff --git a/data/api/projects/get-project-users.json b/data/api/projects/get-project-users.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/get-project-users.json
@@ -0,0 +1,18 @@
+[
+  {
+    "id": 1,
+    "username": "john_smith",
+    "name": "John Smith",
+    "state": "active",
+    "avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
+    "web_url": "http://localhost:3000/john_smith"
+  },
+  {
+    "id": 2,
+    "username": "jack_smith",
+    "name": "Jack Smith",
+    "state": "blocked",
+    "avatar_url": "http://gravatar.com/../e32131cd8.jpeg",
+    "web_url": "http://localhost:3000/jack_smith"
+  }
+]
diff --git a/data/api/projects/get-single-project.json b/data/api/projects/get-single-project.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/get-single-project.json
@@ -0,0 +1,151 @@
+{
+  "id": 3,
+  "description": null,
+  "default_branch": "master",
+  "visibility": "private",
+  "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
+  "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
+  "web_url": "http://example.com/diaspora/diaspora-project-site",
+  "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/master/README.md",
+  "tag_list": [
+    "example",
+    "disapora project"
+  ],
+  "topics": [
+    "example",
+    "disapora project"
+  ],
+  "owner": {
+    "id": 3,
+    "name": "Diaspora",
+    "created_at": "2013-09-30T13:46:02Z"
+  },
+  "name": "Diaspora Project Site",
+  "name_with_namespace": "Diaspora / Diaspora Project Site",
+  "path": "diaspora-project-site",
+  "path_with_namespace": "diaspora/diaspora-project-site",
+  "issues_enabled": true,
+  "open_issues_count": 1,
+  "merge_requests_enabled": true,
+  "jobs_enabled": true,
+  "wiki_enabled": true,
+  "snippets_enabled": false,
+  "can_create_merge_request_in": true,
+  "resolve_outdated_diff_discussions": false,
+  "container_registry_enabled": false,
+  "container_registry_access_level": "disabled",
+  "container_expiration_policy": {
+    "cadence": "7d",
+    "enabled": false,
+    "keep_n": null,
+    "older_than": null,
+    "name_regex": null,
+    "name_regex_delete": null,
+    "name_regex_keep": null,
+    "next_run_at": "2020-01-07T21:42:58.658Z"
+  },
+  "created_at": "2013-09-30T13:46:02Z",
+  "last_activity_at": "2013-09-30T13:46:02Z",
+  "creator_id": 3,
+  "namespace": {
+    "id": 3,
+    "name": "Diaspora",
+    "path": "diaspora",
+    "kind": "group",
+    "full_path": "diaspora",
+    "avatar_url": "http://localhost:3000/uploads/group/avatar/3/foo.jpg",
+    "web_url": "http://localhost:3000/groups/diaspora"
+  },
+  "import_status": "none",
+  "import_error": null,
+  "permissions": {
+    "project_access": {
+      "access_level": 10,
+      "notification_level": 3
+    },
+    "group_access": {
+      "access_level": 50,
+      "notification_level": 3
+    }
+  },
+  "archived": false,
+  "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
+  "license_url": "http://example.com/diaspora/diaspora-client/blob/master/LICENSE",
+  "license": {
+    "key": "lgpl-3.0",
+    "name": "GNU Lesser General Public License v3.0",
+    "nickname": "GNU LGPLv3",
+    "html_url": "http://choosealicense.com/licenses/lgpl-3.0/",
+    "source_url": "http://www.gnu.org/licenses/lgpl-3.0.txt"
+  },
+  "shared_runners_enabled": true,
+  "forks_count": 0,
+  "star_count": 0,
+  "runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b",
+  "ci_default_git_depth": 50,
+  "ci_forward_deployment_enabled": true,
+  "public_jobs": true,
+  "shared_with_groups": [
+    {
+      "group_id": 4,
+      "group_name": "Twitter",
+      "group_full_path": "twitter",
+      "group_access_level": 30
+    },
+    {
+      "group_id": 3,
+      "group_name": "Gitlab Org",
+      "group_full_path": "gitlab-org",
+      "group_access_level": 10
+    }
+  ],
+  "repository_storage": "default",
+  "only_allow_merge_if_pipeline_succeeds": false,
+  "allow_merge_on_skipped_pipeline": false,
+  "restrict_user_defined_variables": false,
+  "only_allow_merge_if_all_discussions_are_resolved": false,
+  "remove_source_branch_after_merge": false,
+  "printing_merge_requests_link_enabled": true,
+  "request_access_enabled": false,
+  "merge_method": "merge",
+  "squash_option": "default_on",
+  "auto_devops_enabled": true,
+  "auto_devops_deploy_strategy": "continuous",
+  "approvals_before_merge": 0,
+  "mirror": false,
+  "mirror_user_id": 45,
+  "mirror_trigger_builds": false,
+  "only_mirror_protected_branches": false,
+  "mirror_overwrites_diverged_branches": false,
+  "external_authorization_classification_label": null,
+  "packages_enabled": true,
+  "service_desk_enabled": false,
+  "service_desk_address": null,
+  "autoclose_referenced_issues": true,
+  "suggestion_commit_message": null,
+  "marked_for_deletion_at": "2020-04-03",
+  "marked_for_deletion_on": "2020-04-03",
+  "compliance_frameworks": [ "sox" ],
+  "statistics": {
+    "commit_count": 37,
+    "storage_size": 1038090,
+    "repository_size": 1038090,
+    "wiki_size" : 0,
+    "lfs_objects_size": 0,
+    "job_artifacts_size": 0,
+    "pipeline_artifacts_size": 0,
+    "packages_size": 0,
+    "snippets_size": 0,
+    "uploads_size": 0
+  },
+  "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-client",
+  "_links": {
+    "self": "http://example.com/api/v4/projects",
+    "issues": "http://example.com/api/v4/projects/1/issues",
+    "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
+    "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
+    "labels": "http://example.com/api/v4/projects/1/labels",
+    "events": "http://example.com/api/v4/projects/1/events",
+    "members": "http://example.com/api/v4/projects/1/members"
+  }
+}
diff --git a/data/api/projects/list-all-projects.json b/data/api/projects/list-all-projects.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/list-all-projects.json
@@ -0,0 +1,208 @@
+[
+  {
+    "id": 4,
+    "description": null,
+    "default_branch": "master",
+    "visibility": "private",
+    "ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",
+    "http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",
+    "web_url": "http://example.com/diaspora/diaspora-client",
+    "readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",
+    "tag_list": [
+      "example",
+      "disapora client"
+    ],
+    "topics": [
+      "example",
+      "disapora client"
+    ],
+    "owner": {
+      "id": 3,
+      "name": "Diaspora",
+      "created_at": "2013-09-30T13:46:02Z"
+    },
+    "name": "Diaspora Client",
+    "name_with_namespace": "Diaspora / Diaspora Client",
+    "path": "diaspora-client",
+    "path_with_namespace": "diaspora/diaspora-client",
+    "issues_enabled": true,
+    "open_issues_count": 1,
+    "merge_requests_enabled": true,
+    "jobs_enabled": true,
+    "wiki_enabled": true,
+    "snippets_enabled": false,
+    "can_create_merge_request_in": true,
+    "resolve_outdated_diff_discussions": false,
+    "container_registry_enabled": false,
+    "container_registry_access_level": "disabled",
+    "created_at": "2013-09-30T13:46:02Z",
+    "last_activity_at": "2013-09-30T13:46:02Z",
+    "creator_id": 3,
+    "namespace": {
+      "id": 3,
+      "name": "Diaspora",
+      "path": "diaspora",
+      "kind": "group",
+      "full_path": "diaspora"
+    },
+    "import_status": "none",
+    "archived": false,
+    "avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",
+    "shared_runners_enabled": true,
+    "forks_count": 0,
+    "star_count": 0,
+    "runners_token": "b8547b1dc37721d05889db52fa2f02",
+    "ci_default_git_depth": 50,
+    "ci_forward_deployment_enabled": true,
+    "public_jobs": true,
+    "shared_with_groups": [],
+    "only_allow_merge_if_pipeline_succeeds": false,
+    "allow_merge_on_skipped_pipeline": false,
+    "restrict_user_defined_variables": false,
+    "only_allow_merge_if_all_discussions_are_resolved": false,
+    "remove_source_branch_after_merge": false,
+    "request_access_enabled": false,
+    "merge_method": "merge",
+    "squash_option": "default_on",
+    "autoclose_referenced_issues": true,
+    "suggestion_commit_message": null,
+    "marked_for_deletion_at": "2020-04-03",
+    "marked_for_deletion_on": "2020-04-03",
+    "statistics": {
+      "commit_count": 37,
+      "storage_size": 1038090,
+      "repository_size": 1038090,
+      "wiki_size" : 0,
+      "lfs_objects_size": 0,
+      "job_artifacts_size": 0,
+      "pipeline_artifacts_size": 0,
+      "packages_size": 0,
+      "snippets_size": 0,
+      "uploads_size": 0
+    },
+    "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-client",
+    "_links": {
+      "self": "http://example.com/api/v4/projects",
+      "issues": "http://example.com/api/v4/projects/1/issues",
+      "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
+      "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
+      "labels": "http://example.com/api/v4/projects/1/labels",
+      "events": "http://example.com/api/v4/projects/1/events",
+      "members": "http://example.com/api/v4/projects/1/members"
+    }
+  },
+  {
+    "id": 6,
+    "description": null,
+    "default_branch": "master",
+    "visibility": "private",
+    "ssh_url_to_repo": "git@example.com:brightbox/puppet.git",
+    "http_url_to_repo": "http://example.com/brightbox/puppet.git",
+    "web_url": "http://example.com/brightbox/puppet",
+    "readme_url": "http://example.com/brightbox/puppet/blob/master/README.md",
+    "tag_list": [
+      "example",
+      "puppet"
+    ],
+    "topics": [
+      "example",
+      "puppet"
+    ],
+    "owner": {
+      "id": 4,
+      "name": "Brightbox",
+      "created_at": "2013-09-30T13:46:02Z"
+    },
+    "name": "Puppet",
+    "name_with_namespace": "Brightbox / Puppet",
+    "path": "puppet",
+    "path_with_namespace": "brightbox/puppet",
+    "issues_enabled": true,
+    "open_issues_count": 1,
+    "merge_requests_enabled": true,
+    "jobs_enabled": true,
+    "wiki_enabled": true,
+    "snippets_enabled": false,
+    "can_create_merge_request_in": true,
+    "resolve_outdated_diff_discussions": false,
+    "container_registry_enabled": false,
+    "container_registry_access_level": "disabled",
+    "created_at": "2013-09-30T13:46:02Z",
+    "last_activity_at": "2013-09-30T13:46:02Z",
+    "creator_id": 3,
+    "namespace": {
+      "id": 4,
+      "name": "Brightbox",
+      "path": "brightbox",
+      "kind": "group",
+      "full_path": "brightbox"
+    },
+    "import_status": "none",
+    "import_error": null,
+    "permissions": {
+      "project_access": {
+        "access_level": 10,
+        "notification_level": 3
+      },
+      "group_access": {
+        "access_level": 50,
+        "notification_level": 3
+      }
+    },
+    "archived": false,
+    "avatar_url": null,
+    "shared_runners_enabled": true,
+    "forks_count": 0,
+    "star_count": 0,
+    "runners_token": "b8547b1dc37721d05889db52fa2f02",
+    "ci_default_git_depth": 0,
+    "ci_forward_deployment_enabled": true,
+    "public_jobs": true,
+    "shared_with_groups": [],
+    "only_allow_merge_if_pipeline_succeeds": false,
+    "allow_merge_on_skipped_pipeline": false,
+    "restrict_user_defined_variables": false,
+    "only_allow_merge_if_all_discussions_are_resolved": false,
+    "remove_source_branch_after_merge": false,
+    "request_access_enabled": false,
+    "merge_method": "merge",
+    "squash_option": "default_on",
+    "auto_devops_enabled": true,
+    "auto_devops_deploy_strategy": "continuous",
+    "repository_storage": "default",
+    "approvals_before_merge": 0,
+    "mirror": false,
+    "mirror_user_id": 45,
+    "mirror_trigger_builds": false,
+    "only_mirror_protected_branches": false,
+    "mirror_overwrites_diverged_branches": false,
+    "external_authorization_classification_label": null,
+    "packages_enabled": true,
+    "service_desk_enabled": false,
+    "service_desk_address": null,
+    "autoclose_referenced_issues": true,
+    "suggestion_commit_message": null,
+    "statistics": {
+      "commit_count": 12,
+      "storage_size": 2066080,
+      "repository_size": 2066080,
+      "wiki_size" : 0,
+      "lfs_objects_size": 0,
+      "job_artifacts_size": 0,
+      "pipeline_artifacts_size": 0,
+      "packages_size": 0,
+      "snippets_size": 0,
+      "uploads_size": 0
+    },
+    "container_registry_image_prefix": "registry.example.com/brightbox/puppet",
+    "_links": {
+      "self": "http://example.com/api/v4/projects",
+      "issues": "http://example.com/api/v4/projects/1/issues",
+      "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
+      "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
+      "labels": "http://example.com/api/v4/projects/1/labels",
+      "events": "http://example.com/api/v4/projects/1/events",
+      "members": "http://example.com/api/v4/projects/1/members"
+    }
+  }
+]
diff --git a/data/api/projects/list-forks-of-project.json b/data/api/projects/list-forks-of-project.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/list-forks-of-project.json
@@ -0,0 +1,72 @@
+[
+  {
+    "id": 3,
+    "description": null,
+    "default_branch": "master",
+    "visibility": "internal",
+    "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
+    "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
+    "web_url": "http://example.com/diaspora/diaspora-project-site",
+    "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/master/README.md",
+    "tag_list": [
+      "example",
+      "disapora project"
+    ],
+    "topics": [
+      "example",
+      "disapora project"
+    ],
+    "name": "Diaspora Project Site",
+    "name_with_namespace": "Diaspora / Diaspora Project Site",
+    "path": "diaspora-project-site",
+    "path_with_namespace": "diaspora/diaspora-project-site",
+    "issues_enabled": true,
+    "open_issues_count": 1,
+    "merge_requests_enabled": true,
+    "jobs_enabled": true,
+    "wiki_enabled": true,
+    "snippets_enabled": false,
+    "can_create_merge_request_in": true,
+    "resolve_outdated_diff_discussions": false,
+    "container_registry_enabled": false,
+    "container_registry_access_level": "disabled",
+    "created_at": "2013-09-30T13:46:02Z",
+    "last_activity_at": "2013-09-30T13:46:02Z",
+    "creator_id": 3,
+    "namespace": {
+      "id": 3,
+      "name": "Diaspora",
+      "path": "diaspora",
+      "kind": "group",
+      "full_path": "diaspora"
+    },
+    "import_status": "none",
+    "archived": true,
+    "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
+    "shared_runners_enabled": true,
+    "forks_count": 0,
+    "star_count": 1,
+    "public_jobs": true,
+    "shared_with_groups": [],
+    "only_allow_merge_if_pipeline_succeeds": false,
+    "allow_merge_on_skipped_pipeline": false,
+    "restrict_user_defined_variables": false,
+    "only_allow_merge_if_all_discussions_are_resolved": false,
+    "remove_source_branch_after_merge": false,
+    "request_access_enabled": false,
+    "merge_method": "merge",
+    "squash_option": "default_on",
+    "autoclose_referenced_issues": true,
+    "suggestion_commit_message": null,
+    "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site",
+    "_links": {
+      "self": "http://example.com/api/v4/projects",
+      "issues": "http://example.com/api/v4/projects/1/issues",
+      "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
+      "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
+      "labels": "http://example.com/api/v4/projects/1/labels",
+      "events": "http://example.com/api/v4/projects/1/events",
+      "members": "http://example.com/api/v4/projects/1/members"
+    }
+  }
+]
diff --git a/data/api/projects/list-project-groups.json b/data/api/projects/list-project-groups.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/list-project-groups.json
@@ -0,0 +1,18 @@
+[
+  {
+    "id": 1,
+    "name": "Foobar Group",
+    "avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg",
+    "web_url": "http://localhost:3000/groups/foo-bar",
+    "full_name": "Foobar Group",
+    "full_path": "foo-bar"
+  },
+  {
+    "id": 2,
+    "name": "Shared Group",
+    "avatar_url": "http://gitlab.example.com/uploads/group/avatar/1/bar.jpg",
+    "web_url": "http://gitlab.example.com/groups/foo/bar",
+    "full_name": "Shared Group",
+    "full_path": "foo/shared"
+  }
+]
diff --git a/data/api/projects/list-projects-starred-by-user.json b/data/api/projects/list-projects-starred-by-user.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/list-projects-starred-by-user.json
@@ -0,0 +1,200 @@
+[
+  {
+    "id": 4,
+    "description": null,
+    "default_branch": "master",
+    "visibility": "private",
+    "ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",
+    "http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",
+    "web_url": "http://example.com/diaspora/diaspora-client",
+    "readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",
+    "tag_list": [
+      "example",
+      "disapora client"
+    ],
+    "topics": [
+      "example",
+      "disapora client"
+    ],
+    "owner": {
+      "id": 3,
+      "name": "Diaspora",
+      "created_at": "2013-09-30T13:46:02Z"
+    },
+    "name": "Diaspora Client",
+    "name_with_namespace": "Diaspora / Diaspora Client",
+    "path": "diaspora-client",
+    "path_with_namespace": "diaspora/diaspora-client",
+    "issues_enabled": true,
+    "open_issues_count": 1,
+    "merge_requests_enabled": true,
+    "jobs_enabled": true,
+    "wiki_enabled": true,
+    "snippets_enabled": false,
+    "can_create_merge_request_in": true,
+    "resolve_outdated_diff_discussions": false,
+    "container_registry_enabled": false,
+    "container_registry_access_level": "disabled",
+    "created_at": "2013-09-30T13:46:02Z",
+    "last_activity_at": "2013-09-30T13:46:02Z",
+    "creator_id": 3,
+    "namespace": {
+      "id": 3,
+      "name": "Diaspora",
+      "path": "diaspora",
+      "kind": "group",
+      "full_path": "diaspora"
+    },
+    "import_status": "none",
+    "archived": false,
+    "avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",
+    "shared_runners_enabled": true,
+    "forks_count": 0,
+    "star_count": 0,
+    "runners_token": "b8547b1dc37721d05889db52fa2f02",
+    "public_jobs": true,
+    "shared_with_groups": [],
+    "only_allow_merge_if_pipeline_succeeds": false,
+    "allow_merge_on_skipped_pipeline": false,
+    "restrict_user_defined_variables": false,
+    "only_allow_merge_if_all_discussions_are_resolved": false,
+    "remove_source_branch_after_merge": false,
+    "request_access_enabled": false,
+    "merge_method": "merge",
+    "squash_option": "default_on",
+    "autoclose_referenced_issues": true,
+    "suggestion_commit_message": null,
+    "statistics": {
+      "commit_count": 37,
+      "storage_size": 1038090,
+      "repository_size": 1038090,
+      "lfs_objects_size": 0,
+      "job_artifacts_size": 0,
+      "pipeline_artifacts_size": 0,
+      "packages_size": 0,
+      "snippets_size": 0,
+      "uploads_size": 0
+    },
+    "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-client",
+    "_links": {
+      "self": "http://example.com/api/v4/projects",
+      "issues": "http://example.com/api/v4/projects/1/issues",
+      "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
+      "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
+      "labels": "http://example.com/api/v4/projects/1/labels",
+      "events": "http://example.com/api/v4/projects/1/events",
+      "members": "http://example.com/api/v4/projects/1/members"
+    }
+  },
+  {
+    "id": 6,
+    "description": null,
+    "default_branch": "master",
+    "visibility": "private",
+    "ssh_url_to_repo": "git@example.com:brightbox/puppet.git",
+    "http_url_to_repo": "http://example.com/brightbox/puppet.git",
+    "web_url": "http://example.com/brightbox/puppet",
+    "readme_url": "http://example.com/brightbox/puppet/blob/master/README.md",
+    "tag_list": [
+      "example",
+      "puppet"
+    ],
+    "topics": [
+      "example",
+      "puppet"
+    ],
+    "owner": {
+      "id": 4,
+      "name": "Brightbox",
+      "created_at": "2013-09-30T13:46:02Z"
+    },
+    "name": "Puppet",
+    "name_with_namespace": "Brightbox / Puppet",
+    "path": "puppet",
+    "path_with_namespace": "brightbox/puppet",
+    "issues_enabled": true,
+    "open_issues_count": 1,
+    "merge_requests_enabled": true,
+    "jobs_enabled": true,
+    "wiki_enabled": true,
+    "snippets_enabled": false,
+    "can_create_merge_request_in": true,
+    "resolve_outdated_diff_discussions": false,
+    "container_registry_enabled": false,
+    "container_registry_access_level": "disabled",
+    "created_at": "2013-09-30T13:46:02Z",
+    "last_activity_at": "2013-09-30T13:46:02Z",
+    "creator_id": 3,
+    "namespace": {
+      "id": 4,
+      "name": "Brightbox",
+      "path": "brightbox",
+      "kind": "group",
+      "full_path": "brightbox"
+    },
+    "import_status": "none",
+    "import_error": null,
+    "permissions": {
+      "project_access": {
+        "access_level": 10,
+        "notification_level": 3
+      },
+      "group_access": {
+        "access_level": 50,
+        "notification_level": 3
+      }
+    },
+    "archived": false,
+    "avatar_url": null,
+    "shared_runners_enabled": true,
+    "forks_count": 0,
+    "star_count": 0,
+    "runners_token": "b8547b1dc37721d05889db52fa2f02",
+    "public_jobs": true,
+    "shared_with_groups": [],
+    "only_allow_merge_if_pipeline_succeeds": false,
+    "allow_merge_on_skipped_pipeline": false,
+    "restrict_user_defined_variables": false,
+    "only_allow_merge_if_all_discussions_are_resolved": false,
+    "remove_source_branch_after_merge": false,
+    "request_access_enabled": false,
+    "merge_method": "merge",
+    "squash_option": "default_on",
+    "auto_devops_enabled": true,
+    "auto_devops_deploy_strategy": "continuous",
+    "repository_storage": "default",
+    "approvals_before_merge": 0,
+    "mirror": false,
+    "mirror_user_id": 45,
+    "mirror_trigger_builds": false,
+    "only_mirror_protected_branches": false,
+    "mirror_overwrites_diverged_branches": false,
+    "external_authorization_classification_label": null,
+    "packages_enabled": true,
+    "service_desk_enabled": false,
+    "service_desk_address": null,
+    "autoclose_referenced_issues": true,
+    "suggestion_commit_message": null,
+    "statistics": {
+      "commit_count": 12,
+      "storage_size": 2066080,
+      "repository_size": 2066080,
+      "lfs_objects_size": 0,
+      "job_artifacts_size": 0,
+      "pipeline_artifacts_size": 0,
+      "packages_size": 0,
+      "snippets_size": 0,
+      "uploads_size": 0
+    },
+    "container_registry_image_prefix": "registry.example.com/brightbox/puppet",
+    "_links": {
+      "self": "http://example.com/api/v4/projects",
+      "issues": "http://example.com/api/v4/projects/1/issues",
+      "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
+      "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
+      "labels": "http://example.com/api/v4/projects/1/labels",
+      "events": "http://example.com/api/v4/projects/1/events",
+      "members": "http://example.com/api/v4/projects/1/members"
+    }
+  }
+]
diff --git a/data/api/projects/list-user-projects.json b/data/api/projects/list-user-projects.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/list-user-projects.json
@@ -0,0 +1,208 @@
+[
+  {
+    "id": 4,
+    "description": null,
+    "default_branch": "master",
+    "visibility": "private",
+    "ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",
+    "http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",
+    "web_url": "http://example.com/diaspora/diaspora-client",
+    "readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",
+    "tag_list": [
+      "example",
+      "disapora client"
+    ],
+    "topics": [
+      "example",
+      "disapora client"
+    ],
+    "owner": {
+      "id": 3,
+      "name": "Diaspora",
+      "created_at": "2013-09-30T13:46:02Z"
+    },
+    "name": "Diaspora Client",
+    "name_with_namespace": "Diaspora / Diaspora Client",
+    "path": "diaspora-client",
+    "path_with_namespace": "diaspora/diaspora-client",
+    "issues_enabled": true,
+    "open_issues_count": 1,
+    "merge_requests_enabled": true,
+    "jobs_enabled": true,
+    "wiki_enabled": true,
+    "snippets_enabled": false,
+    "can_create_merge_request_in": true,
+    "resolve_outdated_diff_discussions": false,
+    "container_registry_enabled": false,
+    "container_registry_access_level": "disabled",
+    "created_at": "2013-09-30T13:46:02Z",
+    "last_activity_at": "2013-09-30T13:46:02Z",
+    "creator_id": 3,
+    "namespace": {
+      "id": 3,
+      "name": "Diaspora",
+      "path": "diaspora",
+      "kind": "group",
+      "full_path": "diaspora"
+    },
+    "import_status": "none",
+    "archived": false,
+    "avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",
+    "shared_runners_enabled": true,
+    "forks_count": 0,
+    "star_count": 0,
+    "runners_token": "b8547b1dc37721d05889db52fa2f02",
+    "ci_default_git_depth": 50,
+    "ci_forward_deployment_enabled": true,
+    "public_jobs": true,
+    "shared_with_groups": [],
+    "only_allow_merge_if_pipeline_succeeds": false,
+    "allow_merge_on_skipped_pipeline": false,
+    "restrict_user_defined_variables": false,
+    "only_allow_merge_if_all_discussions_are_resolved": false,
+    "remove_source_branch_after_merge": false,
+    "request_access_enabled": false,
+    "merge_method": "merge",
+    "squash_option": "default_on",
+    "autoclose_referenced_issues": true,
+    "suggestion_commit_message": null,
+    "marked_for_deletion_at": "2020-04-03",
+    "marked_for_deletion_on": "2020-04-03",
+    "statistics": {
+      "commit_count": 37,
+      "storage_size": 1038090,
+      "repository_size": 1038090,
+      "wiki_size" : 0,
+      "lfs_objects_size": 0,
+      "job_artifacts_size": 0,
+      "pipeline_artifacts_size": 0,
+      "packages_size": 0,
+      "snippets_size": 0,
+      "uploads_size": 0
+    },
+    "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-client",
+    "_links": {
+      "self": "http://example.com/api/v4/projects",
+      "issues": "http://example.com/api/v4/projects/1/issues",
+      "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
+      "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
+      "labels": "http://example.com/api/v4/projects/1/labels",
+      "events": "http://example.com/api/v4/projects/1/events",
+      "members": "http://example.com/api/v4/projects/1/members"
+    }
+  },
+  {
+    "id": 6,
+    "description": null,
+    "default_branch": "master",
+    "visibility": "private",
+    "ssh_url_to_repo": "git@example.com:brightbox/puppet.git",
+    "http_url_to_repo": "http://example.com/brightbox/puppet.git",
+    "web_url": "http://example.com/brightbox/puppet",
+    "readme_url": "http://example.com/brightbox/puppet/blob/master/README.md",
+    "tag_list": [
+      "example",
+      "puppet"
+    ],
+    "topics": [
+      "example",
+      "puppet"
+    ],
+    "owner": {
+      "id": 4,
+      "name": "Brightbox",
+      "created_at": "2013-09-30T13:46:02Z"
+    },
+    "name": "Puppet",
+    "name_with_namespace": "Brightbox / Puppet",
+    "path": "puppet",
+    "path_with_namespace": "brightbox/puppet",
+    "issues_enabled": true,
+    "open_issues_count": 1,
+    "merge_requests_enabled": true,
+    "jobs_enabled": true,
+    "wiki_enabled": true,
+    "snippets_enabled": false,
+    "can_create_merge_request_in": true,
+    "resolve_outdated_diff_discussions": false,
+    "container_registry_enabled": false,
+    "container_registry_access_level": "disabled",
+    "created_at": "2013-09-30T13:46:02Z",
+    "last_activity_at": "2013-09-30T13:46:02Z",
+    "creator_id": 3,
+    "namespace": {
+      "id": 4,
+      "name": "Brightbox",
+      "path": "brightbox",
+      "kind": "group",
+      "full_path": "brightbox"
+    },
+    "import_status": "none",
+    "import_error": null,
+    "permissions": {
+      "project_access": {
+        "access_level": 10,
+        "notification_level": 3
+      },
+      "group_access": {
+        "access_level": 50,
+        "notification_level": 3
+      }
+    },
+    "archived": false,
+    "avatar_url": null,
+    "shared_runners_enabled": true,
+    "forks_count": 0,
+    "star_count": 0,
+    "runners_token": "b8547b1dc37721d05889db52fa2f02",
+    "ci_default_git_depth": 0,
+    "ci_forward_deployment_enabled": true,
+    "public_jobs": true,
+    "shared_with_groups": [],
+    "only_allow_merge_if_pipeline_succeeds": false,
+    "allow_merge_on_skipped_pipeline": false,
+    "restrict_user_defined_variables": false,
+    "only_allow_merge_if_all_discussions_are_resolved": false,
+    "remove_source_branch_after_merge": false,
+    "request_access_enabled": false,
+    "merge_method": "merge",
+    "squash_option": "default_on",
+    "auto_devops_enabled": true,
+    "auto_devops_deploy_strategy": "continuous",
+    "repository_storage": "default",
+    "approvals_before_merge": 0,
+    "mirror": false,
+    "mirror_user_id": 45,
+    "mirror_trigger_builds": false,
+    "only_mirror_protected_branches": false,
+    "mirror_overwrites_diverged_branches": false,
+    "external_authorization_classification_label": null,
+    "packages_enabled": true,
+    "service_desk_enabled": false,
+    "service_desk_address": null,
+    "autoclose_referenced_issues": true,
+    "suggestion_commit_message": null,
+    "statistics": {
+      "commit_count": 12,
+      "storage_size": 2066080,
+      "repository_size": 2066080,
+      "wiki_size" : 0,
+      "lfs_objects_size": 0,
+      "job_artifacts_size": 0,
+      "pipeline_artifacts_size": 0,
+      "packages_size": 0,
+      "snippets_size": 0,
+      "uploads_size": 0
+    },
+    "container_registry_image_prefix": "registry.example.com/brightbox/puppet",
+    "_links": {
+      "self": "http://example.com/api/v4/projects",
+      "issues": "http://example.com/api/v4/projects/1/issues",
+      "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
+      "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
+      "labels": "http://example.com/api/v4/projects/1/labels",
+      "events": "http://example.com/api/v4/projects/1/events",
+      "members": "http://example.com/api/v4/projects/1/members"
+    }
+  }
+]
diff --git a/data/api/projects/star-project.json b/data/api/projects/star-project.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/star-project.json
@@ -0,0 +1,78 @@
+{
+  "id": 3,
+  "description": null,
+  "default_branch": "master",
+  "visibility": "internal",
+  "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
+  "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
+  "web_url": "http://example.com/diaspora/diaspora-project-site",
+  "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/master/README.md",
+  "tag_list": [
+    "example",
+    "disapora project"
+  ],
+  "topics": [
+    "example",
+    "disapora project"
+  ],
+  "name": "Diaspora Project Site",
+  "name_with_namespace": "Diaspora / Diaspora Project Site",
+  "path": "diaspora-project-site",
+  "path_with_namespace": "diaspora/diaspora-project-site",
+  "issues_enabled": true,
+  "open_issues_count": 1,
+  "merge_requests_enabled": true,
+  "jobs_enabled": true,
+  "wiki_enabled": true,
+  "snippets_enabled": false,
+  "can_create_merge_request_in": true,
+  "resolve_outdated_diff_discussions": false,
+  "container_registry_enabled": false,
+  "container_registry_access_level": "disabled",
+  "created_at": "2013-09-30T13:46:02Z",
+  "last_activity_at": "2013-09-30T13:46:02Z",
+  "creator_id": 3,
+  "namespace": {
+    "id": 3,
+    "name": "Diaspora",
+    "path": "diaspora",
+    "kind": "group",
+    "full_path": "diaspora"
+  },
+  "import_status": "none",
+  "archived": true,
+  "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
+  "license_url": "http://example.com/diaspora/diaspora-client/blob/master/LICENSE",
+  "license": {
+    "key": "lgpl-3.0",
+    "name": "GNU Lesser General Public License v3.0",
+    "nickname": "GNU LGPLv3",
+    "html_url": "http://choosealicense.com/licenses/lgpl-3.0/",
+    "source_url": "http://www.gnu.org/licenses/lgpl-3.0.txt"
+  },
+  "shared_runners_enabled": true,
+  "forks_count": 0,
+  "star_count": 1,
+  "public_jobs": true,
+  "shared_with_groups": [],
+  "only_allow_merge_if_pipeline_succeeds": false,
+  "allow_merge_on_skipped_pipeline": false,
+  "restrict_user_defined_variables": false,
+  "only_allow_merge_if_all_discussions_are_resolved": false,
+  "remove_source_branch_after_merge": false,
+  "request_access_enabled": false,
+  "merge_method": "merge",
+  "squash_option": "default_on",
+  "autoclose_referenced_issues": true,
+  "suggestion_commit_message": null,
+  "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site",
+  "_links": {
+    "self": "http://example.com/api/v4/projects",
+    "issues": "http://example.com/api/v4/projects/1/issues",
+    "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
+    "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
+    "labels": "http://example.com/api/v4/projects/1/labels",
+    "events": "http://example.com/api/v4/projects/1/events",
+    "members": "http://example.com/api/v4/projects/1/members"
+  }
+}
diff --git a/data/api/projects/starrers-of-project.json b/data/api/projects/starrers-of-project.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/starrers-of-project.json
@@ -0,0 +1,24 @@
+[
+  {
+    "starred_since": "2019-01-28T14:47:30.642Z",
+    "user": {
+        "id": 1,
+        "username": "jane_smith",
+        "name": "Jane Smith",
+        "state": "active",
+        "avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
+        "web_url": "http://localhost:3000/jane_smith"
+    }
+  },
+  {
+    "starred_since": "2018-01-02T11:40:26.57Z",
+    "user": {
+      "id": 2,
+      "username": "janine_smith",
+      "name": "Janine Smith",
+      "state": "blocked",
+      "avatar_url": "http://gravatar.com/../e32131cd8.jpeg",
+      "web_url": "http://localhost:3000/janine_smith"
+    }
+  }
+]
diff --git a/data/api/projects/transfer-project-new-namespace.json b/data/api/projects/transfer-project-new-namespace.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/transfer-project-new-namespace.json
@@ -0,0 +1,102 @@
+{
+  "id": 7,
+  "description": "",
+  "name": "hello-world",
+  "name_with_namespace": "cute-cats / hello-world",
+  "path": "hello-world",
+  "path_with_namespace": "cute-cats/hello-world",
+  "created_at": "2020-10-15T16:25:22.415Z",
+  "default_branch": "master",
+  "tag_list": [],
+  "topics": [],
+  "ssh_url_to_repo": "git@gitlab.example.com:cute-cats/hello-world.git",
+  "http_url_to_repo": "https://gitlab.example.com/cute-cats/hello-world.git",
+  "web_url": "https://gitlab.example.com/cute-cats/hello-world",
+  "readme_url": "https://gitlab.example.com/cute-cats/hello-world/-/blob/master/README.md",
+  "avatar_url": null,
+  "forks_count": 0,
+  "star_count": 0,
+  "last_activity_at": "2020-10-15T16:25:22.415Z",
+  "namespace": {
+    "id": 18,
+    "name": "cute-cats",
+    "path": "cute-cats",
+    "kind": "group",
+    "full_path": "cute-cats",
+    "parent_id": null,
+    "avatar_url": null,
+    "web_url": "https://gitlab.example.com/groups/cute-cats"
+  },
+  "container_registry_image_prefix": "registry.example.com/cute-cats/hello-world",
+  "_links": {
+    "self": "https://gitlab.example.com/api/v4/projects/7",
+    "issues": "https://gitlab.example.com/api/v4/projects/7/issues",
+    "merge_requests": "https://gitlab.example.com/api/v4/projects/7/merge_requests",
+    "repo_branches": "https://gitlab.example.com/api/v4/projects/7/repository/branches",
+    "labels": "https://gitlab.example.com/api/v4/projects/7/labels",
+    "events": "https://gitlab.example.com/api/v4/projects/7/events",
+    "members": "https://gitlab.example.com/api/v4/projects/7/members"
+  },
+  "packages_enabled": true,
+  "empty_repo": false,
+  "archived": false,
+  "visibility": "private",
+  "resolve_outdated_diff_discussions": false,
+  "container_registry_enabled": true,
+  "container_registry_access_level": "enabled",
+  "container_expiration_policy": {
+    "cadence": "7d",
+    "enabled": false,
+    "keep_n": null,
+    "older_than": null,
+    "name_regex": null,
+    "name_regex_keep": null,
+    "next_run_at": "2020-10-22T16:25:22.746Z"
+  },
+  "issues_enabled": true,
+  "merge_requests_enabled": true,
+  "wiki_enabled": true,
+  "jobs_enabled": true,
+  "snippets_enabled": true,
+  "service_desk_enabled": false,
+  "service_desk_address": null,
+  "can_create_merge_request_in": true,
+  "issues_access_level": "enabled",
+  "repository_access_level": "enabled",
+  "merge_requests_access_level": "enabled",
+  "forking_access_level": "enabled",
+  "analytics_access_level": "enabled",
+  "wiki_access_level": "enabled",
+  "builds_access_level": "enabled",
+  "snippets_access_level": "enabled",
+  "pages_access_level": "enabled",
+  "emails_disabled": null,
+  "shared_runners_enabled": true,
+  "lfs_enabled": true,
+  "creator_id": 2,
+  "import_status": "none",
+  "open_issues_count": 0,
+  "ci_default_git_depth": 50,
+  "public_jobs": true,
+  "build_timeout": 3600,
+  "auto_cancel_pending_pipelines": "enabled",
+  "build_coverage_regex": null,
+  "ci_config_path": null,
+  "shared_with_groups": [],
+  "only_allow_merge_if_pipeline_succeeds": false,
+  "allow_merge_on_skipped_pipeline": null,
+  "restrict_user_defined_variables": false,
+  "request_access_enabled": true,
+  "only_allow_merge_if_all_discussions_are_resolved": false,
+  "remove_source_branch_after_merge": true,
+  "printing_merge_requests_link_enabled": true,
+  "merge_method": "merge",
+  "squash_option": "default_on",
+  "suggestion_commit_message": null,
+  "auto_devops_enabled": true,
+  "auto_devops_deploy_strategy": "continuous",
+  "autoclose_referenced_issues": true,
+  "approvals_before_merge": 0,
+  "mirror": false,
+  "compliance_frameworks": []
+}
diff --git a/data/api/projects/unarchive-project.json b/data/api/projects/unarchive-project.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/unarchive-project.json
@@ -0,0 +1,97 @@
+{
+  "id": 3,
+  "description": null,
+  "default_branch": "master",
+  "visibility": "private",
+  "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
+  "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
+  "web_url": "http://example.com/diaspora/diaspora-project-site",
+  "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/master/README.md",
+  "tag_list": [
+    "example",
+    "disapora project"
+  ],
+  "topics": [
+    "example",
+    "disapora project"
+  ],
+  "owner": {
+    "id": 3,
+    "name": "Diaspora",
+    "created_at": "2013-09-30T13:46:02Z"
+  },
+  "name": "Diaspora Project Site",
+  "name_with_namespace": "Diaspora / Diaspora Project Site",
+  "path": "diaspora-project-site",
+  "path_with_namespace": "diaspora/diaspora-project-site",
+  "issues_enabled": true,
+  "open_issues_count": 1,
+  "merge_requests_enabled": true,
+  "jobs_enabled": true,
+  "wiki_enabled": true,
+  "snippets_enabled": false,
+  "can_create_merge_request_in": true,
+  "resolve_outdated_diff_discussions": false,
+  "container_registry_enabled": false,
+  "container_registry_access_level": "disabled",
+  "created_at": "2013-09-30T13:46:02Z",
+  "last_activity_at": "2013-09-30T13:46:02Z",
+  "creator_id": 3,
+  "namespace": {
+    "id": 3,
+    "name": "Diaspora",
+    "path": "diaspora",
+    "kind": "group",
+    "full_path": "diaspora"
+  },
+  "import_status": "none",
+  "import_error": null,
+  "permissions": {
+    "project_access": {
+      "access_level": 10,
+      "notification_level": 3
+    },
+    "group_access": {
+      "access_level": 50,
+      "notification_level": 3
+    }
+  },
+  "archived": false,
+  "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
+  "license_url": "http://example.com/diaspora/diaspora-client/blob/master/LICENSE",
+  "license": {
+    "key": "lgpl-3.0",
+    "name": "GNU Lesser General Public License v3.0",
+    "nickname": "GNU LGPLv3",
+    "html_url": "http://choosealicense.com/licenses/lgpl-3.0/",
+    "source_url": "http://www.gnu.org/licenses/lgpl-3.0.txt"
+  },
+  "shared_runners_enabled": true,
+  "forks_count": 0,
+  "star_count": 0,
+  "runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b",
+  "ci_default_git_depth": 50,
+  "ci_forward_deployment_enabled": true,
+  "public_jobs": true,
+  "shared_with_groups": [],
+  "only_allow_merge_if_pipeline_succeeds": false,
+  "allow_merge_on_skipped_pipeline": false,
+  "restrict_user_defined_variables": false,
+  "only_allow_merge_if_all_discussions_are_resolved": false,
+  "remove_source_branch_after_merge": false,
+  "request_access_enabled": false,
+  "merge_method": "merge",
+  "squash_option": "default_on",
+  "autoclose_referenced_issues": true,
+  "suggestion_commit_message": null,
+  "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site",
+  "_links": {
+    "self": "http://example.com/api/v4/projects",
+    "issues": "http://example.com/api/v4/projects/1/issues",
+    "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
+    "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
+    "labels": "http://example.com/api/v4/projects/1/labels",
+    "events": "http://example.com/api/v4/projects/1/events",
+    "members": "http://example.com/api/v4/projects/1/members"
+  }
+}
diff --git a/data/api/projects/unstar-project.json b/data/api/projects/unstar-project.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/unstar-project.json
@@ -0,0 +1,78 @@
+{
+  "id": 3,
+  "description": null,
+  "default_branch": "master",
+  "visibility": "internal",
+  "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
+  "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
+  "web_url": "http://example.com/diaspora/diaspora-project-site",
+  "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/master/README.md",
+  "tag_list": [
+    "example",
+    "disapora project"
+  ],
+  "topics": [
+    "example",
+    "disapora project"
+  ],
+  "name": "Diaspora Project Site",
+  "name_with_namespace": "Diaspora / Diaspora Project Site",
+  "path": "diaspora-project-site",
+  "path_with_namespace": "diaspora/diaspora-project-site",
+  "issues_enabled": true,
+  "open_issues_count": 1,
+  "merge_requests_enabled": true,
+  "jobs_enabled": true,
+  "wiki_enabled": true,
+  "snippets_enabled": false,
+  "can_create_merge_request_in": true,
+  "resolve_outdated_diff_discussions": false,
+  "container_registry_enabled": false,
+  "container_registry_access_level": "disabled",
+  "created_at": "2013-09-30T13:46:02Z",
+  "last_activity_at": "2013-09-30T13:46:02Z",
+  "creator_id": 3,
+  "namespace": {
+    "id": 3,
+    "name": "Diaspora",
+    "path": "diaspora",
+    "kind": "group",
+    "full_path": "diaspora"
+  },
+  "import_status": "none",
+  "archived": true,
+  "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
+  "license_url": "http://example.com/diaspora/diaspora-client/blob/master/LICENSE",
+  "license": {
+    "key": "lgpl-3.0",
+    "name": "GNU Lesser General Public License v3.0",
+    "nickname": "GNU LGPLv3",
+    "html_url": "http://choosealicense.com/licenses/lgpl-3.0/",
+    "source_url": "http://www.gnu.org/licenses/lgpl-3.0.txt"
+  },
+  "shared_runners_enabled": true,
+  "forks_count": 0,
+  "star_count": 0,
+  "public_jobs": true,
+  "shared_with_groups": [],
+  "only_allow_merge_if_pipeline_succeeds": false,
+  "allow_merge_on_skipped_pipeline": false,
+  "restrict_user_defined_variables": false,
+  "only_allow_merge_if_all_discussions_are_resolved": false,
+  "remove_source_branch_after_merge": false,
+  "request_access_enabled": false,
+  "merge_method": "merge",
+  "squash_option": "default_on",
+  "autoclose_referenced_issues": true,
+  "suggestion_commit_message": null,
+  "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site",
+  "_links": {
+    "self": "http://example.com/api/v4/projects",
+    "issues": "http://example.com/api/v4/projects/1/issues",
+    "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
+    "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
+    "labels": "http://example.com/api/v4/projects/1/labels",
+    "events": "http://example.com/api/v4/projects/1/events",
+    "members": "http://example.com/api/v4/projects/1/members"
+  }
+}
diff --git a/data/api/projects/upload-project-avatar.json b/data/api/projects/upload-project-avatar.json
new file mode 100644
--- /dev/null
+++ b/data/api/projects/upload-project-avatar.json
@@ -0,0 +1,3 @@
+{
+  "avatar_url": "https://gitlab.example.com/uploads/-/system/project/avatar/2/dk.png"
+}
diff --git a/data/api/repositories/contributors.json b/data/api/repositories/contributors.json
new file mode 100644
--- /dev/null
+++ b/data/api/repositories/contributors.json
@@ -0,0 +1,13 @@
+[{
+  "name": "Example User",
+  "email": "example@example.com",
+  "commits": 117,
+  "additions": 0,
+  "deletions": 0
+}, {
+  "name": "Sample User",
+  "email": "sample@example.com",
+  "commits": 33,
+  "additions": 0,
+  "deletions": 0
+}]
diff --git a/data/api/repositories/list-repository-tree.json b/data/api/repositories/list-repository-tree.json
new file mode 100644
--- /dev/null
+++ b/data/api/repositories/list-repository-tree.json
@@ -0,0 +1,51 @@
+[
+  {
+    "id": "a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba",
+    "name": "html",
+    "type": "tree",
+    "path": "files/html",
+    "mode": "040000"
+  },
+  {
+    "id": "4535904260b1082e14f867f7a24fd8c21495bde3",
+    "name": "images",
+    "type": "tree",
+    "path": "files/images",
+    "mode": "040000"
+  },
+  {
+    "id": "31405c5ddef582c5a9b7a85230413ff90e2fe720",
+    "name": "js",
+    "type": "tree",
+    "path": "files/js",
+    "mode": "040000"
+  },
+  {
+    "id": "cc71111cfad871212dc99572599a568bfe1e7e00",
+    "name": "lfs",
+    "type": "tree",
+    "path": "files/lfs",
+    "mode": "040000"
+  },
+  {
+    "id": "fd581c619bf59cfdfa9c8282377bb09c2f897520",
+    "name": "markdown",
+    "type": "tree",
+    "path": "files/markdown",
+    "mode": "040000"
+  },
+  {
+    "id": "23ea4d11a4bdd960ee5320c5cb65b5b3fdbc60db",
+    "name": "ruby",
+    "type": "tree",
+    "path": "files/ruby",
+    "mode": "040000"
+  },
+  {
+    "id": "7d70e02340bac451f281cecf0a980907974bd8be",
+    "name": "whitespace",
+    "type": "blob",
+    "path": "files/whitespace",
+    "mode": "100644"
+  }
+]
diff --git a/data/api/repositories/merge-base.json b/data/api/repositories/merge-base.json
new file mode 100644
--- /dev/null
+++ b/data/api/repositories/merge-base.json
@@ -0,0 +1,14 @@
+{
+  "id": "1a0b36b3cdad1d2ee32457c102a8c0b7056fa863",
+  "short_id": "1a0b36b3",
+  "title": "Initial commit",
+  "created_at": "2014-02-27T08:03:18.000Z",
+  "parent_ids": [],
+  "message": "Initial commit\n",
+  "author_name": "Example User",
+  "author_email": "user@example.com",
+  "authored_date": "2014-02-27T08:03:18.000Z",
+  "committer_name": "Example User",
+  "committer_email": "user@example.com",
+  "committed_date": "2014-02-27T08:03:18.000Z"
+}
diff --git a/data/api/repository-files/create-new-file-in-repository.json b/data/api/repository-files/create-new-file-in-repository.json
new file mode 100644
--- /dev/null
+++ b/data/api/repository-files/create-new-file-in-repository.json
@@ -0,0 +1,4 @@
+{
+  "file_path": "app/project.rb",
+  "branch": "master"
+}
diff --git a/data/api/repository-files/get-file-blame-from-repository.json b/data/api/repository-files/get-file-blame-from-repository.json
new file mode 100644
--- /dev/null
+++ b/data/api/repository-files/get-file-blame-from-repository.json
@@ -0,0 +1,23 @@
+[
+  {
+    "commit": {
+      "id": "d42409d56517157c48bf3bd97d3f75974dde19fb",
+      "message": "Add feature\n\nalso fix bug\n",
+      "parent_ids": [
+        "cc6e14f9328fa6d7b5a0d3c30dc2002a3f2a3822"
+      ],
+      "authored_date": "2015-12-18T08:12:22.000Z",
+      "author_name": "John Doe",
+      "author_email": "john.doe@example.com",
+      "committed_date": "2015-12-18T08:12:22.000Z",
+      "committer_name": "John Doe",
+      "committer_email": "john.doe@example.com"
+    },
+    "lines": [
+      "require 'fileutils'",
+      "require 'open3'",
+      ""
+    ]
+  }
+]
+
diff --git a/data/api/repository-files/get-file-from-repository.json b/data/api/repository-files/get-file-from-repository.json
new file mode 100644
--- /dev/null
+++ b/data/api/repository-files/get-file-from-repository.json
@@ -0,0 +1,12 @@
+{
+  "file_name": "key.rb",
+  "file_path": "app/models/key.rb",
+  "size": 1476,
+  "encoding": "base64",
+  "content": "IyA9PSBTY2hlbWEgSW5mb3...",
+  "content_sha256": "4c294617b60715c1d218e61164a3abd4808a4284cbc30e6728a01ad9aada4481",
+  "ref": "master",
+  "blob_id": "79f7bbd25901e8334750839545a9bd021f0e4c83",
+  "commit_id": "d5a3ff139356ce33e37e73add446f16869741b50",
+  "last_commit_id": "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"
+}
diff --git a/data/api/repository-files/update-existing-file-in-repository.json b/data/api/repository-files/update-existing-file-in-repository.json
new file mode 100644
--- /dev/null
+++ b/data/api/repository-files/update-existing-file-in-repository.json
@@ -0,0 +1,4 @@
+{
+  "file_path": "app/project.rb",
+  "branch": "master"
+}
diff --git a/data/api/tags/create-new-tag.json b/data/api/tags/create-new-tag.json
new file mode 100644
--- /dev/null
+++ b/data/api/tags/create-new-tag.json
@@ -0,0 +1,23 @@
+{
+  "commit": {
+    "id": "2695effb5807a22ff3d138d593fd856244e155e7",
+    "short_id": "2695effb",
+    "title": "Initial commit",
+    "created_at": "2017-07-26T11:08:53.000+02:00",
+    "parent_ids": [
+      "2a4b78934375d7f53875269ffd4f45fd83a84ebe"
+    ],
+    "message": "Initial commit",
+    "author_name": "John Smith",
+    "author_email": "john@example.com",
+    "authored_date": "2012-05-28T04:42:42-07:00",
+    "committer_name": "Jack Smith",
+    "committer_email": "jack@example.com",
+    "committed_date": "2012-05-28T04:42:42-07:00"
+  },
+  "release": null,
+  "name": "v1.0.0",
+  "target": "2695effb5807a22ff3d138d593fd856244e155e7",
+  "message": null,
+  "protected": false
+}
diff --git a/data/api/tags/list-project-repository-tags.json b/data/api/tags/list-project-repository-tags.json
new file mode 100644
--- /dev/null
+++ b/data/api/tags/list-project-repository-tags.json
@@ -0,0 +1,28 @@
+[
+  {
+    "commit": {
+      "id": "2695effb5807a22ff3d138d593fd856244e155e7",
+      "short_id": "2695effb",
+      "title": "Initial commit",
+      "created_at": "2017-07-26T11:08:53.000+02:00",
+      "parent_ids": [
+        "2a4b78934375d7f53875269ffd4f45fd83a84ebe"
+      ],
+      "message": "Initial commit",
+      "author_name": "John Smith",
+      "author_email": "john@example.com",
+      "authored_date": "2012-05-28T04:42:42-07:00",
+      "committer_name": "Jack Smith",
+      "committer_email": "jack@example.com",
+      "committed_date": "2012-05-28T04:42:42-07:00"
+    },
+    "release": {
+      "tag_name": "1.0.0",
+      "description": "Amazing release. Wow"
+    },
+    "name": "v1.0.0",
+    "target": "2695effb5807a22ff3d138d593fd856244e155e7",
+    "message": null,
+    "protected": true
+  }
+]
diff --git a/data/api/tags/single-repository-tag.json b/data/api/tags/single-repository-tag.json
new file mode 100644
--- /dev/null
+++ b/data/api/tags/single-repository-tag.json
@@ -0,0 +1,23 @@
+{
+  "name": "v5.0.0",
+  "message": null,
+  "target": "60a8ff033665e1207714d6670fcd7b65304ec02f",
+  "commit": {
+    "id": "60a8ff033665e1207714d6670fcd7b65304ec02f",
+    "short_id": "60a8ff03",
+    "title": "Initial commit",
+    "created_at": "2017-07-26T11:08:53.000+02:00",
+    "parent_ids": [
+      "f61c062ff8bcbdb00e0a1b3317a91aed6ceee06b"
+    ],
+    "message": "v5.0.0\n",
+    "author_name": "Arthur Verschaeve",
+    "author_email": "contact@arthurverschaeve.be",
+    "authored_date": "2015-02-01T21:56:31.000+01:00",
+    "committer_name": "Arthur Verschaeve",
+    "committer_email": "contact@arthurverschaeve.be",
+    "committed_date": "2015-02-01T21:56:31.000+01:00"
+  },
+  "release": null,
+  "protected": false
+}
diff --git a/data/api/todos/mark-todo-item-done.json b/data/api/todos/mark-todo-item-done.json
new file mode 100644
--- /dev/null
+++ b/data/api/todos/mark-todo-item-done.json
@@ -0,0 +1,75 @@
+{
+    "id": 102,
+    "project": {
+      "id": 2,
+      "name": "Gitlab Ce",
+      "name_with_namespace": "Gitlab Org / Gitlab Ce",
+      "path": "gitlab-foss",
+      "path_with_namespace": "gitlab-org/gitlab-foss"
+    },
+    "author": {
+      "name": "Administrator",
+      "username": "root",
+      "id": 1,
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/root"
+    },
+    "action_name": "marked",
+    "target_type": "MergeRequest",
+    "target": {
+      "id": 34,
+      "iid": 7,
+      "project_id": 2,
+      "title": "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",
+      "description": "Et ea et omnis illum cupiditate. Dolor aspernatur tenetur ducimus facilis est nihil. Quo esse cupiditate molestiae illo corrupti qui quidem dolor.",
+      "state": "opened",
+      "created_at": "2016-06-17T07:49:24.419Z",
+      "updated_at": "2016-06-17T07:52:43.484Z",
+      "target_branch": "tutorials_git_tricks",
+      "source_branch": "DNSBL_docs",
+      "upvotes": 0,
+      "downvotes": 0,
+      "author": {
+        "name": "Maxie Medhurst",
+        "username": "craig_rutherford",
+        "id": 12,
+        "state": "active",
+        "avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon",
+        "web_url": "https://gitlab.example.com/craig_rutherford"
+      },
+      "assignee": {
+        "name": "Administrator",
+        "username": "root",
+        "id": 1,
+        "state": "active",
+        "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+        "web_url": "https://gitlab.example.com/root"
+      },
+      "source_project_id": 2,
+      "target_project_id": 2,
+      "labels": [],
+      "draft": false,
+      "work_in_progress": false,
+      "milestone": {
+        "id": 32,
+        "iid": 2,
+        "project_id": 2,
+        "title": "v1.0",
+        "description": "Assumenda placeat ea voluptatem voluptate qui.",
+        "state": "active",
+        "created_at": "2016-06-17T07:47:34.163Z",
+        "updated_at": "2016-06-17T07:47:34.163Z",
+        "due_date": null
+      },
+      "merge_when_pipeline_succeeds": false,
+      "merge_status": "cannot_be_merged",
+      "subscribed": true,
+      "user_notes_count": 7
+    },
+    "target_url": "https://gitlab.example.com/gitlab-org/gitlab-foss/-/merge_requests/7",
+    "body": "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",
+    "state": "done",
+    "created_at": "2016-06-17T07:52:35.225Z",
+    "updated_at": "2016-06-17T07:52:35.225Z"
+}
diff --git a/data/api/todos/todo-items.json b/data/api/todos/todo-items.json
new file mode 100644
--- /dev/null
+++ b/data/api/todos/todo-items.json
@@ -0,0 +1,150 @@
+[
+  {
+    "id": 102,
+    "project": {
+      "id": 2,
+      "name": "Gitlab Ce",
+      "name_with_namespace": "Gitlab Org / Gitlab Ce",
+      "path": "gitlab-foss",
+      "path_with_namespace": "gitlab-org/gitlab-foss"
+    },
+    "author": {
+      "name": "Administrator",
+      "username": "root",
+      "id": 1,
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/root"
+    },
+    "action_name": "marked",
+    "target_type": "MergeRequest",
+    "target": {
+      "id": 34,
+      "iid": 7,
+      "project_id": 2,
+      "title": "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",
+      "description": "Et ea et omnis illum cupiditate. Dolor aspernatur tenetur ducimus facilis est nihil. Quo esse cupiditate molestiae illo corrupti qui quidem dolor.",
+      "state": "opened",
+      "created_at": "2016-06-17T07:49:24.419Z",
+      "updated_at": "2016-06-17T07:52:43.484Z",
+      "target_branch": "tutorials_git_tricks",
+      "source_branch": "DNSBL_docs",
+      "upvotes": 0,
+      "downvotes": 0,
+      "author": {
+        "name": "Maxie Medhurst",
+        "username": "craig_rutherford",
+        "id": 12,
+        "state": "active",
+        "avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon",
+        "web_url": "https://gitlab.example.com/craig_rutherford"
+      },
+      "assignee": {
+        "name": "Administrator",
+        "username": "root",
+        "id": 1,
+        "state": "active",
+        "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+        "web_url": "https://gitlab.example.com/root"
+      },
+      "source_project_id": 2,
+      "target_project_id": 2,
+      "labels": [],
+      "draft": false,
+      "work_in_progress": false,
+      "milestone": {
+        "id": 32,
+        "iid": 2,
+        "project_id": 2,
+        "title": "v1.0",
+        "description": "Assumenda placeat ea voluptatem voluptate qui.",
+        "state": "active",
+        "created_at": "2016-06-17T07:47:34.163Z",
+        "updated_at": "2016-06-17T07:47:34.163Z",
+        "due_date": null
+      },
+      "merge_when_pipeline_succeeds": false,
+      "merge_status": "cannot_be_merged",
+      "user_notes_count": 7
+    },
+    "target_url": "https://gitlab.example.com/gitlab-org/gitlab-foss/-/merge_requests/7",
+    "body": "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",
+    "state": "pending",
+    "created_at": "2016-06-17T07:52:35.225Z",
+    "updated_at": "2016-06-17T07:52:35.225Z"
+  },
+  {
+    "id": 98,
+    "project": {
+      "id": 2,
+      "name": "Gitlab Ce",
+      "name_with_namespace": "Gitlab Org / Gitlab Ce",
+      "path": "gitlab-foss",
+      "path_with_namespace": "gitlab-org/gitlab-foss"
+    },
+    "author": {
+      "name": "Maxie Medhurst",
+      "username": "craig_rutherford",
+      "id": 12,
+      "state": "active",
+      "avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon",
+      "web_url": "https://gitlab.example.com/craig_rutherford"
+    },
+    "action_name": "assigned",
+    "target_type": "MergeRequest",
+    "target": {
+      "id": 34,
+      "iid": 7,
+      "project_id": 2,
+      "title": "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",
+      "description": "Et ea et omnis illum cupiditate. Dolor aspernatur tenetur ducimus facilis est nihil. Quo esse cupiditate molestiae illo corrupti qui quidem dolor.",
+      "state": "opened",
+      "created_at": "2016-06-17T07:49:24.419Z",
+      "updated_at": "2016-06-17T07:52:43.484Z",
+      "target_branch": "tutorials_git_tricks",
+      "source_branch": "DNSBL_docs",
+      "upvotes": 0,
+      "downvotes": 0,
+      "author": {
+        "name": "Maxie Medhurst",
+        "username": "craig_rutherford",
+        "id": 12,
+        "state": "active",
+        "avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon",
+        "web_url": "https://gitlab.example.com/craig_rutherford"
+      },
+      "assignee": {
+        "name": "Administrator",
+        "username": "root",
+        "id": 1,
+        "state": "active",
+        "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+        "web_url": "https://gitlab.example.com/root"
+      },
+      "source_project_id": 2,
+      "target_project_id": 2,
+      "labels": [],
+      "draft": false,
+      "work_in_progress": false,
+      "milestone": {
+        "id": 32,
+        "iid": 2,
+        "project_id": 2,
+        "title": "v1.0",
+        "description": "Assumenda placeat ea voluptatem voluptate qui.",
+        "state": "active",
+        "created_at": "2016-06-17T07:47:34.163Z",
+        "updated_at": "2016-06-17T07:47:34.163Z",
+        "due_date": null
+      },
+      "merge_when_pipeline_succeeds": false,
+      "merge_status": "cannot_be_merged",
+      "user_notes_count": 7
+    },
+    "target_url": "https://gitlab.example.com/gitlab-org/gitlab-foss/-/merge_requests/7",
+    "body": "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",
+    "state": "pending",
+    "created_at": "2016-06-17T07:49:24.624Z",
+    "updated_at": "2016-06-17T07:49:24.624Z"
+  }
+]
diff --git a/data/api/users/add-ssh-key.json b/data/api/users/add-ssh-key.json
new file mode 100644
--- /dev/null
+++ b/data/api/users/add-ssh-key.json
@@ -0,0 +1,5 @@
+{
+  "title": "ABC",
+  "key": "ssh-dss AAAAB3NzaC1kc3MAAACBAMLrhYgI3atfrSD6KDas1b/3n6R/HP+bLaHHX6oh+L1vg31mdUqK0Ac/NjZoQunavoyzqdPYhFz9zzOezCrZKjuJDS3NRK9rspvjgM0xYR4d47oNZbdZbwkI4cTv/gcMlquRy0OvpfIvJtjtaJWMwTLtM5VhRusRuUlpH99UUVeXAAAAFQCVyX+92hBEjInEKL0v13c/egDCTQAAAIEAvFdWGq0ccOPbw4f/F8LpZqvWDydAcpXHV3thwb7WkFfppvm4SZte0zds1FJ+Hr8Xzzc5zMHe6J4Nlay/rP4ewmIW7iFKNBEYb/yWa+ceLrs+TfR672TaAgO6o7iSRofEq5YLdwgrwkMmIawa21FrZ2D9SPao/IwvENzk/xcHu7YAAACAQFXQH6HQnxOrw4dqf0NqeKy1tfIPxYYUZhPJfo9O0AmBW2S36pD2l14kS89fvz6Y1g8gN/FwFnRncMzlLY/hX70FSc/3hKBSbH6C6j8hwlgFKfizav21eS358JJz93leOakJZnGb8XlWvz1UJbwCsnR2VEY8Dz90uIk1l/UqHkA= loic@call",
+  "expires_at": "2016-01-21T00:00:00Z"
+}
diff --git a/data/api/users/current-user.json b/data/api/users/current-user.json
new file mode 100644
--- /dev/null
+++ b/data/api/users/current-user.json
@@ -0,0 +1,35 @@
+{
+  "id": 1,
+  "username": "john_smith",
+  "email": "john@example.com",
+  "name": "John Smith",
+  "state": "active",
+  "avatar_url": "http://localhost:3000/uploads/user/avatar/1/index.jpg",
+  "web_url": "http://localhost:3000/john_smith",
+  "created_at": "2012-05-23T08:00:58Z",
+  "bio": "",
+  "location": null,
+  "public_email": "john@example.com",
+  "skype": "",
+  "linkedin": "",
+  "twitter": "",
+  "website_url": "",
+  "organization": "",
+  "last_sign_in_at": "2012-06-01T11:41:01Z",
+  "confirmed_at": "2012-05-23T09:05:22Z",
+  "theme_id": 1,
+  "last_activity_on": "2012-05-23",
+  "color_scheme_id": 2,
+  "projects_limit": 100,
+  "current_sign_in_at": "2012-06-02T06:36:55Z",
+  "identities": [
+    {"provider": "github", "extern_uid": "2435223452345"},
+    {"provider": "bitbucket", "extern_uid": "john_smith"},
+    {"provider": "google_oauth2", "extern_uid": "8776128412476123468721346"}
+  ],
+  "can_create_group": true,
+  "can_create_project": true,
+  "two_factor_enabled": true,
+  "external": false,
+  "private_profile": false
+}
diff --git a/data/api/users/emails.json b/data/api/users/emails.json
new file mode 100644
--- /dev/null
+++ b/data/api/users/emails.json
@@ -0,0 +1,12 @@
+[
+  {
+    "id": 1,
+    "email": "email@example.com",
+    "confirmed_at" : "2021-03-26T19:07:56.248Z"
+  },
+  {
+    "id": 3,
+    "email": "email2@example.com",
+    "confirmed_at" : null
+  }
+]
diff --git a/data/api/users/follow-user.json b/data/api/users/follow-user.json
new file mode 100644
--- /dev/null
+++ b/data/api/users/follow-user.json
@@ -0,0 +1,8 @@
+{
+  "id": 1,
+  "username": "john_smith",
+  "name": "John Smith",
+  "state": "active",
+  "avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
+  "web_url": "http://localhost:3000/john_smith"
+}
diff --git a/data/api/users/followers.json b/data/api/users/followers.json
new file mode 100644
--- /dev/null
+++ b/data/api/users/followers.json
@@ -0,0 +1,18 @@
+[
+  {
+    "id": 2,
+    "name": "Lennie Donnelly",
+    "username": "evette.kilback",
+    "state": "active",
+    "avatar_url": "https://www.gravatar.com/avatar/7955171a55ac4997ed81e5976287890a?s=80&d=identicon",
+    "web_url": "http://127.0.0.1:3000/evette.kilback"
+  },
+  {
+    "id": 4,
+    "name": "Serena Bradtke",
+    "username": "cammy",
+    "state": "active",
+    "avatar_url": "https://www.gravatar.com/avatar/a2daad869a7b60d3090b7b9bef4baf57?s=80&d=identicon",
+    "web_url": "http://127.0.0.1:3000/cammy"
+  }
+]
diff --git a/data/api/users/gpg-keys.json b/data/api/users/gpg-keys.json
new file mode 100644
--- /dev/null
+++ b/data/api/users/gpg-keys.json
@@ -0,0 +1,7 @@
+[
+    {
+        "id": 1,
+        "key": "-----BEGIN PGP PUBLIC KEY BLOCK-----\r\n\r\nxsBNBFVjnlIBCACibzXOLCiZiL2oyzYUaTOCkYnSUhymg3pdbfKtd4mpBa58xKBj\r\nt1pTHVpw3Sk03wmzhM/Ndlt1AV2YhLv++83WKr+gAHFYFiCV/tnY8bx3HqvVoy8O\r\nCfxWhw4QZK7+oYzVmJj8ZJm3ZjOC4pzuegNWlNLCUdZDx9OKlHVXLCX1iUbjdYWa\r\nqKV6tdV8hZolkbyjedQgrpvoWyeSHHpwHF7yk4gNJWMMI5rpcssL7i6mMXb/sDzO\r\nVaAtU5wiVducsOa01InRFf7QSTxoAm6Xy0PGv/k48M6xCALa9nY+BzlOv47jUT57\r\nvilf4Szy9dKD0v9S0mQ+IHB+gNukWrnwtXx5ABEBAAHNFm5hbWUgKGNvbW1lbnQp\r\nIDxlbUBpbD7CwHUEEwECACkFAlVjnlIJEINgJNgv009/AhsDAhkBBgsJCAcDAgYV\r\nCAIJCgsEFgIDAQAAxqMIAFBHuBA8P1v8DtHonIK8Lx2qU23t8Mh68HBIkSjk2H7/\r\noO2cDWCw50jZ9D91PXOOyMPvBWV2IE3tARzCvnNGtzEFRtpIEtZ0cuctxeIF1id5\r\ncrfzdMDsmZyRHAOoZ9VtuD6mzj0ybQWMACb7eIHjZDCee3Slh3TVrLy06YRdq2I4\r\nbjMOPePtK5xnIpHGpAXkB3IONxyITpSLKsA4hCeP7gVvm7r7TuQg1ygiUBlWbBYn\r\niE5ROzqZjG1s7dQNZK/riiU2umGqGuwAb2IPvNiyuGR3cIgRE4llXH/rLuUlspAp\r\no4nlxaz65VucmNbN1aMbDXLJVSqR1DuE00vEsL1AItI=\r\n=XQoy\r\n-----END PGP PUBLIC KEY BLOCK-----",
+        "created_at": "2017-09-05T09:17:46.264Z"
+    }
+]
diff --git a/data/api/users/list-user.json b/data/api/users/list-user.json
new file mode 100644
--- /dev/null
+++ b/data/api/users/list-user.json
@@ -0,0 +1,21 @@
+{
+  "id": 1,
+  "username": "john_smith",
+  "name": "John Smith",
+  "state": "active",
+  "avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
+  "web_url": "http://localhost:3000/john_smith",
+  "created_at": "2012-05-23T08:00:58Z",
+  "bio": "",
+  "bot": false,
+  "location": null,
+  "public_email": "john@example.com",
+  "skype": "",
+  "linkedin": "",
+  "twitter": "",
+  "website_url": "",
+  "organization": "",
+  "job_title": "Operations Specialist",
+  "followers": 1,
+  "following": 1
+}
diff --git a/data/api/users/list-users.json b/data/api/users/list-users.json
new file mode 100644
--- /dev/null
+++ b/data/api/users/list-users.json
@@ -0,0 +1,18 @@
+[
+  {
+    "id": 1,
+    "username": "john_smith",
+    "name": "John Smith",
+    "state": "active",
+    "avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
+    "web_url": "http://localhost:3000/john_smith"
+  },
+  {
+    "id": 2,
+    "username": "jack_smith",
+    "name": "Jack Smith",
+    "state": "blocked",
+    "avatar_url": "http://gravatar.com/../e32131cd8.jpeg",
+    "web_url": "http://localhost:3000/jack_smith"
+  }
+]
diff --git a/data/api/users/set-user-status.json b/data/api/users/set-user-status.json
new file mode 100644
--- /dev/null
+++ b/data/api/users/set-user-status.json
@@ -0,0 +1,6 @@
+{
+  "emoji":"coffee",
+  "message":"I crave coffee",
+  "message_html": "I crave coffee",
+  "clear_status_at":"2021-02-15T10:49:01.311Z"
+}
diff --git a/data/api/users/ssh-key.json b/data/api/users/ssh-key.json
new file mode 100644
--- /dev/null
+++ b/data/api/users/ssh-key.json
@@ -0,0 +1,6 @@
+{
+  "id": 1,
+  "title": "Public key",
+  "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
+  "created_at": "2014-08-01T14:47:39.08Z"
+}
diff --git a/data/api/users/ssh-keys.json b/data/api/users/ssh-keys.json
new file mode 100644
--- /dev/null
+++ b/data/api/users/ssh-keys.json
@@ -0,0 +1,14 @@
+[
+  {
+    "id": 1,
+    "title": "Public key",
+    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
+    "created_at": "2014-08-01T14:47:39.08Z"
+  },
+  {
+    "id": 3,
+    "title": "Another Public key",
+    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
+    "created_at": "2014-08-01T14:47:39.08Z"
+  }
+]
diff --git a/data/api/users/user-counts.json b/data/api/users/user-counts.json
new file mode 100644
--- /dev/null
+++ b/data/api/users/user-counts.json
@@ -0,0 +1,7 @@
+{
+  "merge_requests": 4,
+  "assigned_issues": 15,
+  "assigned_merge_requests": 11,
+  "review_requested_merge_requests": 0,
+  "todos": 1
+}
diff --git a/data/api/users/user-preferences.json b/data/api/users/user-preferences.json
new file mode 100644
--- /dev/null
+++ b/data/api/users/user-preferences.json
@@ -0,0 +1,6 @@
+{
+    "id": 1,
+    "user_id": 1,
+    "view_diffs_file_by_file": true,
+    "show_whitespace_in_diffs": false
+}
diff --git a/data/api/users/user-status.json b/data/api/users/user-status.json
new file mode 100644
--- /dev/null
+++ b/data/api/users/user-status.json
@@ -0,0 +1,7 @@
+{
+  "emoji":"coffee",
+  "availability":"busy",
+  "message":"I crave coffee :coffee:",
+  "message_html": "I crave coffee <gl-emoji title=\"hot beverage\" data-name=\"coffee\" data-unicode-version=\"4.0\">☕</gl-emoji>",
+  "clear_status_at": null
+}
diff --git a/data/api/version/version.json b/data/api/version/version.json
new file mode 100644
--- /dev/null
+++ b/data/api/version/version.json
@@ -0,0 +1,4 @@
+{
+  "version": "8.13.0-pre",
+  "revision": "4e963fe"
+}
diff --git a/gitlab-haskell.cabal b/gitlab-haskell.cabal
--- a/gitlab-haskell.cabal
+++ b/gitlab-haskell.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.4
 name:           gitlab-haskell
 category:       Git
-version:        1.0.0.3
+version:        1.0.0.4
 synopsis:       A Haskell library for the GitLab web API
 description:
             This library lifts the GitLab REST API into Haskell: <https://docs.gitlab.com/ee/api/>
@@ -11,17 +11,157 @@
 bug-reports:    https://gitlab.com/robstewart57/gitlab-haskell/issues
 author:         Rob Stewart
 maintainer:     robstewart57@gmail.com
-copyright:      2022 Rob Stewart, Heriot-Watt University
+copyright:      2024 Rob Stewart, Heriot-Watt University
 license:        BSD-3-Clause
 license-file:   LICENSE
 data-files:     data/system-hooks/*.json
 build-type:     Simple
 extra-source-files:
     README.md
+  , data/api/repository-files/update-existing-file-in-repository.json
+  , data/api/repository-files/create-new-file-in-repository.json
+  , data/api/repository-files/get-file-from-repository.json
+  , data/api/repository-files/get-file-blame-from-repository.json
+  , data/api/notes/single-snippet-note.json
+  , data/api/notes/single-merge-request-note.json
+  , data/api/notes/project-issue-notes.json
+  , data/api/groups/search-for-group.json
+  , data/api/groups/details-of-group-with-projects-false.json
+  , data/api/groups/list-group-subgroups.json
+  , data/api/groups/list-groups-with-stats.json
+  , data/api/groups/list-groups.json
+  , data/api/groups/list-group-projects.json
+  , data/api/groups/list-group-descendant-groups.json
+  , data/api/groups/details-of-group.json
+  , data/api/groups/update-group.json
+  , data/api/groups/list-group-shared-projects.json
+  , data/api/events/list-current-authenticated-users-events.json
+  , data/api/events/get-user-contributions-events.json
+  , data/api/events/list-projects-visible-events.json
+  , data/api/pipelines/cancel-pipeline-jobs.json
+  , data/api/version/version.json
+  , data/api/commits/get-comments-of-commit.json
+  , data/api/commits/get-diff-of-commit.json
+  , data/api/commits/create-commit-multiple-files-commits.json
+  , data/api/commits/cherry-pick-commit.json
+  , data/api/commits/list-repository-commits.json
+  , data/api/commits/revert-commit.json
+  , data/api/users/current-user.json
+  , data/api/users/set-user-status.json
+  , data/api/users/user-status.json
+  , data/api/users/ssh-keys.json
+  , data/api/users/gpg-keys.json
+  , data/api/users/user-counts.json
+  , data/api/users/add-ssh-key.json
+  , data/api/users/list-users.json
+  , data/api/users/ssh-key.json
+  , data/api/users/follow-user.json
+  , data/api/users/list-user.json
+  , data/api/users/followers.json
+  , data/api/users/user-preferences.json
+  , data/api/users/emails.json
+  , data/api/tags/create-new-tag.json
+  , data/api/tags/list-project-repository-tags.json
+  , data/api/tags/single-repository-tag.json
+  , data/api/repositories/merge-base.json
+  , data/api/repositories/list-repository-tree.json
+  , data/api/repositories/contributors.json
+  , data/api/branches/list-repository-branches.json
+  , data/api/branches/get-single-repository-branch.json
+  , data/api/branches/create-repository-branch.json
+  , data/api/members/add-member-group-project.json
+  , data/api/members/list-all-memembers-group-or-project-including-inherited-invited.json
+  , data/api/members/member-group-or-project-including-inherited-invited.json
+  , data/api/members/member-group-or-project.json
+  , data/api/members/billable-members-of-group.json
+  , data/api/members/removed-override-flag-member-group.json
+  , data/api/members/edit-member-group-project.json
+  , data/api/members/list-pending-members.json
+  , data/api/members/override-flag-member-group.json
+  , data/api/members/list-all-memembers-group-or-project.json
+  , data/api/members/membership-billable-member-of-group.json
+  , data/api/projects/list-forks-of-project.json
+  , data/api/projects/archive-project.json
+  , data/api/projects/transfer-project-new-namespace.json
+  , data/api/projects/list-project-groups.json
+  , data/api/projects/get-project-users.json
+  , data/api/projects/starrers-of-project.json
+  , data/api/projects/unarchive-project.json
+  , data/api/projects/get-single-project.json
+  , data/api/projects/star-project.json
+  , data/api/projects/get-path-to-repository-storage.json
+  , data/api/projects/list-projects-starred-by-user.json
+  , data/api/projects/upload-project-avatar.json
+  , data/api/projects/list-all-projects.json
+  , data/api/projects/list-user-projects.json
+  , data/api/projects/unstar-project.json
+  , data/api/boards/update-board.json
   , data/api/boards/list-project.json
   , data/api/boards/create-board.json
-  , data/api/boards/update-board.json
-
+  , data/api/issues/get-time-tracking-stats.json
+  , data/api/issues/edit-issue.json
+  , data/api/issues/single-issue.json
+  , data/api/issues/reset-time-estimate-for-issue.json
+  , data/api/issues/single-project-issue.json
+  , data/api/issues/reset-time-spent-for-issue.json
+  , data/api/issues/unsubscribe-from-issue.json
+  , data/api/issues/clone-issue.json
+  , data/api/issues/promote-issue-to-epic.json
+  , data/api/issues/merge-requests-related-to-issue.json
+  , data/api/issues/subscribe-to-issue.json
+  , data/api/issues/set-time-estimate-for-issue.json
+  , data/api/issues/merge-requests-close-issue-on-merge.json
+  , data/api/issues/create-todo-item.json
+  , data/api/issues/list-group-issues.json
+  , data/api/issues/move-issue.json
+  , data/api/issues/new-issue.json
+  , data/api/issues/list-issues.json
+  , data/api/issues/add-time-spent-for-issue.json
+  , data/api/issues/list-project-issues.json
+  , data/api/issues/participants-on-issues.json
+  , data/api/discussions/list-project-discussion-items.json
+  , data/api/discussions/list-project-merge-request-discussion-items.json
+  , data/api/discussions/list-project-snippet-discussion-items.json
+  , data/api/discussions/list-group-epic-discussion-items.json
+  , data/api/discussions/list-project-commit-discussion-items.json
+  , data/api/jobs/pipeline-bridges.json
+  , data/api/jobs/erase-job.json
+  , data/api/jobs/retry-job.json
+  , data/api/jobs/job-tokens-job.json
+  , data/api/jobs/cancel-job.json
+  , data/api/jobs/project-jobs.json
+  , data/api/jobs/pipeline-jobs.json
+  , data/api/jobs/play-job.json
+  , data/api/jobs/single-job.json
+  , data/api/todos/mark-todo-item-done.json
+  , data/api/todos/todo-items.json
+  , data/api/merge-requests/list-group-merge-requests.json
+  , data/api/merge-requests/single-merge-request-commits.json
+  , data/api/merge-requests/reset-time-merge-request.json
+  , data/api/merge-requests/time-tracking-stats.json
+  , data/api/merge-requests/cancel-merge-request-when-pipeline-succeeds.json
+  , data/api/merge-requests/single-merge-request-participants.json
+  , data/api/merge-requests/list-merge-requests.json
+  , data/api/merge-requests/get-merge-request-diff-versions.json
+  , data/api/merge-requests/add-spent-time-merge-request.json
+  , data/api/merge-requests/update-merge-request.json
+  , data/api/merge-requests/create-merge-request-pipeline.json
+  , data/api/merge-requests/single-merge-request-changes.json
+  , data/api/merge-requests/list-project-merge-requests.json
+  , data/api/merge-requests/reset-time-estimate-merge-request.json
+  , data/api/merge-requests/subscribe-merge-request.json
+  , data/api/merge-requests/rebase-merge-request.json
+  , data/api/merge-requests/create-todo-item.json
+  , data/api/merge-requests/time-estimate-merge-request.json
+  , data/api/merge-requests/list-merge-request-pipelines.json
+  , data/api/merge-requests/single-merge-request.json
+  , data/api/merge-requests/merge-to-default-merge-path.json
+  , data/api/merge-requests/single-merge-request-diff-version.json
+  , data/api/merge-requests/comments-on-merge-requests.json
+  , data/api/merge-requests/accept-merge-request.json
+  , data/api/merge-requests/unsubscribe-merge-request.json
+  , data/api/merge-requests/create-merge-request.json
+ 
 source-repository head
   type: git
   location: https://gitlab.com/robstewart57/gitlab-haskell
