packages feed

gitlab-haskell 1.0.2.2 → 1.1.0.0

raw patch · 27 files changed

+3253/−133 lines, 27 filesdep +data-defaultdep −data-default-class

Dependencies added: data-default

Dependencies removed: data-default-class

Files

+ data/system-hooks/build.json view
@@ -0,0 +1,67 @@+{+  "object_kind": "build",+  "ref": "master",+  "tag": false,+  "before_sha": "19d1543c2f5ea888e3c69019bd7e3daff228fcbc",+  "sha": "12fc8bb3a8b3f52c5bffa020e6d362027c724359",+  "retries_count": 0,+  "build_id": 47423,+  "build_name": "junit",+  "build_stage": "test",+  "build_status": "created",+  "build_created_at": "2024-11-01 20:15:34 UTC",+  "build_started_at": null,+  "build_finished_at": null,+  "build_duration": null,+  "build_queued_duration": null,+  "build_allow_failure": false,+  "build_failure_reason": "unknown_failure",+  "pipeline_id": 32611,+  "runner": null,+  "project_id": 25039,+  "project_name": "Joe / repo-name",+  "user": {+    "id": 2682,+    "name": "Joe",+    "username": "joe",+    "avatar_url": "https://secure.gravatar.com/avatar/abcde",+    "email": "[REDACTED]"+  },+  "commit": {+    "id": 32611,+    "name": null,+    "sha": "12fc8bb3a8b3f52c5bffa020e6d362027c724359",+    "message": "the message",+    "author_name": "Joe",+    "author_email": "joe@gmail.com",+    "author_url": "mailto:joe@gmail.com",+    "status": "created",+    "duration": null,+    "started_at": null,+    "finished_at": null+  },+  "repository": {+    "name": "repo-name",+    "url": "git@example.com:joe/repo-name.git",+    "description": null,+    "homepage": "https://example.com/joe/repo-name",+    "git_http_url": "https://example.com/joe/repo-name.git",+    "git_ssh_url": "git@example.com:joe/repo-name.git",+    "visibility_level": 0+  },+  "project": {+    "id": 25039,+    "name": "repo-name",+    "description": null,+    "web_url": "https://example.com/joe/repo-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/repo-name.git",+    "git_http_url": "https://example.com/joe/repo-name.git",+    "namespace": "Joe",+    "visibility_level": 0,+    "path_with_namespace": "joe/repo-name",+    "default_branch": "master",+    "ci_config_path": null+  },+  "environment": null+}
+ data/system-hooks/build2.json view
@@ -0,0 +1,74 @@+{+  "object_kind": "build",+  "ref": "master",+  "tag": false,+  "before_sha": "edcba",+  "sha": "abcde",+  "retries_count": 0,+  "build_id": 47500,+  "build_name": "junit",+  "build_stage": "test",+  "build_status": "failed",+  "build_created_at": "2024-11-02 18:29:00 UTC",+  "build_started_at": "2024-11-02 18:29:01 UTC",+  "build_finished_at": "2024-11-02 18:29:06 UTC",+  "build_duration": 4.543246,+  "build_queued_duration": 1.08065,+  "build_allow_failure": false,+  "build_failure_reason": "script_failure",+  "pipeline_id": 32685,+  "runner": {+    "id": 17,+    "description": "",+    "runner_type": "instance_type",+    "active": true,+    "is_shared": true,+    "tags": []+  },+  "project_id": 25078,+  "project_name": "joe/proj-name",+  "user": {+    "id": 742,+    "name": "Goddard, Jamie",+    "username": "jg2078",+    "avatar_url": "https://secure.gravatar.com/avatar/abc",+    "email": "[REDACTED]"+  },+  "commit": {+    "id": 32685,+    "name": null,+    "sha": "abcde",+    "message": "message name",+    "author_name": "joe",+    "author_email": "joe@gmail.com",+    "author_url": "mailto:joe@gmail.com",+    "status": "failed",+    "duration": 4,+    "started_at": "2024-11-02 18:29:01 UTC",+    "finished_at": "2024-11-02 18:29:06 UTC"+  },+  "repository": {+    "name": "proj-name",+    "url": "git@example.com:joe/proj-name.git",+    "description": null,+    "homepage": "https://example.com/joe/proj-name",+    "git_http_url": "https://example.com/joe/proj-name.git",+    "git_ssh_url": "git@example.com:joe/proj-name.git",+    "visibility_level": 0+  },+  "project": {+    "id": 25078,+    "name": "proj-name",+    "description": null,+    "web_url": "https://example.com/joe/proj-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/proj-name.git",+    "git_http_url": "https://example.com/joe/proj-name.git",+    "namespace": "Joe",+    "visibility_level": 0,+    "path_with_namespace": "joe/proj-name",+    "default_branch": "master",+    "ci_config_path": null+  },+  "environment": null+}
+ data/system-hooks/group-created2.json view
@@ -0,0 +1,9 @@+{+  "created_at": "2024-11-22T12:03:34Z",+  "updated_at": "2024-11-22T12:03:34Z",+  "event_name": "group_create",+  "name": "the-name",+  "path": "the-path",+  "full_path": "namespace1/the-path",+  "group_id": 31780+}
+ data/system-hooks/issue1.json view
@@ -0,0 +1,124 @@+{+  "object_kind": "issue",+  "event_type": "issue",+  "user": {+    "id": 2052,+    "name": "Joe",+    "username": "ma2305",+    "avatar_url": "https://secure.gravatar.com/avatar/abcde",+    "email": "[REDACTED]"+  },+  "project": {+    "id": 19102,+    "name": "proj-name",+    "description": "",+    "web_url": "https://example.com/joe123/proj-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe123/proj-name.git",+    "git_http_url": "https://example.com/joe123/proj-name.git",+    "namespace": "Joe",+    "visibility_level": 0,+    "path_with_namespace": "joe123/proj-name",+    "default_branch": "master",+    "ci_config_path": null,+    "homepage": "https://example.com/joe123/proj-name",+    "url": "git@example.com:joe123/proj-name.git",+    "ssh_url": "git@example.com:joe123/proj-name.git",+    "http_url": "https://example.com/joe123/proj-name.git"+  },+  "object_attributes": {+    "author_id": 2052,+    "closed_at": "2024-11-02 19:47:16 UTC",+    "confidential": false,+    "created_at": "2024-11-02 05:45:09 UTC",+    "description": "",+    "discussion_locked": null,+    "due_date": null,+    "id": 2183,+    "iid": 40,+    "last_edited_at": null,+    "last_edited_by_id": null,+    "milestone_id": null,+    "moved_to_id": null,+    "duplicated_to_id": null,+    "project_id": 19102,+    "relative_position": 20520,+    "state_id": 2,+    "time_estimate": 0,+    "title": "Issue title",+    "updated_at": "2024-11-02 19:47:17 UTC",+    "updated_by_id": null,+    "type": "Issue",+    "url": "https://example.com/joe123/proj-name/-/issues/40",+    "total_time_spent": 0,+    "time_change": 0,+    "human_total_time_spent": null,+    "human_time_change": null,+    "human_time_estimate": null,+    "assignee_ids": [+      2052+    ],+    "assignee_id": 2052,+    "labels": [+      {+        "id": 385,+        "title": "Stage 3",+        "color": "#cd5b45",+        "project_id": 19102,+        "created_at": "2024-11-02 05:42:30 UTC",+        "updated_at": "2024-11-02 05:42:30 UTC",+        "template": false,+        "description": null,+        "type": "ProjectLabel",+        "group_id": null+      }+    ],+    "state": "closed",+    "severity": "unknown",+    "customer_relations_contacts": [],+    "action": "close"+  },+  "labels": [+    {+      "id": 385,+      "title": "Stage 3",+      "color": "#cd5b45",+      "project_id": 19102,+      "created_at": "2024-11-02 05:42:30 UTC",+      "updated_at": "2024-11-02 05:42:30 UTC",+      "template": false,+      "description": null,+      "type": "ProjectLabel",+      "group_id": null+    }+  ],+  "changes": {+    "closed_at": {+      "previous": null,+      "current": "2024-11-02 19:47:16 UTC"+    },+    "state_id": {+      "previous": 1,+      "current": 2+    },+    "updated_at": {+      "previous": "2024-11-02 05:45:09 UTC",+      "current": "2024-11-02 19:47:17 UTC"+    }+  },+  "repository": {+    "name": "proj-name",+    "url": "git@example.com:joe123/proj-name.git",+    "description": "",+    "homepage": "https://example.com/joe123/proj-name"+  },+  "assignees": [+    {+      "id": 2052,+      "name": "Joe",+      "username": "joe123",+      "avatar_url": "https://secure.gravatar.com/avatar/abcde",+      "email": "[REDACTED]"+    }+  ]+}
+ data/system-hooks/issue2.json view
@@ -0,0 +1,144 @@+{+  "object_kind": "issue",+  "event_type": "issue",+  "user": {+    "id": 2617,+    "name": "Joe",+    "username": "joe",+    "avatar_url": "https://secure.gravatar.com/avatar/abc",+    "email": "[REDACTED]"+  },+  "project": {+    "id": 20125,+    "name": "proj-name",+    "description": "the description",+    "web_url": "https://example.com/joe/proj-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/proj-name.git",+    "git_http_url": "https://example.com/joe/proj-name.git",+    "namespace": "Joe",+    "visibility_level": 0,+    "path_with_namespace": "joe/proj-name",+    "default_branch": "master",+    "ci_config_path": null,+    "homepage": "https://example.com/joe/proj-name",+    "url": "git@example.com:joe/proj-name.git",+    "ssh_url": "git@example.com:joe/proj-name.git",+    "http_url": "https://example.com/joe/proj-name.git"+  },+  "object_attributes": {+    "author_id": 2617,+    "closed_at": null,+    "confidential": false,+    "created_at": "2024-11-09 00:44:06 UTC",+    "description": "issue description",+    "discussion_locked": null,+    "due_date": null,+    "id": 2286,+    "iid": 25,+    "last_edited_at": null,+    "last_edited_by_id": null,+    "milestone_id": null,+    "moved_to_id": null,+    "duplicated_to_id": null,+    "project_id": 20125,+    "relative_position": null,+    "state_id": 1,+    "time_estimate": 0,+    "title": "Class Diagram - stage 3",+    "updated_at": "2024-11-09 00:44:06 UTC",+    "updated_by_id": null,+    "type": "Issue",+    "url": "https://example.com/joe/proj-name/-/issues/25",+    "total_time_spent": 0,+    "time_change": 0,+    "human_total_time_spent": null,+    "human_time_change": null,+    "human_time_estimate": null,+    "assignee_ids": [+      2617+    ],+    "assignee_id": 2617,+    "labels": [+      {+        "id": 380,+        "title": "the label title",+        "color": "#9400d3",+        "project_id": 20125,+        "created_at": "2024-10-30 16:25:49 UTC",+        "updated_at": "2024-10-30 16:25:49 UTC",+        "template": false,+        "description": null,+        "type": "ProjectLabel",+        "group_id": null+      }+    ],+    "state": "opened",+    "severity": "unknown",+    "customer_relations_contacts": [],+    "action": "open"+  },+  "labels": [+    {+      "id": 380,+      "title": "the label title",+      "color": "#9400d3",+      "project_id": 20125,+      "created_at": "2024-10-30 16:25:49 UTC",+      "updated_at": "2024-10-30 16:25:49 UTC",+      "template": false,+      "description": null,+      "type": "ProjectLabel",+      "group_id": null+    }+  ],+  "changes": {+    "author_id": {+      "previous": null,+      "current": 2617+    },+    "created_at": {+      "previous": null,+      "current": "2024-11-09 00:44:06 UTC"+    },+    "description": {+      "previous": null,+      "current": "issue description"+    },+    "id": {+      "previous": null,+      "current": 2286+    },+    "iid": {+      "previous": null,+      "current": 25+    },+    "project_id": {+      "previous": null,+      "current": 20125+    },+    "title": {+      "previous": null,+      "current": "new issue title"+    },+    "updated_at": {+      "previous": null,+      "current": "2024-11-09 00:44:06 UTC"+    }+  },+  "repository": {+    "name": "proj-name",+    "url": "git@example.com:joe/proj-name.git",+    "description": "the description",+    "homepage": "https://example.com/joe/proj-name"+  },+  "assignees": [+    {+      "id": 2617,+      "name": "Joe",+      "username": "joe",+      "avatar_url": "https://secure.gravatar.com/avatar/abc",+      "email": "[REDACTED]"+    }+  ]+}
+ data/system-hooks/issue3.json view
@@ -0,0 +1,124 @@+{+  "object_kind": "issue",+  "event_type": "issue",+  "user": {+    "id": 2947,+    "name": "Joe",+    "username": "hr3000",+    "avatar_url": "https://secure.gravatar.com/avatar/abc",+    "email": "[REDACTED]"+  },+  "project": {+    "id": 20064,+    "name": "proj-name",+    "description": "",+    "web_url": "https://example.com/joe/proj-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/proj-name.git",+    "git_http_url": "https://example.com/joe/proj-name.git",+    "namespace": "Joe",+    "visibility_level": 0,+    "path_with_namespace": "joe/proj-name",+    "default_branch": "master",+    "ci_config_path": null,+    "homepage": "https://example.com/joe/proj-name",+    "url": "git@example.com:joe/proj-name.git",+    "ssh_url": "git@example.com:joe/proj-name.git",+    "http_url": "https://example.com/joe/proj-name.git"+  },+  "object_attributes": {+    "author_id": 2947,+    "closed_at": null,+    "confidential": false,+    "created_at": "2024-11-22 21:57:16 UTC",+    "description": "The issue description",+    "discussion_locked": null,+    "due_date": "2024-11-27",+    "id": 2982,+    "iid": 14,+    "last_edited_at": null,+    "last_edited_by_id": null,+    "milestone_id": 61,+    "moved_to_id": null,+    "duplicated_to_id": null,+    "project_id": 20064,+    "relative_position": 7182,+    "state_id": 1,+    "time_estimate": 0,+    "title": "The issue description",+    "updated_at": "2024-11-22 21:57:31 UTC",+    "updated_by_id": 2947,+    "type": "Issue",+    "url": "https://example.com/joe/proj-name/-/issues/14",+    "total_time_spent": 0,+    "time_change": 0,+    "human_total_time_spent": null,+    "human_time_change": null,+    "human_time_estimate": null,+    "assignee_ids": [+      2947+    ],+    "assignee_id": 2947,+    "labels": [+      {+        "id": 358,+        "title": "joeProj-Name",+        "color": "#6699cc",+        "project_id": 20064,+        "created_at": "2024-10-12 07:51:53 UTC",+        "updated_at": "2024-10-12 07:51:53 UTC",+        "template": false,+        "description": null,+        "type": "ProjectLabel",+        "group_id": null+      }+    ],+    "state": "opened",+    "severity": "unknown",+    "customer_relations_contacts": [],+    "action": "update"+  },+  "labels": [+    {+      "id": 358,+      "title": "joeProj-Name",+      "color": "#6699cc",+      "project_id": 20064,+      "created_at": "2024-10-12 07:51:53 UTC",+      "updated_at": "2024-10-12 07:51:53 UTC",+      "template": false,+      "description": null,+      "type": "ProjectLabel",+      "group_id": null+    }+  ],+  "changes": {+    "closed_at": {+      "previous": "2024-11-22 21:57:30 UTC",+      "current": null+    },+    "state_id": {+      "previous": 2,+      "current": 1+    },+    "updated_at": {+      "previous": "2024-11-22 21:57:30 UTC",+      "current": "2024-11-22 21:57:31 UTC"+    }+  },+  "repository": {+    "name": "proj-name",+    "url": "git@example.com:joe/proj-name.git",+    "description": "",+    "homepage": "https://example.com/joe/proj-name"+  },+  "assignees": [+    {+      "id": 2947,+      "name": "Joe",+      "username": "joe",+      "avatar_url": "https://secure.gravatar.com/avatar/abc",+      "email": "[REDACTED]"+    }+  ]+}
+ data/system-hooks/issue4.json view
@@ -0,0 +1,148 @@+{+  "object_kind": "issue",+  "event_type": "issue",+  "user": {+    "id": 1853,+    "name": "Joe",+    "username": "kmsr2000",+    "avatar_url": "https://secure.gravatar.com/avatar/abc",+    "email": "[REDACTED]"+  },+  "project": {+    "id": 19127,+    "name": "proj-name",+    "description": "",+    "web_url": "https://example.com/joe/proj-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/proj-name.git",+    "git_http_url": "https://example.com/joe/proj-name.git",+    "namespace": "Joe",+    "visibility_level": 0,+    "path_with_namespace": "joe/proj-name",+    "default_branch": "master",+    "ci_config_path": null,+    "homepage": "https://example.com/joe/proj-name",+    "url": "git@example.com:joe/proj-name.git",+    "ssh_url": "git@example.com:joe/proj-name.git",+    "http_url": "https://example.com/joe/proj-name.git"+  },+  "object_attributes": {+    "author_id": 1853,+    "closed_at": null,+    "confidential": false,+    "created_at": "2024-11-11 14:24:04 UTC",+    "description": null,+    "discussion_locked": null,+    "due_date": null,+    "id": 2451,+    "iid": 78,+    "last_edited_at": null,+    "last_edited_by_id": null,+    "milestone_id": 63,+    "moved_to_id": null,+    "duplicated_to_id": null,+    "project_id": 19127,+    "relative_position": 40014,+    "state_id": 1,+    "time_estimate": 0,+    "title": "The issue description",+    "updated_at": "2024-11-23 14:04:30 UTC",+    "updated_by_id": 1853,+    "type": "Task",+    "url": "https://example.com/joe/proj-name/-/work_items/78",+    "total_time_spent": 0,+    "time_change": 0,+    "human_total_time_spent": null,+    "human_time_change": null,+    "human_time_estimate": null,+    "assignee_ids": [+      1853+    ],+    "assignee_id": 1853,+    "labels": [+      {+        "id": 391,+        "title": "Stage 6",+        "color": "#330066",+        "project_id": 19127,+        "created_at": "2024-11-11 13:54:59 UTC",+        "updated_at": "2024-11-14 09:04:36 UTC",+        "template": false,+        "description": "",+        "type": "ProjectLabel",+        "group_id": null+      },+      {+        "id": 337,+        "title": "documentation",+        "color": "#f0ad4e",+        "project_id": 19127,+        "created_at": "2024-10-07 07:46:00 UTC",+        "updated_at": "2024-10-07 07:46:00 UTC",+        "template": false,+        "description": null,+        "type": "ProjectLabel",+        "group_id": null+      }+    ],+    "state": "opened",+    "severity": "unknown",+    "customer_relations_contacts": [],+    "action": "reopen"+  },+  "labels": [+    {+      "id": 391,+      "title": "Stage 6",+      "color": "#330066",+      "project_id": 19127,+      "created_at": "2024-11-11 13:54:59 UTC",+      "updated_at": "2024-11-14 09:04:36 UTC",+      "template": false,+      "description": "",+      "type": "ProjectLabel",+      "group_id": null+    },+    {+      "id": 337,+      "title": "documentation",+      "color": "#f0ad4e",+      "project_id": 19127,+      "created_at": "2024-10-07 07:46:00 UTC",+      "updated_at": "2024-10-07 07:46:00 UTC",+      "template": false,+      "description": null,+      "type": "ProjectLabel",+      "group_id": null+    }+  ],+  "changes": {+    "closed_at": {+      "previous": "2024-11-21 15:11:56 UTC",+      "current": null+    },+    "state_id": {+      "previous": 2,+      "current": 1+    },+    "updated_at": {+      "previous": "2024-11-21 15:11:56 UTC",+      "current": "2024-11-23 14:04:30 UTC"+    }+  },+  "repository": {+    "name": "proj-name",+    "url": "git@example.com:joe/proj-name.git",+    "description": "",+    "homepage": "https://example.com/joe/proj-name"+  },+  "assignees": [+    {+      "id": 1853,+      "name": "Joe",+      "username": "joe",+      "avatar_url": "https://secure.gravatar.com/avatar/abc",+      "email": "[REDACTED]"+    }+  ]+}
+ data/system-hooks/note1.json view
@@ -0,0 +1,99 @@+{+  "object_kind": "note",+  "event_type": "note",+  "user": {+    "id": 2950,+    "name": "Joe",+    "username": "joe",+    "avatar_url": "https://secure.gravatar.com/avatar/abc",+    "email": "[REDACTED]"+  },+  "project_id": 21219,+  "project": {+    "id": 21219,+    "name": "proj-name",+    "description": "",+    "web_url": "https://example.com/joe/proj-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/proj-name.git",+    "git_http_url": "https://example.com/joe/proj-name.git",+    "namespace": "Joe",+    "visibility_level": 0,+    "path_with_namespace": "joe/proj-name",+    "default_branch": "master",+    "ci_config_path": null,+    "homepage": "https://example.com/joe/proj-name",+    "url": "git@example.com:joe/proj-name.git",+    "ssh_url": "git@example.com:joe/proj-name.git",+    "http_url": "https://example.com/joe/proj-name.git"+  },+  "object_attributes": {+    "attachment": null,+    "author_id": 2950,+    "change_position": null,+    "commit_id": null,+    "created_at": "2024-11-16 16:16:10 UTC",+    "discussion_id": "4f0df21318e0110d71de2114a6c34385bd81b713",+    "id": 16684,+    "line_code": null,+    "note": "the note text",+    "noteable_id": 2797,+    "noteable_type": "Issue",+    "original_position": null,+    "position": null,+    "project_id": 21219,+    "resolved_at": null,+    "resolved_by_id": null,+    "resolved_by_push": null,+    "st_diff": null,+    "system": false,+    "type": null,+    "updated_at": "2024-11-16 16:16:10 UTC",+    "updated_by_id": null,+    "description": "the note text",+    "url": "https://example.com/joe/proj-name/-/issues/19#note_16684",+    "action": "create"+  },+  "repository": {+    "name": "proj-name",+    "url": "git@example.com:joe/proj-name.git",+    "description": "",+    "homepage": "https://example.com/joe/proj-name"+  },+  "issue": {+    "author_id": 2950,+    "closed_at": null,+    "confidential": false,+    "created_at": "2024-11-16 12:47:16 UTC",+    "description": "",+    "discussion_locked": null,+    "due_date": null,+    "id": 2797,+    "iid": 19,+    "last_edited_at": null,+    "last_edited_by_id": null,+    "milestone_id": null,+    "moved_to_id": null,+    "duplicated_to_id": null,+    "project_id": 21219,+    "relative_position": 9747,+    "state_id": 1,+    "time_estimate": 0,+    "title": "the issue title",+    "updated_at": "2024-11-16 16:16:10 UTC",+    "updated_by_id": 2950,+    "type": "Issue",+    "url": "https://example.com/joe/proj-name/-/issues/19",+    "total_time_spent": 0,+    "time_change": 0,+    "human_total_time_spent": null,+    "human_time_change": null,+    "human_time_estimate": null,+    "assignee_ids": [],+    "assignee_id": null,+    "labels": [],+    "state": "opened",+    "severity": "unknown",+    "customer_relations_contacts": []+  }+}
+ data/system-hooks/note2.json view
@@ -0,0 +1,75 @@+{+  "object_kind": "note",+  "event_type": "note",+  "user": {+    "id": 2477,+    "name": "Joe",+    "username": "joe",+    "avatar_url": "https://example.com/uploads/-/system/user/avatar/2477/avatar.png",+    "email": "[REDACTED]"+  },+  "project_id": 19102,+  "project": {+    "id": 19102,+    "name": "proj-name",+    "description": "",+    "web_url": "https://example.com/joe/proj-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/proj-name.git",+    "git_http_url": "https://example.com/joe/proj-name.git",+    "namespace": "Joe",+    "visibility_level": 0,+    "path_with_namespace": "joe/proj-name",+    "default_branch": "master",+    "ci_config_path": null,+    "homepage": "https://example.com/joe/proj-name",+    "url": "git@example.com:joe/proj-name.git",+    "ssh_url": "git@example.com:joe/proj-name.git",+    "http_url": "https://example.com/joe/proj-name.git"+  },+  "object_attributes": {+    "attachment": null,+    "author_id": 2477,+    "change_position": null,+    "commit_id": "8dd4c91c0efac607bf6d164ea7e5fd92e6fbe7c6",+    "created_at": "2024-11-20 05:48:59 UTC",+    "discussion_id": "163e23673e00ebb477a030944824cf25109bdf3e",+    "id": 17030,+    "line_code": null,+    "note": "The note.",+    "noteable_id": null,+    "noteable_type": "Commit",+    "original_position": null,+    "position": null,+    "project_id": 19102,+    "resolved_at": null,+    "resolved_by_id": null,+    "resolved_by_push": null,+    "st_diff": null,+    "system": false,+    "type": null,+    "updated_at": "2024-11-20 05:48:59 UTC",+    "updated_by_id": null,+    "description": "The note.",+    "url": "https://example.com/joe/proj-name/-/commit/abcde#note_17030",+    "action": "create"+  },+  "repository": {+    "name": "proj-name",+    "url": "git@example.com:joe/proj-name.git",+    "description": "",+    "homepage": "https://example.com/joe/proj-name"+  },+  "commit": {+    "id": "abcde",+    "message": "commit message",+    "title": "commit title",+    "timestamp": "2024-11-16T20:32:21+04:00",+    "url": "https://example.com/joe/proj-name/-/commit/abcde",+    "author": {+      "name": "Joe",+      "email": "joe@gmail.com"+    }+  }+}+
+ data/system-hooks/note3.json view
@@ -0,0 +1,126 @@+{+  "object_kind": "note",+  "event_type": "note",+  "user": {+    "id": 1853,+    "name": "Joe",+    "username": "joe",+    "avatar_url": "https://secure.gravatar.com/avatar/abc",+    "email": "[REDACTED]"+  },+  "project_id": 19127,+  "project": {+    "id": 19127,+    "name": "f21sf-24-the-proj-name,",+    "description": "",+    "web_url": "https://example.com/joe/the-proj-name,",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/the-proj-name,.git",+    "git_http_url": "https://example.com/joe/the-proj-name,.git",+    "namespace": "Joe",+    "visibility_level": 0,+    "path_with_namespace": "joe/the-proj-name,",+    "default_branch": "master",+    "ci_config_path": null,+    "homepage": "https://example.com/joe/the-proj-name,",+    "url": "git@example.com:joe/the-proj-name,.git",+    "ssh_url": "git@example.com:joe/the-proj-name,.git",+    "http_url": "https://example.com/joe/the-proj-name,.git"+  },+  "object_attributes": {+    "attachment": null,+    "author_id": 1853,+    "change_position": null,+    "commit_id": null,+    "created_at": "2024-11-23 15:44:37 UTC",+    "discussion_id": "db1ba73e93464583ae259a6ea79f95a7e38c7e3c",+    "id": 17524,+    "line_code": null,+    "note": "The description",+    "noteable_id": 2449,+    "noteable_type": "Issue",+    "original_position": null,+    "position": null,+    "project_id": 19127,+    "resolved_at": null,+    "resolved_by_id": null,+    "resolved_by_push": null,+    "st_diff": null,+    "system": false,+    "type": null,+    "updated_at": "2024-11-23 15:44:37 UTC",+    "updated_by_id": null,+    "description": "The description",+    "url": "https://example.com/joe/the-proj-name,/-/work_items/76#note_17524",+    "action": "create"+  },+  "repository": {+    "name": "the repo name",+    "url": "git@example.com:joe/the-proj-name,.git",+    "description": "",+    "homepage": "https://example.com/joe/the-proj-name,"+  },+  "issue": {+    "author_id": 1853,+    "closed_at": null,+    "confidential": false,+    "created_at": "2024-11-11 14:23:52 UTC",+    "description": null,+    "discussion_locked": null,+    "due_date": null,+    "id": 2449,+    "iid": 76,+    "last_edited_at": null,+    "last_edited_by_id": null,+    "milestone_id": 63,+    "moved_to_id": null,+    "duplicated_to_id": null,+    "project_id": 19127,+    "relative_position": 38988,+    "state_id": 1,+    "time_estimate": 0,+    "title": "issue title",+    "updated_at": "2024-11-23 15:44:37 UTC",+    "updated_by_id": 1853,+    "type": "Task",+    "url": "https://example.com/joe/the-proj-name,/-/work_items/76",+    "total_time_spent": 0,+    "time_change": 0,+    "human_total_time_spent": null,+    "human_time_change": null,+    "human_time_estimate": null,+    "assignee_ids": [+      1853+    ],+    "assignee_id": 1853,+    "labels": [+      {+        "id": 391,+        "title": "Stage 6",+        "color": "#330066",+        "project_id": 19127,+        "created_at": "2024-11-11 13:54:59 UTC",+        "updated_at": "2024-11-14 09:04:36 UTC",+        "template": false,+        "description": "",+        "type": "ProjectLabel",+        "group_id": null+      },+      {+        "id": 337,+        "title": "documentation",+        "color": "#f0ad4e",+        "project_id": 19127,+        "created_at": "2024-10-07 07:46:00 UTC",+        "updated_at": "2024-10-07 07:46:00 UTC",+        "template": false,+        "description": null,+        "type": "ProjectLabel",+        "group_id": null+      }+    ],+    "state": "opened",+    "severity": "unknown",+    "customer_relations_contacts": []+  }+}
+ data/system-hooks/pipeline.json view
@@ -0,0 +1,94 @@+{+  "object_kind": "pipeline",+  "object_attributes": {+    "id": 32617,+    "iid": 4,+    "name": null,+    "ref": "master",+    "tag": false,+    "sha": "abcde",+    "before_sha": "edcba",+    "source": "push",+    "status": "failed",+    "detailed_status": "failed",+    "stages": [+      "test"+    ],+    "created_at": "2024-11-01 21:58:31 UTC",+    "finished_at": "2024-11-01 21:58:35 UTC",+    "duration": 3,+    "queued_duration": null,+    "variables": [],+    "url": "https://example.com/joe/proj-name/-/pipelines/32617"+  },+  "merge_request": null,+  "user": {+    "id": 899,+    "name": "Joe",+    "username": "joe",+    "avatar_url": "https://secure.gravatar.com/avatar/abc",+    "email": "[REDACTED]"+  },+  "project": {+    "id": 24472,+    "name": "proj-name",+    "description": null,+    "web_url": "https://example.com/joe/proj-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/proj-name.git",+    "git_http_url": "https://example.com/joe/proj-name.git",+    "namespace": "Joe",+    "visibility_level": 0,+    "path_with_namespace": "joe/proj-name",+    "default_branch": "master",+    "ci_config_path": null+  },+  "commit": {+    "id": "abcde",+    "message": "the commit message",+    "title": "the commit message",+    "timestamp": "2024-11-01T21:58:31+00:00",+    "url": "https://example.com/joe/proj-name/-/commit/abcde",+    "author": {+      "name": "Joe",+      "email": "12345+Joe@users.noreply.github.com"+    }+  },+  "builds": [+    {+      "id": 47429,+      "stage": "test",+      "name": "junit",+      "status": "failed",+      "created_at": "2024-11-01 21:58:31 UTC",+      "started_at": "2024-11-01 21:58:31 UTC",+      "finished_at": "2024-11-01 21:58:35 UTC",+      "duration": 3.889573,+      "queued_duration": 0.19131,+      "failure_reason": "script_failure",+      "when": "on_success",+      "manual": false,+      "allow_failure": false,+      "user": {+        "id": 899,+        "name": "Joe",+        "username": "joe",+        "avatar_url": "https://secure.gravatar.com/avatar/abc",+        "email": "[REDACTED]"+      },+      "runner": {+        "id": 15,+        "description": "",+        "runner_type": "instance_type",+        "active": true,+        "is_shared": true,+        "tags": []+      },+      "artifacts_file": {+        "filename": null,+        "size": null+      },+      "environment": null+    }+  ]+}
+ data/system-hooks/pipeline2.json view
@@ -0,0 +1,94 @@+{+  "object_kind": "pipeline",+  "object_attributes": {+    "id": 32686,+    "iid": 2,+    "name": null,+    "ref": "master",+    "tag": false,+    "sha": "abcde",+    "before_sha": "edcba",+    "source": "push",+    "status": "failed",+    "detailed_status": "failed",+    "stages": [+      "test"+    ],+    "created_at": "2024-11-02 18:32:17 UTC",+    "finished_at": "2024-11-02 18:32:23 UTC",+    "duration": 4,+    "queued_duration": 1,+    "variables": [],+    "url": "https://example.com/joe/proj-name/-/pipelines/32686"+  },+  "merge_request": null,+  "user": {+    "id": 742,+    "name": "Joe",+    "username": "joe",+    "avatar_url": "https://secure.gravatar.com/avatar/abc",+    "email": "[REDACTED]"+  },+  "project": {+    "id": 25078,+    "name": "proj-name",+    "description": null,+    "web_url": "https://example.com/joe/proj-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/proj-name.git",+    "git_http_url": "https://example.com/joe/proj-name.git",+    "namespace": "Joe",+    "visibility_level": 0,+    "path_with_namespace": "joe/proj-name",+    "default_branch": "master",+    "ci_config_path": null+  },+  "commit": {+    "id": "abcde",+    "message": "the commit message",+    "title": "the commit message",+    "timestamp": "2024-11-02T18:32:16+00:00",+    "url": "https://example.com/joe/proj-name/-/commit/abcde",+    "author": {+      "name": "joe",+      "email": "joe@gmail.com"+    }+  },+  "builds": [+    {+      "id": 47501,+      "stage": "test",+      "name": "junit",+      "status": "failed",+      "created_at": "2024-11-02 18:32:18 UTC",+      "started_at": "2024-11-02 18:32:18 UTC",+      "finished_at": "2024-11-02 18:32:23 UTC",+      "duration": 4.428372,+      "queued_duration": 0.561693,+      "failure_reason": "script_failure",+      "when": "on_success",+      "manual": false,+      "allow_failure": false,+      "user": {+        "id": 742,+        "name": "Joe",+        "username": "joe",+        "avatar_url": "https://secure.gravatar.com/avatar/abc",+        "email": "[REDACTED]"+      },+      "runner": {+        "id": 15,+        "description": "",+        "runner_type": "instance_type",+        "active": true,+        "is_shared": true,+        "tags": []+      },+      "artifacts_file": {+        "filename": null,+        "size": null+      },+      "environment": null+    }+  ]+}
+ data/system-hooks/pipeline3.json view
@@ -0,0 +1,94 @@+{+  "object_kind": "pipeline",+  "object_attributes": {+    "id": 32701,+    "iid": 5,+    "name": null,+    "ref": "master",+    "tag": false,+    "sha": "abcde",+    "before_sha": "edcba",+    "source": "push",+    "status": "failed",+    "detailed_status": "failed",+    "stages": [+      "test"+    ],+    "created_at": "2024-11-02 19:31:48 UTC",+    "finished_at": "2024-11-02 19:31:53 UTC",+    "duration": 3,+    "queued_duration": 1,+    "variables": [],+    "url": "https://example.com/joe/proj-name/-/pipelines/32701"+  },+  "merge_request": null,+  "user": {+    "id": 3041,+    "name": "Joe",+    "username": "joe",+    "avatar_url": "https://secure.gravatar.com/avatar/abc",+    "email": "[REDACTED]"+  },+  "project": {+    "id": 25084,+    "name": "proj-name",+    "description": "",+    "web_url": "https://example.com/joe/proj-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/proj-name.git",+    "git_http_url": "https://example.com/joe/proj-name.git",+    "namespace": "Joe",+    "visibility_level": 0,+    "path_with_namespace": "joe/proj-name",+    "default_branch": "master",+    "ci_config_path": null+  },+  "commit": {+    "id": "abcde",+    "message": "the commit message",+    "title": "the commit message",+    "timestamp": "2024-11-02T19:31:48+00:00",+    "url": "https://example.com/joe/proj-name/-/commit/abcde",+    "author": {+      "name": "Joe",+      "email": "joe@gmail.com"+    }+  },+  "builds": [+    {+      "id": 47516,+      "stage": "test",+      "name": "junit",+      "status": "failed",+      "created_at": "2024-11-02 19:31:48 UTC",+      "started_at": "2024-11-02 19:31:50 UTC",+      "finished_at": "2024-11-02 19:31:53 UTC",+      "duration": 3.734497,+      "queued_duration": 0.672819,+      "failure_reason": "script_failure",+      "when": "on_success",+      "manual": false,+      "allow_failure": false,+      "user": {+        "id": 3041,+        "name": "Joe",+        "username": "joe",+        "avatar_url": "https://secure.gravatar.com/avatar/abc",+        "email": "[REDACTED]"+      },+      "runner": {+        "id": 14,+        "description": "",+        "runner_type": "instance_type",+        "active": true,+        "is_shared": true,+        "tags": []+      },+      "artifacts_file": {+        "filename": null,+        "size": null+      },+      "environment": null+    }+  ]+}
+ data/system-hooks/pipeline4.json view
@@ -0,0 +1,87 @@+{+  "object_kind": "pipeline",+  "object_attributes": {+    "id": 36096,+    "iid": 1,+    "name": null,+    "ref": "master",+    "tag": false,+    "sha": "abcde",+    "before_sha": "edcba",+    "source": "push",+    "status": "pending",+    "detailed_status": "pending",+    "stages": [+      "test"+    ],+    "created_at": "2024-11-08 21:26:15 UTC",+    "finished_at": null,+    "duration": null,+    "queued_duration": null,+    "variables": [],+    "url": "https://example.com/joe/proj-name/-/pipelines/36096"+  },+  "merge_request": null,+  "user": {+    "id": 2659,+    "name": "Lad, Krishan",+    "username": "joe",+    "avatar_url": "https://example.com/uploads/-/system/user/avatar/2659/avatar.png",+    "email": "[REDACTED]"+  },+  "project": {+    "id": 25415,+    "name": "F28SG - Lab 7",+    "description": null,+    "web_url": "https://example.com/joe/proj-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/proj-name.git",+    "git_http_url": "https://example.com/joe/proj-name.git",+    "namespace": "Joe",+    "visibility_level": 0,+    "path_with_namespace": "joe/proj-name",+    "default_branch": "master",+    "ci_config_path": null+  },+  "commit": {+    "id": "abcde",+    "message": "commit message",+    "title": "08 NOV 2024 @ 21:20",+    "timestamp": "2024-11-08T21:26:13+00:00",+    "url": "https://example.com/joe/proj-name/-/commit/abcde",+    "author": {+      "name": "Joe",+      "email": "joe@gmail.com"+    }+  },+  "builds": [+    {+      "id": 51146,+      "stage": "test",+      "name": "junit",+      "status": "pending",+      "created_at": "2024-11-08 21:26:15 UTC",+      "started_at": null,+      "finished_at": null,+      "duration": null,+      "queued_duration": 0.328087189,+      "failure_reason": null,+      "when": "on_success",+      "manual": false,+      "allow_failure": false,+      "user": {+        "id": 2659,+        "name": "Joe",+        "username": "joe",+        "avatar_url": "https://example.com/uploads/-/system/user/avatar/2659/avatar.png",+        "email": "[REDACTED]"+      },+      "runner": null,+      "artifacts_file": {+        "filename": null,+        "size": null+      },+      "environment": null+    }+  ]+}
+ data/system-hooks/pipeline5.json view
@@ -0,0 +1,94 @@+{+  "object_kind": "pipeline",+  "object_attributes": {+    "id": 38727,+    "iid": 53,+    "name": null,+    "ref": "master",+    "tag": false,+    "sha": "abcde",+    "before_sha": "edcba",+    "source": "push",+    "status": "success",+    "detailed_status": "passed",+    "stages": [+      "deploy"+    ],+    "created_at": "2024-11-17 16:17:11 UTC",+    "finished_at": "2024-11-17 16:17:15 UTC",+    "duration": 2,+    "queued_duration": 1,+    "variables": [],+    "url": "https://example.com/group-name/proj-name/-/pipelines/38727"+  },+  "merge_request": null,+  "user": {+    "id": 2638,+    "name": "Joe Bloggs",+    "username": "joe",+    "avatar_url": "https://secure.gravatar.com/avatar/abc",+    "email": "[REDACTED]"+  },+  "project": {+    "id": 20385,+    "name": "Cinema Website",+    "description": null,+    "web_url": "https://example.com/group-name/proj-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:group-name/proj-name.git",+    "git_http_url": "https://example.com/group-name/proj-name.git",+    "namespace": "Group name",+    "visibility_level": 0,+    "path_with_namespace": "group-name/proj-name",+    "default_branch": "master",+    "ci_config_path": null+  },+  "commit": {+    "id": "abcde",+    "message": "the message",+    "title": "the commit title",+    "timestamp": "2024-11-17T16:17:13+00:00",+    "url": "https://example.com/group-name/proj-name/-/commit/abcde",+    "author": {+      "name": "Joe",+      "email": "joe@gmail.com"+    }+  },+  "builds": [+    {+      "id": 54510,+      "stage": "deploy",+      "name": "pages",+      "status": "success",+      "created_at": "2024-11-17 16:17:11 UTC",+      "started_at": "2024-11-17 16:17:12 UTC",+      "finished_at": "2024-11-17 16:17:15 UTC",+      "duration": 2.767007,+      "queued_duration": 0.868802,+      "failure_reason": null,+      "when": "on_success",+      "manual": false,+      "allow_failure": false,+      "user": {+        "id": 2638,+        "name": "Joe Bloggs",+        "username": "joe",+        "avatar_url": "https://secure.gravatar.com/avatar/abc",+        "email": "[REDACTED]"+      },+      "runner": {+        "id": 15,+        "description": "",+        "runner_type": "instance_type",+        "active": true,+        "is_shared": true,+        "tags": []+      },+      "artifacts_file": {+        "filename": "artifacts.zip",+        "size": 8136559+      },+      "environment": null+    }+  ]+}
+ data/system-hooks/push2.json view
@@ -0,0 +1,46 @@+{+  "object_kind": "push",+  "event_name": "push",+  "before": "edcba",+  "after": "0000000000000000000000000000000000000000",+  "ref": "refs/heads/Rohan",+  "ref_protected": false,+  "checkout_sha": null,+  "message": null,+  "user_id": 2583,+  "user_name": "Joe",+  "user_username": "joe",+  "user_email": null,+  "user_avatar": "https://secure.gravatar.com/avatar/abc",+  "project_id": 25811,+  "project": {+    "id": 25811,+    "name": "The project name",+    "description": null,+    "web_url": "https://example.com/joe/proj-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/proj-name.git",+    "git_http_url": "https://example.com/joe/proj-name.git",+    "namespace": "The namespace",+    "visibility_level": 0,+    "path_with_namespace": "joe/proj-name",+    "default_branch": "main",+    "ci_config_path": "",+    "homepage": "https://example.com/joe/proj-name",+    "url": "git@example.com:joe/proj-name.git",+    "ssh_url": "git@example.com:joe/proj-name.git",+    "http_url": "https://example.com/joe/proj-name.git"+  },+  "commits": [],+  "total_commits_count": 0,+  "push_options": {},+  "repository": {+    "name": "The project name",+    "url": "git@example.com:joe/proj-name.git",+    "description": null,+    "homepage": "https://example.com/joe/proj-name",+    "git_http_url": "https://example.com/joe/proj-name.git",+    "git_ssh_url": "git@example.com:joe/proj-name.git",+    "visibility_level": 0+  }+}
+ data/system-hooks/wiki-page1.json view
@@ -0,0 +1,45 @@+{+  "object_kind": "wiki_page",+  "user": {+    "id": 2908,+    "name": "Joe",+    "username": "joe",+    "avatar_url": "https://secure.gravatar.com/avatar/abc",+    "email": "[REDACTED]"+  },+  "project": {+    "id": 25827,+    "name": "the name",+    "description": "",+    "web_url": "https://example.com/joe/proj-name",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/proj-name.git",+    "git_http_url": "https://example.com/joe/proj-name.git",+    "namespace": "Joe",+    "visibility_level": 0,+    "path_with_namespace": "joe/proj-name",+    "default_branch": "main",+    "ci_config_path": "",+    "homepage": "https://example.com/joe/proj-name",+    "url": "git@example.com:joe/proj-name.git",+    "ssh_url": "git@example.com:joe/proj-name.git",+    "http_url": "https://example.com/joe/proj-name.git"+  },+  "wiki": {+    "web_url": "https://example.com/joe/proj-name/-/wikis/home",+    "git_ssh_url": "git@example.com:joe/proj-name.wiki.git",+    "git_http_url": "https://example.com/joe/proj-name.wiki.git",+    "path_with_namespace": "joe/proj-name.wiki",+    "default_branch": "main"+  },+  "object_attributes": {+    "slug": "home",+    "title": "home",+    "format": "markdown",+    "message": "The wiki message",+    "version_id": "99c9ea1617756edfb6187ab82e663afb834cd306",+    "url": "https://example.com/joe/proj-name/-/wikis/home",+    "action": "update",+    "diff_url": "https://example.com/joe/proj-name/-/wikis/home/diff?version_id=99c9ea1617756edfb6187ab82e663afb834cd306"+  }+}
+ data/system-hooks/work-item1.json view
@@ -0,0 +1,148 @@+{+  "object_kind": "work_item",+  "event_type": "work_item",+  "user": {+    "id": 1853,+    "name": "Joe Bloggs",+    "username": "joe",+    "avatar_url": "https://secure.gravatar.com/avatar/abc",+    "email": "[REDACTED]"+  },+  "project": {+    "id": 19127,+    "name": "proj-name",+    "description": "",+    "web_url": "http://example.com/joe/project",+    "avatar_url": null,+    "git_ssh_url": "git@example.com:joe/project.git",+    "git_http_url": "http://example.com/joe/project.git",+    "namespace": "Joe Bloggs",+    "visibility_level": 0,+    "path_with_namespace": "joe/project",+    "default_branch": "master",+    "ci_config_path": null,+    "homepage": "http://example.com/joe/project",+    "url": "git@example.com:joe/project.git",+    "ssh_url": "git@example.com:joe/project.git",+    "http_url": "http://example.com/joe/project.git"+  },+  "object_attributes": {+    "author_id": 1853,+    "closed_at": "2024-11-23 15:56:50 UTC",+    "confidential": false,+    "created_at": "2024-11-11 14:23:52 UTC",+    "description": null,+    "discussion_locked": null,+    "due_date": null,+    "id": 2449,+    "iid": 76,+    "last_edited_at": null,+    "last_edited_by_id": null,+    "milestone_id": 63,+    "moved_to_id": null,+    "duplicated_to_id": null,+    "project_id": 19127,+    "relative_position": 38988,+    "state_id": 2,+    "time_estimate": 0,+    "title": "The title",+    "updated_at": "2024-11-23 15:56:50 UTC",+    "updated_by_id": 1853,+    "type": "Task",+    "url": "http://example.com/joe/project/-/work_items/76",+    "total_time_spent": 0,+    "time_change": 0,+    "human_total_time_spent": null,+    "human_time_change": null,+    "human_time_estimate": null,+    "assignee_ids": [+      1853+    ],+    "assignee_id": 1853,+    "labels": [+      {+        "id": 391,+        "title": "Stage 6",+        "color": "#330066",+        "project_id": 19127,+        "created_at": "2024-11-11 13:54:59 UTC",+        "updated_at": "2024-11-14 09:04:36 UTC",+        "template": false,+        "description": "",+        "type": "ProjectLabel",+        "group_id": null+      },+      {+        "id": 337,+        "title": "documentation",+        "color": "#f0ad4e",+        "project_id": 19127,+        "created_at": "2024-10-07 07:46:00 UTC",+        "updated_at": "2024-10-07 07:46:00 UTC",+        "template": false,+        "description": null,+        "type": "ProjectLabel",+        "group_id": null+      }+    ],+    "state": "closed",+    "severity": "unknown",+    "customer_relations_contacts": [],+    "action": "close"+  },+  "labels": [+    {+      "id": 391,+      "title": "Stage 6",+      "color": "#330066",+      "project_id": 19127,+      "created_at": "2024-11-11 13:54:59 UTC",+      "updated_at": "2024-11-14 09:04:36 UTC",+      "template": false,+      "description": "",+      "type": "ProjectLabel",+      "group_id": null+    },+    {+      "id": 337,+      "title": "documentation",+      "color": "#f0ad4e",+      "project_id": 19127,+      "created_at": "2024-10-07 07:46:00 UTC",+      "updated_at": "2024-10-07 07:46:00 UTC",+      "template": false,+      "description": null,+      "type": "ProjectLabel",+      "group_id": null+    }+  ],+  "changes": {+    "closed_at": {+      "previous": null,+      "current": "2024-11-23 15:56:50 UTC"+    },+    "state_id": {+      "previous": 1,+      "current": 2+    },+    "updated_at": {+      "previous": "2024-11-23 15:44:37 UTC",+      "current": "2024-11-23 15:56:50 UTC"+    }+  },+  "repository": {+    "name": "proj-name",+    "url": "git@example.com:joe/project.git",+    "description": "",+    "homepage": "http://example.com/joe/project"+  },+  "assignees": [+    {+      "id": 1853,+      "name": "Joe Bloggs",+      "username": "joe",+      "avatar_url": "https://secure.gravatar.com/avatar/abc",+      "email": "[REDACTED]"+    }+  ]+}
gitlab-haskell.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.4 name:           gitlab-haskell category:       Git-version:        1.0.2.2+version:        1.1.0.0 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,7 +11,7 @@ bug-reports:    https://gitlab.com/robstewart57/gitlab-haskell/issues author:         Rob Stewart maintainer:     robstewart57@gmail.com-copyright:      2024 Rob Stewart, Heriot-Watt University+copyright:      2025 Rob Stewart, Heriot-Watt University license:        BSD-3-Clause license-file:   LICENSE data-files:     data/system-hooks/*.json@@ -209,7 +209,7 @@               , temporary               , unix-compat               , mtl-              , data-default-class+              , data-default   default-language: Haskell2010   ghc-options: -Wall                -- the following two for the stan static analysis tool
src/GitLab.hs view
@@ -39,7 +39,7 @@  import Control.Monad.IO.Class import Control.Monad.Trans.Reader-import Data.Default.Class+import Data.Default import qualified Data.Text as T import GitLab.API.Boards import GitLab.API.Branches
src/GitLab/API/Members.hs view
@@ -57,10 +57,8 @@  import qualified Data.ByteString.Lazy as BSL import Data.Either-import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Encoding as T-import GitLab.API.Groups import GitLab.API.Users import GitLab.Types import GitLab.WebRequests.GitLabWebCalls@@ -362,8 +360,23 @@   -- | user   User ->   GitLab (Either (Response BSL.ByteString) (Maybe ()))-removeUserFromProject prj =-  removeUserFromEntity (project_name prj) "projects"+removeUserFromProject prj usr = do+  result <- gitlabDelete addr []+  case result of+    Left err -> return (Left err)+    -- GitLab version 14.2.3 returns Version JSON info when a+    -- member is removed from a group/project. I'm not sure if+    -- this is new behaviour, anyway we catch it here.+    Right (Just (Version {})) -> return (Right (Just ()))+    Right Nothing -> return (Right (Just ()))+  where+    addr =+      "/"+        <> "projects"+        <> "/"+        <> T.decodeUtf8 (urlEncode False (T.encodeUtf8 (T.pack (show (project_id prj)))))+        <> "/members/"+        <> T.decodeUtf8 (urlEncode False (T.encodeUtf8 (T.pack (show (user_id usr)))))  -- | Removes a user from a group where the user has been explicitly -- assigned a role.@@ -378,8 +391,23 @@   -- | user   User ->   GitLab (Either (Response BSL.ByteString) (Maybe ()))-removeUserFromGroup grp =-  removeUserFromEntity (group_name grp) "groups"+removeUserFromGroup grp usr = do+  result <- gitlabDelete addr []+  case result of+    Left err -> return (Left err)+    -- GitLab version 14.2.3 returns Version JSON info when a+    -- member is removed from a group/project. I'm not sure if+    -- this is new behaviour, anyway we catch it here.+    Right (Just (Version {})) -> return (Right (Just ()))+    Right Nothing -> return (Right (Just ()))+  where+    addr =+      "/"+        <> "groups"+        <> "/"+        <> T.decodeUtf8 (urlEncode False (T.encodeUtf8 (T.pack (show (group_id grp)))))+        <> "/members/"+        <> T.decodeUtf8 (urlEncode False (T.encodeUtf8 (T.pack (show (user_id usr)))))  -- | Approves a pending user for a group and its subgroups and -- projects.@@ -434,53 +462,3 @@       "/groups/"         <> T.pack (show (group_id grp))         <> "/pending_members"-------------------------- Internal functions-------------------------- | removes a user from a group or project.-removeUserFromEntity ::-  -- | group name-  Text ->-  -- | entity ("groups" or "projects)-  Text ->-  -- | user-  User ->-  GitLab (Either (Response BSL.ByteString) (Maybe ()))-removeUserFromEntity groupName entity usr =-  removeUserFromEntity' groupName entity (user_id usr)---- | removes a user with a given user ID from a group or project.-removeUserFromEntity' ::-  -- | group name-  Text ->-  -- | entity ("groups" or "projects")-  Text ->-  -- | user ID-  Int ->-  GitLab (Either (Response BSL.ByteString) (Maybe ()))-removeUserFromEntity' groupName entity usrId = do-  attempt <- groups (defaultListGroupsFilters {listGroupsFilter_search = Just groupName})-  case attempt of-    [] ->-      return (Right Nothing)-    [grp] -> do-      result <- gitlabDelete addr []-      case result of-        Left err -> return (Left err)-        -- GitLab version 14.2.3 returns Version JSON info when a-        -- member is removed from a group/project. I'm not sure if-        -- this is new behaviour, anyway we catch it here.-        Right (Just (Version {})) -> return (Right (Just ()))-        Right Nothing -> return (Right (Just ()))-      where-        addr =-          "/"-            <> entity-            <> "/"-            <> T.decodeUtf8 (urlEncode False (T.encodeUtf8 (T.pack (show (group_id grp)))))-            <> "/members/"-            <> T.decodeUtf8 (urlEncode False (T.encodeUtf8 (T.pack (show usrId))))-    (_ : _) ->-      return (Right Nothing)
src/GitLab/API/Pipelines.hs view
@@ -32,7 +32,6 @@ where  import qualified Data.ByteString.Lazy as BSL-import Data.Either import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Encoding as T@@ -40,15 +39,20 @@ import GitLab.WebRequests.GitLabWebCalls import Network.HTTP.Client --- | List pipelines in a project. Child pipelines are not included in--- the results, but you can get child pipeline individually.+-- | List pipelines in a project. Child pipelines are not included in the+-- results, but you can get child pipeline individually. Returns 'Nothing' if+-- access to the pipelines are forbidden e.g. for a project without any files. pipelines ::   -- | the project   Project ->-  GitLab [Pipeline]+  GitLab (Maybe [Pipeline]) pipelines p = do   result <- pipelines' (project_id p)-  return (fromRight (error "pipelines error") result)+  case result of+    Right ps -> return (Just ps)+    Left _err -> return Nothing++-- return (fromRight (error "pipelines error") result)  -- | returns the pipelines for a project given its project ID. pipelines' ::
src/GitLab/API/Projects.hs view
@@ -1100,8 +1100,9 @@ projectCISuccess prj = do   pipes <- pipelines prj   case pipes of-    [] -> return False-    (x : _) -> return (pipeline_status x == "success")+    Nothing -> return False+    Just [] -> return False+    Just (x : _) -> return (pipeline_status x == "success")  -- -- | searches for a username, and returns a user ID for that user, or -- -- 'Nothing' if a user cannot be found.
src/GitLab/SystemHooks/GitLabSystemHooks.hs view
@@ -41,10 +41,20 @@ -- received from a function argument. receiveString :: Text -> [Rule] -> GitLab () receiveString eventContent rules = do+  -- maybe log the JSON received   traceSystemHook eventContent+  -- fire the rules   didFire <- mapM (fire eventContent) rules+  -- if nothing fired   when (not (or didFire)) $ do     cfg <- MR.asks serverCfg+    -- maybe log the JSON if it was not parsed+    when (debugSystemHooks cfg == Just NonParsedJSON) $ liftIO $ do+      -- no rules fired, was it because the JSON was not parsed?+      when (not (attemptGitLabEventParse eventContent)) $ do+        fpath <- writeSystemTempFile "gitlab-system-hook-nonparsed-" (T.unpack eventContent)+        void $ setFileMode fpath otherReadMode+    -- maybe log the JSON if no rules were fired for it     when (debugSystemHooks cfg == Just UnprocessedEvents) $ liftIO $ do       fpath <- writeSystemTempFile "gitlab-system-hook-unprocessed-" (T.unpack eventContent)       void $ setFileMode fpath otherReadMode@@ -185,6 +195,30 @@       (Just (\_ -> return True))       (cast f :: Maybe (MergeRequestEvent -> GitLab ()))       (parseEvent contents :: Maybe MergeRequestEvent)+    `orElse` fireIf'+      (Just (\_ -> return True))+      (cast f :: Maybe (BuildEvent -> GitLab ()))+      (parseEvent contents :: Maybe BuildEvent)+    `orElse` fireIf'+      (Just (\_ -> return True))+      (cast f :: Maybe (PipelineEvent -> GitLab ()))+      (parseEvent contents :: Maybe PipelineEvent)+    `orElse` fireIf'+      (Just (\_ -> return True))+      (cast f :: Maybe (IssueEvent -> GitLab ()))+      (parseEvent contents :: Maybe IssueEvent)+    `orElse` fireIf'+      (Just (\_ -> return True))+      (cast f :: Maybe (NoteEvent -> GitLab ()))+      (parseEvent contents :: Maybe NoteEvent)+    `orElse` fireIf'+      (Just (\_ -> return True))+      (cast f :: Maybe (WikiPageEvent -> GitLab ()))+      (parseEvent contents :: Maybe WikiPageEvent)+    `orElse` fireIf'+      (Just (\_ -> return True))+      (cast f :: Maybe (WorkItemEvent -> GitLab ()))+      (parseEvent contents :: Maybe WorkItemEvent) tryFire contents (MatchIf _ predF f) = do   fireIf'     (cast predF :: Maybe (ProjectCreate -> GitLab Bool))@@ -286,6 +320,30 @@       (cast predF :: Maybe (MergeRequestEvent -> GitLab Bool))       (cast f :: Maybe (MergeRequestEvent -> GitLab ()))       (parseEvent contents :: Maybe MergeRequestEvent)+    `orElse` fireIf'+      (cast predF :: Maybe (BuildEvent -> GitLab Bool))+      (cast f :: Maybe (BuildEvent -> GitLab ()))+      (parseEvent contents :: Maybe BuildEvent)+    `orElse` fireIf'+      (cast predF :: Maybe (PipelineEvent -> GitLab Bool))+      (cast f :: Maybe (PipelineEvent -> GitLab ()))+      (parseEvent contents :: Maybe PipelineEvent)+    `orElse` fireIf'+      (cast predF :: Maybe (IssueEvent -> GitLab Bool))+      (cast f :: Maybe (IssueEvent -> GitLab ()))+      (parseEvent contents :: Maybe IssueEvent)+    `orElse` fireIf'+      (cast predF :: Maybe (NoteEvent -> GitLab Bool))+      (cast f :: Maybe (NoteEvent -> GitLab ()))+      (parseEvent contents :: Maybe NoteEvent)+    `orElse` fireIf'+      (cast predF :: Maybe (WikiPageEvent -> GitLab Bool))+      (cast f :: Maybe (WikiPageEvent -> GitLab ()))+      (parseEvent contents :: Maybe WikiPageEvent)+    `orElse` fireIf'+      (cast predF :: Maybe (WorkItemEvent -> GitLab Bool))+      (cast f :: Maybe (WorkItemEvent -> GitLab ()))+      (parseEvent contents :: Maybe WorkItemEvent)  fireIf' :: (Typeable a, Show a) => Maybe (a -> GitLab Bool) -> Maybe (a -> GitLab ()) -> Maybe a -> GitLab Bool fireIf' castPred castF parsed = do@@ -304,3 +362,98 @@                   f' parsed'                   return True                 else return False++-- | returns 'True' if at least on parsing attemps of the JSON is successful+attemptGitLabEventParse :: T.Text -> Bool+attemptGitLabEventParse contents =+  -- note: this needs refactoring to be less verbose+  case parseEvent contents :: Maybe ProjectCreate of+    Just _ -> True+    Nothing ->+      case parseEvent contents :: Maybe ProjectDestroy of+        Just _ -> True+        Nothing ->+          case parseEvent contents :: Maybe ProjectRename of+            Just _ -> True+            Nothing ->+              case parseEvent contents :: Maybe ProjectTransfer of+                Just _ -> True+                Nothing ->+                  case parseEvent contents :: Maybe ProjectUpdate of+                    Just _ -> True+                    Nothing ->+                      case parseEvent contents :: Maybe GroupMemberUpdate of+                        Just _ -> True+                        Nothing ->+                          case parseEvent contents :: Maybe UserAddToTeam of+                            Just _ -> True+                            Nothing ->+                              case parseEvent contents :: Maybe UserUpdateForTeam of+                                Just _ -> True+                                Nothing ->+                                  case parseEvent contents :: Maybe UserRemoveFromTeam of+                                    Just _ -> True+                                    Nothing ->+                                      case parseEvent contents :: Maybe UserCreate of+                                        Just _ -> True+                                        Nothing ->+                                          case parseEvent contents :: Maybe UserRemove of+                                            Just _ -> True+                                            Nothing ->+                                              case parseEvent contents :: Maybe UserFailedLogin of+                                                Just _ -> True+                                                Nothing ->+                                                  case parseEvent contents :: Maybe UserRename of+                                                    Just _ -> True+                                                    Nothing ->+                                                      case parseEvent contents :: Maybe KeyCreate of+                                                        Just _ -> True+                                                        Nothing ->+                                                          case parseEvent contents :: Maybe KeyRemove of+                                                            Just _ -> True+                                                            Nothing ->+                                                              case parseEvent contents :: Maybe GroupCreate of+                                                                Just _ -> True+                                                                Nothing ->+                                                                  case parseEvent contents :: Maybe GroupRemove of+                                                                    Just _ -> True+                                                                    Nothing ->+                                                                      case parseEvent contents :: Maybe GroupRename of+                                                                        Just _ -> True+                                                                        Nothing ->+                                                                          case parseEvent contents :: Maybe NewGroupMember of+                                                                            Just _ -> True+                                                                            Nothing ->+                                                                              case parseEvent contents :: Maybe GroupMemberRemove of+                                                                                Just _ -> True+                                                                                Nothing ->+                                                                                  case parseEvent contents :: Maybe Push of+                                                                                    Just _ -> True+                                                                                    Nothing ->+                                                                                      case parseEvent contents :: Maybe TagPush of+                                                                                        Just _ -> True+                                                                                        Nothing ->+                                                                                          case parseEvent contents :: Maybe RepositoryUpdate of+                                                                                            Just _ -> True+                                                                                            Nothing ->+                                                                                              case parseEvent contents :: Maybe MergeRequestEvent of+                                                                                                Just _ -> True+                                                                                                Nothing ->+                                                                                                  case parseEvent contents :: Maybe BuildEvent of+                                                                                                    Just _ -> True+                                                                                                    Nothing ->+                                                                                                      case parseEvent contents :: Maybe PipelineEvent of+                                                                                                        Just _ -> True+                                                                                                        Nothing ->+                                                                                                          case parseEvent contents :: Maybe IssueEvent of+                                                                                                            Just _ -> True+                                                                                                            Nothing ->+                                                                                                              case parseEvent contents :: Maybe NoteEvent of+                                                                                                                Just _ -> True+                                                                                                                Nothing ->+                                                                                                                  case parseEvent contents :: Maybe WikiPageEvent of+                                                                                                                    Just _ -> True+                                                                                                                    Nothing ->+                                                                                                                      case parseEvent contents :: Maybe WorkItemEvent of+                                                                                                                        Just _ -> True+                                                                                                                        Nothing -> False
src/GitLab/SystemHooks/Types.hs view
@@ -5,6 +5,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}  -- |@@ -50,9 +51,37 @@     Label (..),     MergeRequestChanges (..),     MergeRequestChange (..),-    ObjectAttributes (..),+    MergeRequestObjectAttributes (..),     MergeParams (..),     UserEvent (..),+    BuildEvent (..),+    BuildCommit (..),+    BuildProject (..),+    PipelineEvent (..),+    PipelineObjectAttributes (..),+    PipelineBuild (..),+    IssueEvent (..),+    IssueEventObjectAttributes (..),+    IssueEventChanges (..),+    IssueChangesAuthorId (..),+    IssueChangesCreatedAt (..),+    IssueChangesDescription (..),+    IssueChangesId (..),+    IssueChangesIid (..),+    IssueChangesProjectId (..),+    IssueChangesTitle (..),+    IssueChangesClosedAt (..),+    IssueChangesStateId (..),+    IssueChangesUpdatedAt (..),+    Runner (..),+    ArtifactsFile (..),+    NoteEvent (..),+    NoteObjectAttributes (..),+    WikiPageEvent (..),+    Wiki (..),+    WikiPageObjectAttributes (..),+    WorkItemEvent (..),+    WorkItemObjectAttributes (..),     parseEvent,   ) where@@ -465,7 +494,7 @@     push_before :: Text,     push_after :: Text,     push_ref :: Text,-    push_checkout_sha :: Text,+    push_checkout_sha :: Maybe Text,     push_user_id :: Int,     push_user_name :: Text,     push_user_username :: Maybe Text,@@ -521,7 +550,8 @@  -- | A project event. data ProjectEvent = ProjectEvent-  { projectEvent_name :: Text,+  { projectEvent_id :: Maybe Int,+    projectEvent_name :: Text,     projectEvent_description :: Maybe Text,     projectEvent_web_url :: Text,     projectEvent_avatar_url :: Maybe Text,@@ -590,7 +620,7 @@     mergeRequest_event_type :: Text,     mergeRequest_user :: UserEvent,     mergeRequest_project :: ProjectEvent,-    mergeRequest_object_attributes :: ObjectAttributes,+    mergeRequest_object_attributes :: MergeRequestObjectAttributes,     mergeRequest_labels :: Maybe [Label],     mergeRequest_changes :: MergeRequestChanges,     mergeRequest_repository :: RepositoryEvent@@ -637,7 +667,7 @@   deriving (Typeable, Show, Eq, Generic)  -- | Attributes associated with a merge request-data ObjectAttributes = ObjectAttributes+data MergeRequestObjectAttributes = MergeRequestObjectAttributes   { objectAttributes_id :: Int,     objectAttributes_target_branch :: Text,     objectAttributes_source_branch :: Text,@@ -689,9 +719,11 @@  -- | User associated with a merge request data UserEvent = UserEvent-  { userEvent_name :: Text,+  { userEvent_id :: Maybe Int,+    userEvent_name :: Text,     userEvent_username :: Text,-    userEvent_avatar_url :: Text+    userEvent_avatar_url :: Text,+    userEvent_email :: Maybe Text   }   deriving (Typeable, Show, Eq, Generic) @@ -720,8 +752,438 @@   | TagPushed   | RepositoryUpdated   | MergeRequested+  | Built+  | Pipelined+  | Noted+  | WikiPaged+  | WorkItemed   deriving (Show, Eq) +-- | CI build+data BuildEvent = BuildEvent+  { build_event_object_kind :: Text,+    build_event_ref :: Text,+    build_event_tag :: Bool,+    build_event_before_sha :: Text,+    build_event_sha :: Text,+    build_event_retries_count :: Int,+    build_event_build_event_id :: Int,+    build_event_build_event_name :: Text,+    build_event_build_event_stage :: Text,+    build_event_build_event_status :: Text,+    build_event_created_at :: Text,+    build_event_started_at :: Maybe Text,+    build_event_finished_at :: Maybe Text,+    build_event_duration :: Maybe Double,+    build_event_queued_duration :: Maybe Double,+    build_event_allow_failure :: Bool,+    build_event_failure_reason :: Maybe Text,+    build_event_pipeline_id :: Int,+    build_event_runner :: Maybe Runner,+    build_event_project_id :: Int,+    build_event_project_name :: Text,+    build_event_user :: User,+    build_event_commit :: BuildCommit,+    build_event_repository :: Repository,+    build_event_project :: BuildProject,+    build_event_environment :: Maybe Text+  }+  deriving (Typeable, Show, Eq, Generic)++instance SystemHook BuildEvent where+  match = Match+  matchIf = MatchIf++-- | CI build commit+data BuildCommit = BuildCommit+  { build_commit_id :: Int,+    build_commit_name :: Maybe Text,+    build_commit_sha :: Text,+    build_commit_message :: Text,+    build_commit_author_name :: Text,+    build_commit_author_email :: Text,+    build_commit_author_url :: Text,+    build_commit_status :: Text,+    build_commit_duration :: Maybe Int,+    build_commit_started_at :: Maybe Text,+    build_commit_finished_at :: Maybe Text+  }+  deriving (Typeable, Show, Eq, Generic)++-- | CI build commit+data BuildProject = BuildProject+  { build_project_project_id :: Int,+    build_project_project_name :: Text,+    build_project_description :: Maybe Text,+    build_project_web_url :: Text,+    build_project_avatar_url :: Maybe Text,+    build_project_git_ssh_url :: Text,+    build_project_git_http_url :: Text,+    build_project_namespace :: Text,+    build_project_visibility_level :: Int,+    build_project_path_with_namespace :: Text,+    build_project_default_branch :: Text,+    build_project_ci_config_path :: Maybe Text+  }+  deriving (Typeable, Show, Eq, Generic)++-- | CI pipelines+data PipelineEvent = PipelineEvent+  { pipeline_event_object_kind :: Text,+    pipeline_event_object_attributes :: PipelineObjectAttributes,+    pipeline_event_merge_request :: Maybe Text,+    pipeline_event_user :: User,+    pipeline_event_project :: BuildProject,+    pipeline_event_commit :: CommitEvent,+    pipeline_event_builds :: [PipelineBuild]+  }+  deriving (Typeable, Show, Eq, Generic)++instance SystemHook PipelineEvent where+  match = Match+  matchIf = MatchIf++-- | CI pipeline attributes+data PipelineObjectAttributes = PipelineObjectAttributes+  { pipeline_object_attributes_id :: Int,+    pipeline_object_attributes_iid :: Int,+    pipeline_object_attributes_name :: Maybe Text,+    pipeline_object_attributes_ref :: Text,+    pipeline_object_attributes_tag :: Bool,+    pipeline_object_attributes_sha :: Text,+    pipeline_object_attributes_before_sha :: Text,+    pipeline_object_attributes_source :: Text,+    pipeline_object_attributes_status :: Text,+    pipeline_object_attributes_detailed_status :: Text,+    pipeline_object_attributes_stages :: [Text],+    pipeline_object_attributes_created_at :: Text,+    pipeline_object_attributes_finished_at :: Maybe Text,+    pipeline_object_attributes_duration :: Maybe Double,+    pipeline_object_attributes_queued_duration :: Maybe Double,+    pipeline_object_attributes_variables :: [Text],+    pipeline_object_attributes_url :: Text+  }+  deriving (Typeable, Show, Eq, Generic)++-- | CI pipeline attributes+data PipelineBuild = PipelineBuild+  { pipeline_build_id :: Int,+    pipeline_build_stage :: Text,+    pipeline_build_name :: Text,+    pipeline_build_status :: Text,+    pipeline_build_created_at :: Text,+    pipeline_build_started_at :: Maybe Text,+    pipeline_build_finished_at :: Maybe Text,+    pipeline_build_duration :: Maybe Double,+    pipeline_build_queued_duration :: Double,+    pipeline_build_failure_reason :: Maybe Text,+    pipeline_build_when :: Text, -- "on_success"+    pipeline_build_manual :: Bool,+    pipeline_build_allow_failure :: Bool,+    pipeline_build_user :: UserEvent,+    pipeline_build_runner :: Maybe Runner,+    pipeline_build_artifacts_file :: ArtifactsFile,+    pipeline_build_environment :: Maybe Text+  }+  deriving (Typeable, Show, Eq, Generic)++-- | CI runner+data Runner = Runner+  { runner_id :: Int,+    runner_description :: Text,+    runner_runner_type :: Text, -- "instance_type"+    runner_active :: Bool,+    runner_is_shared :: Bool,+    runner_tags :: [Text]+  }+  deriving (Typeable, Show, Eq, Generic)++-- | CI artifacts file+data ArtifactsFile = ArtifactsFile+  { artifacts_file_filename :: Maybe Text,+    artifacts_file_size :: Maybe Int+  }+  deriving (Typeable, Show, Eq, Generic)++-- | Issue event+data IssueEvent = IssueEvent+  { issue_event_event_type :: Text,+    issue_event_user :: Maybe UserEvent,+    issue_event_project :: Maybe ProjectEvent,+    issue_event_object_attributes :: Maybe IssueEventObjectAttributes,+    issue_event_labels :: Maybe [Label],+    issue_event_changes :: Maybe IssueEventChanges,+    issue_event_repository :: Maybe RepositoryEvent,+    issue_event_assignees :: Maybe [UserEvent]+  }+  deriving (Typeable, Show, Eq, Generic)++instance SystemHook IssueEvent where+  match = Match+  matchIf = MatchIf++-- | Issue event object attributes+data IssueEventObjectAttributes = IssueEventObjectAttributes+  { issue_event_object_attributes_author_id :: Int,+    issue_event_object_attributes_closed_at :: Maybe Text, -- change to UTCTime+    issue_event_object_attributes_confidential :: Bool,+    issue_event_object_attributes_created_at :: Text, -- change to UTCTime+    issue_event_object_attributes_description :: Maybe Text,+    issue_event_object_attributes_discussion_locked :: Maybe Bool,+    issue_event_object_attributes_due_date :: Maybe Text, -- change to UTCTime+    issue_event_object_attributes_id :: Int,+    issue_event_object_attributes_iid :: Int,+    issue_event_object_attributes_last_edited_at :: Maybe Text, -- change to UTCTime+    issue_event_object_attributes_last_edited_by_id :: Maybe Int,+    issue_event_object_attributes_milestone_id :: Maybe Int,+    issue_event_object_attributes_move_to_id :: Maybe Int,+    issue_event_object_attributes_duplicated_to_id :: Maybe Int,+    issue_event_object_attributes_project_id :: Int,+    issue_event_object_attributes_relative_position :: Maybe Int,+    issue_event_object_attributes_state_id :: Int,+    issue_event_object_attributes_time_estimate :: Int,+    issue_event_object_attributes_title :: Text,+    issue_event_object_attributes_updated_at :: Text, -- change to UTCTime+    issue_event_object_attributes_updated_by_id :: Maybe Int,+    issue_event_object_attributes_type :: Text, -- "Issue"+    issue_event_object_attributes_url :: Text,+    issue_event_object_attributes_total_time_spent :: Int,+    issue_event_object_attributes_time_change :: Int,+    issue_event_object_attributes_human_total_time_spent :: Maybe Int,+    issue_event_object_attributes_human_time_change :: Maybe Int,+    issue_event_object_attributes_human_time_estimate :: Maybe Int+  }+  deriving (Typeable, Show, Eq, Generic)++-- | Issue event changes+data IssueEventChanges = IssueEventChanges+  { issue_event_changes_author_id :: Maybe IssueChangesAuthorId,+    issue_event_changes_created_at :: Maybe IssueChangesCreatedAt,+    issue_event_changes_description :: Maybe IssueChangesDescription,+    issue_event_changes_id :: Maybe IssueChangesId,+    issue_event_changes_iid :: Maybe IssueChangesIid,+    issue_event_changes_project_id :: Maybe IssueChangesProjectId,+    issue_event_changes_title :: Maybe IssueChangesTitle,+    issue_event_changes_closed_at :: Maybe IssueChangesClosedAt,+    issue_event_changes_state_id :: Maybe IssueChangesStateId,+    issue_event_changes_updated_at :: Maybe IssueChangesUpdatedAt+  }+  deriving (Typeable, Show, Eq, Generic)++-- | Issue event author ID+data IssueChangesAuthorId = IssueChangesAuthorId+  { issue_event_author_id_previous :: Maybe Int,+    issue_event_author_id_current :: Int+  }+  deriving (Typeable, Show, Eq, Generic)++-- | Issue event created at+data IssueChangesCreatedAt = IssueChangesCreatedAt+  { issue_event_created_at_previous :: Maybe Text, -- change to URLTime+    issue_event_created_at_current :: Text -- change to URLTime+  }+  deriving (Typeable, Show, Eq, Generic)++-- | Issue event description+data IssueChangesDescription = IssueChangesDescription+  { issue_event_description_previous :: Maybe Text,+    issue_event_description_current :: Text+  }+  deriving (Typeable, Show, Eq, Generic)++-- | Issue event ID+data IssueChangesId = IssueChangesId+  { issue_event_id_previous :: Maybe Int,+    issue_event_id_current :: Int+  }+  deriving (Typeable, Show, Eq, Generic)++-- | Issue event IID+data IssueChangesIid = IssueChangesIid+  { issue_event_iid_previous :: Maybe Int,+    issue_event_iid_current :: Int+  }+  deriving (Typeable, Show, Eq, Generic)++-- | Issue event project ID+data IssueChangesProjectId = IssueChangesProjectId+  { issue_event_project_id_previous :: Maybe Int,+    issue_event_project_id_current :: Int+  }+  deriving (Typeable, Show, Eq, Generic)++-- | Issue event title+data IssueChangesTitle = IssueChangesTitle+  { issue_event_title_previous :: Maybe Text,+    issue_event_title_current :: Text+  }+  deriving (Typeable, Show, Eq, Generic)++-- | Issue event closed at+data IssueChangesClosedAt = IssueChangesClosedAt+  { issue_event_closed_at_previous :: Maybe Text, -- change to URLTime+    issue_event_closed_at_current :: Maybe Text -- change to URLTime+  }+  deriving (Typeable, Show, Eq, Generic)++-- | Issue event state id+data IssueChangesStateId = IssueChangesStateId+  { issue_event_state_id_previous :: Maybe Int,+    issue_event_state_id_current :: Int+  }+  deriving (Typeable, Show, Eq, Generic)++-- | Issue event updated at+data IssueChangesUpdatedAt = IssueChangesUpdatedAt+  { issue_event_updated_at_previous :: Maybe Text, -- change to URLTime+    issue_event_updated_at_current :: Text -- change to URLTime+  }+  deriving (Typeable, Show, Eq, Generic)++-- -- | Issue event state id+-- data IssueEventUpdatedAt = IssueEventUpdatedAt+--   { issue_event_closed_at_previous :: Maybe Text, -- change to URLTime+--     issue_event_closed_at_current :: Text -- change to URLTime+--   }+--   deriving (Typeable, Show, Eq, Generic)++-- | Note event+data NoteEvent = NoteEvent+  { note_event_object_kind :: Text,+    note_event_event_type :: Text,+    note_event_user :: User,+    note_event_project_id :: Int,+    note_event_project :: ProjectEvent,+    note_event_object_attributes :: NoteObjectAttributes,+    note_event_repository :: RepositoryEvent,+    note_event_issue :: Maybe IssueEventObjectAttributes+  }+  deriving (Typeable, Show, Eq, Generic)++instance SystemHook NoteEvent where+  match = Match+  matchIf = MatchIf++-- | CI pipeline attributes+data NoteObjectAttributes = NoteObjectAttributes+  { note_object_attributes_attachment :: Maybe Text, -- ?+    note_object_attributes_author_id :: Int,+    note_object_attributes_change_position :: Maybe Text, -- ?+    note_object_attributes_commit_id :: Maybe String,+    note_object_attributes_created_at :: Text, -- change to date+    note_object_attributes_discussion_id :: Text,+    note_object_attributes_id :: Int,+    note_object_attributes_line_code :: Maybe Int, -- ?+    note_object_attributes_note :: Text,+    note_object_attributes_noteable_id :: Maybe Int,+    note_object_attributes_noteable_type :: Text, -- "Issue"+    note_object_attributes_original_position :: Maybe Int, -- ?+    note_object_attributes_position :: Maybe Int, -- ?+    note_object_attributes_project_id :: Int,+    note_object_attributes_resolved_at :: Maybe Text, -- date?+    note_object_attributes_resolved_by_id :: Maybe Int,+    note_object_attributes_resolved_by_push :: Maybe Int, -- ?+    note_object_attributes_st_diff :: Maybe Text, -- ?+    note_object_attributes_system :: Bool,+    note_object_attributes_type :: Maybe Text, -- ?+    note_object_attributes_updated_at :: Maybe Text, -- date?+    note_object_attributes_updated_by_id :: Maybe Int, -- ?+    note_object_attributes_description :: Text,+    note_object_attributes_url :: Text,+    note_object_attributes_action :: Text -- "create"+  }+  deriving (Typeable, Show, Eq, Generic)++-- | Note event+data WikiPageEvent = WikiPageEvent+  { wiki_page_event_object_kind :: Text,+    wiki_page_event_user :: User,+    -- wiki_page_event_project :: Maybe Project, -- this will not parse but the JSON elements are too different from Project type+    wiki_page_event_wiki :: Wiki,+    wiki_page_event_object_attributes :: WikiPageObjectAttributes+  }+  deriving (Typeable, Show, Eq, Generic)++instance SystemHook WikiPageEvent where+  match = Match+  matchIf = MatchIf++data Wiki = Wiki+  { wiki_web_url :: Maybe Text, -- use URL related type in future for these+    wiki_git_ssh_url :: Maybe Text,+    wiki_git_http_url :: Maybe Text,+    wiki_path_with_namespace :: Maybe Text,+    wiki_default_branch :: Maybe Text+  }+  deriving (Typeable, Show, Eq, Generic)++data WikiPageObjectAttributes = WikiPageObjectAttributes+  { wiki_page_object_attributes_slug :: Maybe Text,+    wiki_page_object_attributes_title :: Maybe Text,+    wiki_page_object_attributes_format :: Maybe Text,+    wiki_page_object_attributes_message :: Maybe Text,+    wiki_page_object_attributes_version_id :: Maybe Text,+    wiki_page_object_attributes_url :: Maybe Text,+    wiki_page_object_attributes_action :: Maybe Text, -- 'update' .. better type in future?+    wiki_page_object_attributes_diff_url :: Maybe Text+  }+  deriving (Typeable, Show, Eq, Generic)++-- TODO remove object_kind fields, they can be discarded after checking their values.++data WorkItemEvent = WorkItemEvent+  { work_item_event_user :: User,+    work_item_event_object_attributes :: WorkItemObjectAttributes,+    work_item_event_labels :: [Label],+    -- work_item_event_changes :: Change,+    work_item_event_repository :: Repository,+    work_item_event_assignees :: [User]+  }+  deriving (Typeable, Show, Eq, Generic)++instance SystemHook WorkItemEvent where+  match = Match+  matchIf = MatchIf++data WorkItemObjectAttributes = WorkItemObjectAttributes+  { work_item_object_author_id :: Int,+    work_item_object_closed_at :: Text, -- change to date type+    work_item_object_confidential :: Bool,+    work_item_object_created_at :: Text, -- change to date type+    work_item_object_description :: Maybe Text,+    work_item_object_discussion_locked :: Maybe Bool,+    work_item_object_due_date :: Maybe Text, -- chanage to date type+    work_item_object_id :: Int,+    work_item_object_iid :: Int,+    work_item_object_last_edited_at :: Maybe Text,+    work_item_object_last_edited_by_id :: Maybe Int,+    work_item_object_milestone_id :: Maybe Int,+    work_item_object_moved_to_id :: Maybe Int,+    work_item_object_duplicated_to_id :: Maybe Int,+    work_item_object_project_id :: Int,+    work_item_object_relative_position :: Int,+    work_item_object_state_id :: Int,+    work_item_object_time_estimate :: Int,+    work_item_object_title :: Text,+    work_item_object_updated_at :: Text,+    work_item_object_updated_by_id :: Int,+    work_item_object_type :: Text, -- change to own type e.g. "Task"+    work_item_object_url :: Text,+    work_item_object_total_time_spent :: Int,+    work_item_object_time_change :: Int,+    work_item_object_human_total_time_spent :: Maybe Int,+    work_item_object_human_time_change :: Maybe Int,+    work_item_object_human_time_estimate :: Maybe Int,+    work_item_object_assignee_ids :: [Int],+    work_item_object_assignee_id :: Int,+    work_item_object_labels :: [Label],+    work_item_object_state :: Text, -- change to own type e.g. "closed"+    work_item_object_severity :: Text, -- change to own type e.g. "unknown"+    work_item_object_customer_relations_contacts :: [Text],+    work_item_object_action :: Text -- change to own type e.g. "close"+  }+  deriving (Typeable, Show, Eq, Generic)+ instance FromJSON ProjectCreate where   parseJSON =     withObject "ProjectCreate" $ \v -> do@@ -1036,8 +1498,8 @@                 <*> v .: "updated_at"                 <*> v .: "event_name"                 <*> v .: "name"-                <*> v .: "owner_email"-                <*> v .: "owner_name"+                <*> v .:? "owner_email"+                <*> v .:? "owner_name"                 <*> v .: "path"                 <*> v .: "group_id"             _unexpected -> fail "group_create parsing failed"@@ -1254,7 +1716,124 @@             _unexpected -> fail "merge_request parsing failed"         _unexpected -> fail "merge_request parsing failed" +instance FromJSON BuildEvent where+  parseJSON =+    withObject "BuildEvent" $ \v -> do+      isProjectEvent <- v .:? "object_kind"+      case isProjectEvent of+        Just theEvent ->+          case theEvent of+            Built ->+              BuildEvent+                <$> v .: "object_kind"+                <*> v .: "ref"+                <*> v .: "tag"+                <*> v .: "before_sha"+                <*> v .: "sha"+                <*> v .: "retries_count"+                <*> v .: "build_id"+                <*> v .: "build_name"+                <*> v .: "build_stage"+                <*> v .: "build_status"+                <*> v .: "build_created_at"+                <*> v .: "build_started_at"+                <*> v .: "build_finished_at"+                <*> v .: "build_duration"+                <*> v .: "build_queued_duration"+                <*> v .: "build_allow_failure"+                <*> v .: "build_failure_reason"+                <*> v .: "pipeline_id"+                <*> v .: "runner"+                <*> v .: "project_id"+                <*> v .: "project_name"+                <*> v .: "user"+                <*> v .: "commit"+                <*> v .: "repository"+                <*> v .: "project"+                <*> v .: "environment"+            unexpected -> fail ("build parsing failed: " <> show unexpected)+        unexpected -> fail ("build parsing failed: " <> show unexpected)++instance FromJSON PipelineEvent where+  parseJSON =+    withObject "Pipeline" $ \v -> do+      isProjectEvent <- v .:? "object_kind"+      case isProjectEvent of+        Just theEvent ->+          case theEvent of+            Pipelined ->+              PipelineEvent+                <$> v .: "object_kind"+                <*> v .: "object_attributes"+                <*> v .: "merge_request"+                <*> v .: "user"+                <*> v .: "project"+                <*> v .: "commit"+                <*> v .: "builds"+            _unexpected -> fail "build parsing failed"+        _unexpected -> fail "build parsing failed"++instance FromJSON NoteEvent where+  parseJSON =+    withObject "NoteEvent" $ \v -> do+      isNoteEvent <- v .:? "object_kind"+      case isNoteEvent of+        Just theEvent ->+          case theEvent of+            Noted ->+              NoteEvent+                <$> v .: "object_kind"+                <*> v .: "event_type"+                <*> v .: "user"+                <*> v .: "project_id"+                <*> v .: "project"+                <*> v .: "object_attributes"+                <*> v .: "repository"+                <*> v .:? "issue"+            _unexpected -> fail "note parsing failed"+        _unexpected -> fail "note parsing failed"++instance FromJSON WikiPageEvent where+  parseJSON =+    withObject "WikiPageEvent" $ \v -> do+      isWikiPageEvent <- v .:? "object_kind"+      case isWikiPageEvent of+        Just theEvent ->+          case theEvent of+            WikiPaged ->+              WikiPageEvent+                <$> v .: "object_kind"+                <*> v .: "user"+                <*> v .: "wiki"+                <*> v .: "object_attributes"+            _unexpected -> fail "wiki page parsing failed"+        _unexpected -> fail "wiki page parsing failed"++instance FromJSON WorkItemEvent where+  parseJSON =+    withObject "WorkItemEvent" $ \v -> do+      isWorkItemEvent <- v .:? "object_kind"+      case isWorkItemEvent of+        Just theEvent ->+          case theEvent of+            WorkItemed ->+              WorkItemEvent+                <$> v .: "user"+                <*> v .: "object_attributes"+                <*> v .: "labels"+                -- <*> v .: "changes"+                <*> v .: "repository"+                <*> v .: "assignees"+            _unexpected -> fail "work item parsing failed"+        _unexpected -> fail "work item parsing failed"++-- TODO: replace bodyNoPrefix with a template Haskell based approach in src/GitLab/Types.hs+-- e.g.++-- $(deriveJSON defaultOptions {fieldLabelModifier = drop (T.length "event_"), omitNothingFields = True} ''Event)+ bodyNoPrefix :: String -> String+bodyNoPrefix "projectEvent_id" = "id" bodyNoPrefix "projectEvent_name" = "name" bodyNoPrefix "projectEvent_description" = "description" bodyNoPrefix "projectEvent_web_url" = "web_url"@@ -1344,7 +1923,214 @@ bodyNoPrefix "mergeRequestChanges_updated_at" = "updated_at" bodyNoPrefix "mergeRequestChange_previous" = "previous" bodyNoPrefix "mergeRequestChange_current" = "current"-bodyNoPrefix s = error ("uexpected JSON field prefix: " <> s)+bodyNoPrefix "build_commit_id" = "id"+bodyNoPrefix "build_commit_name" = "name"+bodyNoPrefix "build_commit_sha" = "sha"+bodyNoPrefix "build_commit_message" = "message"+bodyNoPrefix "build_commit_author_name" = "author_name"+bodyNoPrefix "build_commit_author_email" = "author_email"+bodyNoPrefix "build_commit_author_url" = "author_url"+bodyNoPrefix "build_commit_status" = "status"+bodyNoPrefix "build_commit_duration" = "duration"+bodyNoPrefix "build_commit_started_at" = "started_at"+bodyNoPrefix "build_commit_finished_at" = "finished_at"+bodyNoPrefix "build_project_project_id" = "id"+bodyNoPrefix "build_project_project_name" = "name"+bodyNoPrefix "build_project_description" = "description"+bodyNoPrefix "build_project_web_url" = "web_url"+bodyNoPrefix "build_project_avatar_url" = "avatar_url"+bodyNoPrefix "build_project_git_ssh_url" = "git_ssh_url"+bodyNoPrefix "build_project_git_http_url" = "git_http_url"+bodyNoPrefix "build_project_namespace" = "namespace"+bodyNoPrefix "build_project_visibility_level" = "visibility_level"+bodyNoPrefix "build_project_path_with_namespace" = "path_with_namespace"+bodyNoPrefix "build_project_default_branch" = "default_branch"+bodyNoPrefix "build_project_ci_config_path" = "ci_config_path"+bodyNoPrefix "pipeline_object_attributes_id" = "id"+bodyNoPrefix "pipeline_object_attributes_iid" = "iid"+bodyNoPrefix "pipeline_object_attributes_name" = "name"+bodyNoPrefix "pipeline_object_attributes_ref" = "ref"+bodyNoPrefix "pipeline_object_attributes_tag" = "tag"+bodyNoPrefix "pipeline_object_attributes_sha" = "sha"+bodyNoPrefix "pipeline_object_attributes_before_sha" = "before_sha"+bodyNoPrefix "pipeline_object_attributes_source" = "source"+bodyNoPrefix "pipeline_object_attributes_status" = "status"+bodyNoPrefix "pipeline_object_attributes_detailed_status" = "detailed_status"+bodyNoPrefix "pipeline_object_attributes_stages" = "stages"+bodyNoPrefix "pipeline_object_attributes_created_at" = "created_at"+bodyNoPrefix "pipeline_object_attributes_finished_at" = "finished_at"+bodyNoPrefix "pipeline_object_attributes_duration" = "duration"+bodyNoPrefix "pipeline_object_attributes_queued_duration" = "queued_duration"+bodyNoPrefix "pipeline_object_attributes_variables" = "variables"+bodyNoPrefix "pipeline_object_attributes_url" = "url"+bodyNoPrefix "pipeline_build_id" = "id"+bodyNoPrefix "pipeline_build_stage" = "stage"+bodyNoPrefix "pipeline_build_name" = "name"+bodyNoPrefix "pipeline_build_status" = "status"+bodyNoPrefix "pipeline_build_created_at" = "created_at"+bodyNoPrefix "pipeline_build_started_at" = "started_at"+bodyNoPrefix "pipeline_build_finished_at" = "finished_at"+bodyNoPrefix "pipeline_build_duration" = "duration"+bodyNoPrefix "pipeline_build_queued_duration" = "queued_duration"+bodyNoPrefix "pipeline_build_failure_reason" = "failure_reason"+bodyNoPrefix "pipeline_build_when" = "when"+bodyNoPrefix "pipeline_build_manual" = "manual"+bodyNoPrefix "pipeline_build_allow_failure" = "allow_failure"+bodyNoPrefix "pipeline_build_user" = "user"+bodyNoPrefix "pipeline_build_runner" = "runner"+bodyNoPrefix "pipeline_build_artifacts_file" = "artifacts_file"+bodyNoPrefix "pipeline_build_environment" = "environment"+bodyNoPrefix "runner_id" = "id"+bodyNoPrefix "runner_description" = "description"+bodyNoPrefix "runner_runner_type" = "runner_type"+bodyNoPrefix "runner_active" = "active"+bodyNoPrefix "runner_is_shared" = "is_shared"+bodyNoPrefix "runner_tags" = "tags"+bodyNoPrefix "artifacts_file_filename" = "filename"+bodyNoPrefix "artifacts_file_size" = "size"+bodyNoPrefix "issue_event_event_type" = "event_type"+bodyNoPrefix "issue_event_user" = "user"+bodyNoPrefix "issue_event_project" = "project"+bodyNoPrefix "issue_event_object_attributes" = "object_attributes"+bodyNoPrefix "issue_event_labels" = "labels"+bodyNoPrefix "issue_event_changes" = "changes"+bodyNoPrefix "issue_event_repository" = "repository"+bodyNoPrefix "issue_event_assignees" = "assignees"+bodyNoPrefix "issue_event_object_attributes_author_id" = "author_id"+bodyNoPrefix "issue_event_object_attributes_closed_at" = "closed_at"+bodyNoPrefix "issue_event_object_attributes_confidential" = "confidential"+bodyNoPrefix "issue_event_object_attributes_created_at" = "created_at"+bodyNoPrefix "issue_event_object_attributes_description" = "description"+bodyNoPrefix "issue_event_object_attributes_discussion_locked" = "discussion_locked"+bodyNoPrefix "issue_event_object_attributes_due_date" = "due_date"+bodyNoPrefix "issue_event_object_attributes_id" = "id"+bodyNoPrefix "issue_event_object_attributes_iid" = "iid"+bodyNoPrefix "issue_event_object_attributes_last_edited_at" = "last_edited_at"+bodyNoPrefix "issue_event_object_attributes_last_edited_by" = "last_edited_by"+bodyNoPrefix "issue_event_object_attributes_milestone_id" = "milestone_id"+bodyNoPrefix "issue_event_object_attributes_move_to_id" = "move_to_id"+bodyNoPrefix "issue_event_object_attributes_duplicated_to_id" = "duplicated_to_id"+bodyNoPrefix "issue_event_object_attributes_project_id" = "project_id"+bodyNoPrefix "issue_event_object_attributes_relative_position" = "relative_position"+bodyNoPrefix "issue_event_object_attributes_state_id" = "state_id"+bodyNoPrefix "issue_event_object_attributes_time_estimate" = "time_estimate"+bodyNoPrefix "issue_event_object_attributes_title" = "title"+bodyNoPrefix "issue_event_object_attributes_updated_at" = "updated_at"+bodyNoPrefix "issue_event_object_attributes_updated_by_id" = "updated_by_id"+bodyNoPrefix "issue_event_object_attributes_type" = "type"+bodyNoPrefix "issue_event_object_attributes_url" = "url"+bodyNoPrefix "issue_event_object_attributes_total_time_spent" = "total_time_spent"+bodyNoPrefix "issue_event_object_attributes_time_change" = "time_change"+bodyNoPrefix "issue_event_object_attributes_human_total_time_spent" = "human_total_time_spent"+bodyNoPrefix "issue_event_object_attributes_human_time_change" = "human_time_change"+bodyNoPrefix "issue_event_object_attributes_human_time_estimate" = "human_time_estimate"+bodyNoPrefix "issue_event_changes_author_id" = "author_id"+bodyNoPrefix "issue_event_author_id_previous" = "previous"+bodyNoPrefix "issue_event_author_id_current" = "current"+bodyNoPrefix "issue_event_changes_created_at" = "created_at"+bodyNoPrefix "issue_event_created_at_previous" = "previous"+bodyNoPrefix "issue_event_created_at_current" = "current"+bodyNoPrefix "issue_event_changes_description" = "description"+bodyNoPrefix "issue_event_description_previous" = "previous"+bodyNoPrefix "issue_event_description_current" = "current"+bodyNoPrefix "issue_event_changes_id" = "id"+bodyNoPrefix "issue_event_id_previous" = "previous"+bodyNoPrefix "issue_event_id_current" = "current"+bodyNoPrefix "issue_event_changes_iid" = "iid"+bodyNoPrefix "issue_event_iid_previous" = "previous"+bodyNoPrefix "issue_event_iid_current" = "current"+bodyNoPrefix "issue_event_changes_project_id" = "project_id"+bodyNoPrefix "issue_event_project_id_previous" = "previous"+bodyNoPrefix "issue_event_project_id_current" = "current"+bodyNoPrefix "issue_event_changes_title" = "title"+bodyNoPrefix "issue_event_title_previous" = "previous"+bodyNoPrefix "issue_event_title_current" = "current"+bodyNoPrefix "issue_event_changes_updated_at" = "updated_at"+bodyNoPrefix "issue_event_updated_at_previous" = "previous"+bodyNoPrefix "issue_event_updated_at_current" = "current"+bodyNoPrefix "issue_event_changes_closed_at" = "closed_at"+bodyNoPrefix "issue_event_closed_at_previous" = "previous"+bodyNoPrefix "issue_event_closed_at_current" = "current"+bodyNoPrefix "issue_event_changes_state_id" = "state_id"+bodyNoPrefix "issue_event_state_id_previous" = "previous"+bodyNoPrefix "issue_event_state_id_current" = "current"+bodyNoPrefix "issue_event_changes_updated_at" = "updated_at"+bodyNoPrefix "issue_event_updated_at_previous" = "previous"+bodyNoPrefix "issue_event_updated_at_current" = "current"+bodyNoPrefix "note_object_attributes_attachment" = "attachment"+bodyNoPrefix "note_object_attributes_author_id" = "author_id"+bodyNoPrefix "note_object_attributes_change_position" = "change_position"+bodyNoPrefix "note_object_attributes_commit_id" = "commit_id"+bodyNoPrefix "note_object_attributes_created_at" = "created_at"+bodyNoPrefix "note_object_attributes_discussion_id" = "discussion_id"+bodyNoPrefix "note_object_attributes_id" = "id"+bodyNoPrefix "note_object_attributes_line_code" = "line_code"+bodyNoPrefix "note_object_attributes_note" = "note"+bodyNoPrefix "note_object_attributes_noteable_id" = "noteable_id"+bodyNoPrefix "note_object_attributes_noteable_type" = "noteable_type"+bodyNoPrefix "note_object_attributes_original_position" = "original_position"+bodyNoPrefix "note_object_attributes_position" = "position"+bodyNoPrefix "note_object_attributes_project_id" = "project_id"+bodyNoPrefix "note_object_attributes_resolved_at" = "resolved_at"+bodyNoPrefix "note_object_attributes_resolved_by_id" = "resolved_by_id"+bodyNoPrefix "note_object_attributes_resolved_by_push" = "resolved_by_push"+bodyNoPrefix "note_object_attributes_st_diff" = "st_diff"+bodyNoPrefix "note_object_attributes_system" = "system"+bodyNoPrefix "note_object_attributes_type" = "type"+bodyNoPrefix "note_object_attributes_updated_at" = "updated_at"+bodyNoPrefix "note_object_attributes_updated_by_id" = "updated_by_id"+bodyNoPrefix "note_object_attributes_description" = "description"+bodyNoPrefix "note_object_attributes_url" = "url"+bodyNoPrefix "note_object_attributes_action" = "action"+bodyNoPrefix "wiki_web_url" = "web_url"+bodyNoPrefix "wiki_git_ssh_url" = "git_ssh_url"+bodyNoPrefix "wiki_git_http_url" = "git_http_url"+bodyNoPrefix "wiki_path_with_namespace" = "path_with_namespace"+bodyNoPrefix "wiki_default_branch" = "default_branch"+bodyNoPrefix "wiki_page_object_attributes_slug" = "slug"+bodyNoPrefix "wiki_page_object_attributes_title" = "title"+bodyNoPrefix "wiki_page_object_attributes_format" = "format"+bodyNoPrefix "wiki_page_object_attributes_message" = "message"+bodyNoPrefix "wiki_page_object_attributes_version_id" = "version_id"+bodyNoPrefix "wiki_page_object_attributes_url" = "url"+bodyNoPrefix "wiki_page_object_attributes_action" = "action"+bodyNoPrefix "wiki_page_object_attributes_diff_url" = "diff_url"+bodyNoPrefix "work_item_object_author_id" = "author_id"+bodyNoPrefix "work_item_object_closed_at" = "closed_at"+bodyNoPrefix "work_item_object_confidential" = "confidential"+bodyNoPrefix "work_item_object_created_at" = "created_at"+bodyNoPrefix "work_item_object_description" = "description"+bodyNoPrefix "work_item_object_discussion_locked" = "discussion_locked"+bodyNoPrefix "work_item_object_due_date" = "due_date"+bodyNoPrefix "work_item_object_id" = "id"+bodyNoPrefix "work_item_object_iid" = "iid"+bodyNoPrefix "work_item_object_last_edited_at" = "last_edited_at"+bodyNoPrefix "work_item_object_last_edited_at_by_id" = "edited_at_by_id"+bodyNoPrefix "work_item_object_milestone_id" = "milestone_id"+bodyNoPrefix "work_item_object_moved_to_id" = "moved_to_id"+bodyNoPrefix "work_item_object_duplicated_to_id" = "duplicated_to_id"+bodyNoPrefix "work_item_object_project_id" = "project_id"+bodyNoPrefix "work_item_object_relative_position" = "relative_position"+bodyNoPrefix "work_item_object_state_id" = "state_id"+bodyNoPrefix "work_item_object_time_estimate" = "time_estimate"+bodyNoPrefix "work_item_object_title" = "title"+bodyNoPrefix "work_item_object_updated_at" = "updated_at"+bodyNoPrefix "work_item_object_updated_by_id" = "updated_by_id"+bodyNoPrefix "work_item_object_type" = "type"+bodyNoPrefix "work_item_object_url" = "url"+bodyNoPrefix "work_item_object_total_time_spent" = "total_time_spent"+bodyNoPrefix "work_item_object_time_change" = "time_change"+bodyNoPrefix "work_item_object_human_total_time_spent" = "human_total_time_spent"+bodyNoPrefix "work_item_object_human_time_change" = "human_time_change"+bodyNoPrefix "work_item_object_human_time_estimate" = "human_time_estimate"+bodyNoPrefix "work_item_object_assignee_ids" = "assignee_ids"+bodyNoPrefix "work_item_object_assignee_id" = "assignee_id"+bodyNoPrefix "work_item_object_labels" = "labels"+bodyNoPrefix "work_item_object_state" = "state"+bodyNoPrefix "work_item_object_severity" = "severity"+bodyNoPrefix "work_item_object_customer_relations_contacts" = "customer_relations_contacts"+bodyNoPrefix "work_item_object_action" = "action"+bodyNoPrefix s = fail ("uexpected JSON field prefix: " <> s)  instance FromJSON ProjectEvent where   parseJSON =@@ -1386,7 +2172,7 @@           }       ) -instance FromJSON ObjectAttributes where+instance FromJSON MergeRequestObjectAttributes where   parseJSON =     genericParseJSON       ( defaultOptions@@ -1418,6 +2204,22 @@           }       ) +instance FromJSON BuildCommit where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON BuildProject where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )+ instance (FromJSON a) => FromJSON (MergeRequestChange a) where   parseJSON =     genericParseJSON@@ -1426,6 +2228,174 @@           }       ) +instance FromJSON PipelineObjectAttributes where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON PipelineBuild where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON Runner where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON ArtifactsFile where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON IssueEvent where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON IssueEventObjectAttributes where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON IssueEventChanges where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON IssueChangesAuthorId where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON IssueChangesCreatedAt where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON IssueChangesDescription where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON IssueChangesId where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON IssueChangesIid where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON IssueChangesProjectId where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON IssueChangesTitle where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON IssueChangesClosedAt where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON IssueChangesStateId where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON IssueChangesUpdatedAt where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON NoteObjectAttributes where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON Wiki where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON WikiPageObjectAttributes where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )++instance FromJSON WorkItemObjectAttributes where+  parseJSON =+    genericParseJSON+      ( defaultOptions+          { fieldLabelModifier = bodyNoPrefix+          }+      )+ instance FromJSON Label where   parseJSON = withObject "Label" $ \obj -> do     labelId <- obj .:? "id"@@ -1477,4 +2447,9 @@   parseJSON (String "tag_push") = return TagPushed   parseJSON (String "repository_update") = return RepositoryUpdated   parseJSON (String "merge_request") = return MergeRequested+  parseJSON (String "build") = return Built+  parseJSON (String "pipeline") = return Pipelined+  parseJSON (String "note") = return Noted+  parseJSON (String "wiki_page") = return WikiPaged+  parseJSON (String "work_item") = return WorkItemed   parseJSON s = fail ("unexpected system hook event: " <> show s)
src/GitLab/Types.hs view
@@ -154,9 +154,11 @@   }  data DebugSystemHooks-  = -- | Report JSON objects only of unprocessed events+  = -- | Report JSON objects about GitLab events only for unprocessed events     UnprocessedEvents-  | -- | Report all JSON objects received+  | -- | Report JSON objects about GitLab events that were not successfully parsed+    NonParsedJSON+  | -- | Report all received JSON objects about GitLab events     AllJSON   deriving (Eq) @@ -541,7 +543,7 @@     user_followers :: Maybe Int,     user_bot :: Maybe Bool,     user_following :: Maybe Int,-    user_state :: Text,+    user_state :: Maybe Text,     user_avatar_url :: Maybe Text,     user_web_url :: Maybe Text,     user_location :: Maybe Text,@@ -779,11 +781,11 @@  -- | repositories. data Repository = Repository-  { repository_id :: Text,+  { repository_id :: Maybe Text,     repository_name :: Text,-    repository_type :: Text,-    repository_path :: Text,-    repository_mode :: Text+    repository_type :: Maybe Text,+    repository_path :: Maybe Text,+    repository_mode :: Maybe Text   }   deriving (Show, Eq) 
tests/SystemHookTests.hs view
@@ -4,6 +4,7 @@ module SystemHookTests (systemHookTests) where  import Control.Monad.IO.Class+import Data.Maybe import qualified Data.Text.IO as TIO import GitLab import Test.Tasty@@ -98,6 +99,11 @@             >>= \eventJson -> parseEvent eventJson @?= Just groupCreatedHaskell         ),       testCase+        "group-created-event2"+        ( TIO.readFile "data/system-hooks/group-created2.json"+            >>= \eventJson -> parseEvent eventJson @?= Just groupCreated2Haskell+        ),+      testCase         "group-removed-event"         ( TIO.readFile "data/system-hooks/group-removed.json"             >>= \eventJson -> parseEvent eventJson @?= Just groupRemovedHaskell@@ -128,6 +134,11 @@             >>= \eventJson -> parseEvent eventJson @?= Just pushHaskell         ),       testCase+        "push-event-2"+        ( TIO.readFile "data/system-hooks/push2.json"+            >>= \eventJson -> parseEvent eventJson @?= Just push2Haskell+        ),+      testCase         "tag-push-event"         ( TIO.readFile "data/system-hooks/tag-push.json"             >>= \eventJson -> parseEvent eventJson @?= Just tagPushHaskell@@ -151,6 +162,86 @@         "repository-update-event"         ( TIO.readFile "data/system-hooks/repository-update.json"             >>= \eventJson -> parseEvent eventJson @?= Just repositoryUpdateHaskell+        ),+      testCase+        "build1"+        ( TIO.readFile "data/system-hooks/build.json"+            >>= \eventJson -> parseEvent eventJson @?= Just buildHaskell+        ),+      testCase+        "build2"+        ( TIO.readFile "data/system-hooks/build2.json"+            >>= \eventJson -> parseEvent eventJson @?= Just build2Haskell+        ),+      testCase+        "pipeline1"+        ( TIO.readFile "data/system-hooks/pipeline.json"+            >>= \eventJson -> parseEvent eventJson @?= Just pipelineHaskell+        ),+      testCase+        "pipeline2"+        ( TIO.readFile "data/system-hooks/pipeline2.json"+            >>= \eventJson -> parseEvent eventJson @?= Just pipeline2Haskell+        ),+      testCase+        "pipeline3"+        ( TIO.readFile "data/system-hooks/pipeline3.json"+            >>= \eventJson -> parseEvent eventJson @?= Just pipeline3Haskell+        ),+      testCase+        "pipeline4"+        ( TIO.readFile "data/system-hooks/pipeline4.json"+            >>= \eventJson -> parseEvent eventJson @?= Just pipeline4Haskell+        ),+      testCase+        "pipeline5"+        ( TIO.readFile "data/system-hooks/pipeline5.json"+            >>= \eventJson -> parseEvent eventJson @?= Just pipeline5Haskell+        ),+      testCase+        "issue1"+        ( TIO.readFile "data/system-hooks/issue1.json"+            >>= \eventJson -> parseEvent eventJson @?= Just issue1Haskell+        ),+      testCase+        "issue2"+        ( TIO.readFile "data/system-hooks/issue2.json"+            >>= \eventJson -> parseEvent eventJson @?= Just issue2Haskell+        ),+      testCase+        "issue3"+        ( TIO.readFile "data/system-hooks/issue3.json"+            >>= \eventJson -> parseEvent eventJson @?= Just issue3Haskell+        ),+      testCase+        "issue4"+        ( TIO.readFile "data/system-hooks/issue4.json"+            >>= \eventJson -> parseEvent eventJson @?= Just issue4Haskell+        ),+      testCase+        "note1"+        ( TIO.readFile "data/system-hooks/note1.json"+            >>= \eventJson -> parseEvent eventJson @?= Just note1Haskell+        ),+      testCase+        "note2"+        ( TIO.readFile "data/system-hooks/note2.json"+            >>= \eventJson -> parseEvent eventJson @?= Just note2Haskell+        ),+      testCase+        "note3"+        ( TIO.readFile "data/system-hooks/note3.json"+            >>= \eventJson -> parseEvent eventJson @?= Just note3Haskell+        ),+      testCase+        "wiki-page1"+        ( TIO.readFile "data/system-hooks/wiki-page1.json"+            >>= \eventJson -> parseEvent eventJson @?= Just wikiPage1Haskell+        ),+      testCase+        "work-item1"+        ( TIO.readFile "data/system-hooks/work-item1.json"+            >>= \eventJson -> parseEvent eventJson @?= Just workItem1Haskell         )     ] @@ -244,6 +335,12 @@       <> matchTest "tag-push" "tag-push.json" tagPushRule "project-created.json" projectCreateRule       <> matchTest "repository-update" "repository-update.json" repositoryUpdateRule "project-created.json" projectCreateRule       <> matchTest "merge-request" "merge-request.json" mergeRequestRule "project-created.json" projectCreateRule+      <> matchTest "build" "build.json" buildRule "project-created.json" projectCreateRule+      <> matchTest "pipeline" "pipeline.json" pipelineRule "project-created.json" projectCreateRule+      <> matchTest "issue" "issue1.json" issueRule "project-created.json" projectCreateRule+      <> matchTest "note" "note1.json" noteRule "project-created.json" projectCreateRule+      <> matchTest "note" "wiki-page1.json" wikiPageRule "project-created.json" projectCreateRule+      <> matchTest "note" "work-item1.json" workItemRule "project-created.json" projectCreateRule  matchIfTests :: TestTree matchIfTests =@@ -272,6 +369,12 @@       <> matchIfTest "tag-push" "tag-push.json" tagPushIfRuleYes tagPushIfRuleNo       <> matchIfTest "repository-update" "repository-update.json" repositoryUpdateIfRuleYes repositoryUpdateIfRuleNo       <> matchIfTest "merge-request" "merge-request.json" mergeRequestIfRuleYes mergeRequestIfRuleNo+      <> matchIfTest "build" "build.json" buildIfRuleYes buildIfRuleNo+      <> matchIfTest "pipeline" "pipeline.json" pipelineIfRuleYes pipelineIfRuleNo+      <> matchIfTest "issue" "issue1.json" issueIfRuleYes issueIfRuleNo+      <> matchIfTest "note" "note1.json" noteIfRuleYes noteIfRuleNo+      <> matchIfTest "note" "wiki-page1.json" wikiPageIfRuleYes wikiPageIfRuleNo+      <> matchIfTest "note" "work-item1.json" workItemIfRuleYes workItemIfRuleNo  receiveTests :: TestTree receiveTests =@@ -1030,7 +1133,7 @@   matchIf     "push rule-if yes"     ( \event@Push {} -> do-        return (push_checkout_sha event == "da1560886d4f094c3e6c9ef40349f7d38b5d27d7")+        return (push_checkout_sha event == Just "da1560886d4f094c3e6c9ef40349f7d38b5d27d7")     )     ( \Push {} -> do         return ()@@ -1041,7 +1144,7 @@   matchIf     "push rule-if no"     ( \event@Push {} -> do-        return (push_checkout_sha event == "")+        return (push_checkout_sha event == Just "")     )     ( \Push {} -> do         return ()@@ -1137,6 +1240,186 @@         return ()     ) +buildRule :: Rule+buildRule =+  match+    "build rule"+    ( \BuildEvent {} -> do+        return ()+    )++buildIfRuleYes :: Rule+buildIfRuleYes =+  matchIf+    "build rule-if yes"+    ( \event@BuildEvent {} -> do+        return (build_event_build_event_name event == "junit")+    )+    ( \BuildEvent {} -> do+        return ()+    )++buildIfRuleNo :: Rule+buildIfRuleNo =+  matchIf+    "build rule-if no"+    ( \event@BuildEvent {} -> do+        return (build_event_build_event_name event == "not-junit")+    )+    ( \BuildEvent {} -> do+        return ()+    )++pipelineRule :: Rule+pipelineRule =+  match+    "pipeline rule"+    ( \PipelineEvent {} -> do+        return ()+    )++pipelineIfRuleYes :: Rule+pipelineIfRuleYes =+  matchIf+    "piple rule-if yes"+    ( \event@PipelineEvent {} -> do+        return (build_project_project_name (pipeline_event_project event) == "proj-name")+    )+    ( \PipelineEvent {} -> do+        return ()+    )++pipelineIfRuleNo :: Rule+pipelineIfRuleNo =+  matchIf+    "pipeline rule-if no"+    ( \event@PipelineEvent {} -> do+        return (build_project_project_name (pipeline_event_project event) == "proj-not-name")+    )+    ( \PipelineEvent {} -> do+        return ()+    )++issueRule :: Rule+issueRule =+  match+    "issue rule"+    ( \IssueEvent {} -> do+        return ()+    )++issueIfRuleYes :: Rule+issueIfRuleYes =+  matchIf+    "issue rule-if yes"+    ( \event@IssueEvent {} -> do+        return (projectEvent_name (fromJust (issue_event_project event)) == "proj-name")+    )+    ( \IssueEvent {} -> do+        return ()+    )++issueIfRuleNo :: Rule+issueIfRuleNo =+  matchIf+    "issue rule-if no"+    ( \event@IssueEvent {} -> do+        return (projectEvent_name (fromJust (issue_event_project event)) == "proj-not-name")+    )+    ( \IssueEvent {} -> do+        return ()+    )++noteRule :: Rule+noteRule =+  match+    "note rule"+    ( \NoteEvent {} -> do+        return ()+    )++noteIfRuleYes :: Rule+noteIfRuleYes =+  matchIf+    "note rule-if yes"+    ( \event@NoteEvent {} -> do+        return (user_username (note_event_user event) == "joe")+    )+    ( \NoteEvent {} -> do+        return ()+    )++noteIfRuleNo :: Rule+noteIfRuleNo =+  matchIf+    "note rule-if no"+    ( \event@NoteEvent {} -> do+        return (user_username (note_event_user event) == "not joe")+    )+    ( \NoteEvent {} -> do+        return ()+    )++wikiPageRule :: Rule+wikiPageRule =+  match+    "wiki page rule"+    ( \WikiPageEvent {} -> do+        return ()+    )++wikiPageIfRuleYes :: Rule+wikiPageIfRuleYes =+  matchIf+    "wiki page rule-if yes"+    ( \event@WikiPageEvent {} -> do+        return (user_username (wiki_page_event_user event) == "joe")+    )+    ( \WikiPageEvent {} -> do+        return ()+    )++wikiPageIfRuleNo :: Rule+wikiPageIfRuleNo =+  matchIf+    "wiki page rule-if no"+    ( \event@WikiPageEvent {} -> do+        return (user_username (wiki_page_event_user event) == "not joe")+    )+    ( \WikiPageEvent {} -> do+        return ()+    )++workItemRule :: Rule+workItemRule =+  match+    "work item rule"+    ( \WorkItemEvent {} -> do+        return ()+    )++workItemIfRuleYes :: Rule+workItemIfRuleYes =+  matchIf+    "work item rule-if yes"+    ( \event@WorkItemEvent {} -> do+        return (user_username (work_item_event_user event) == "joe")+    )+    ( \WorkItemEvent {} -> do+        return ()+    )++workItemIfRuleNo :: Rule+workItemIfRuleNo =+  matchIf+    "work item rule-if no"+    ( \event@WorkItemEvent {} -> do+        return (user_username (work_item_event_user event) == "not joe")+    )+    ( \WorkItemEvent {} -> do+        return ()+    )+ projectCreatedHaskell :: ProjectCreate projectCreatedHaskell =   ProjectCreate@@ -1368,6 +1651,10 @@       groupCreate_group_id = 78     } +groupCreated2Haskell :: GroupCreate+groupCreated2Haskell =+  GroupCreate {groupCreate_created_at = "2024-11-22T12:03:34Z", groupCreate_updated_at = "2024-11-22T12:03:34Z", groupCreate_event_name = "group_create", groupCreate_name = "the-name", groupCreate_owner_email = Nothing, groupCreate_owner_name = Nothing, groupCreate_path = "the-path", groupCreate_group_id = 31780}+ groupRemovedHaskell :: GroupRemove groupRemovedHaskell =   GroupRemove@@ -1447,66 +1734,94 @@  pushHaskell :: Push pushHaskell =-  Push-    { push_event_name = "push",-      push_before = "95790bf891e76fee5e1747ab589903a6a1f80f22",-      push_after = "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",-      push_ref = "refs/heads/master",-      push_checkout_sha = "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",-      push_user_id = 4,-      push_user_name = "John Smith",-      push_user_email = Just "john@example.com",-      push_user_username = Just "abc1",-      push_user_avatar = "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=8://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80",-      push_project_id = 15,-      push_project = ProjectEvent {projectEvent_name = "Diaspora", projectEvent_description = Just "", projectEvent_web_url = "http://example.com/mike/diaspora", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:mike/diaspora.git", projectEvent_git_http_url = "http://example.com/mike/diaspora.git", projectEvent_namespace = "Mike", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "mike/diaspora", projectEvent_default_branch = "master", projectEvent_homepage = Just "http://example.com/mike/diaspora", projectEvent_url = "git@example.com:mike/diaspora.git", projectEvent_ssh_url = "git@example.com:mike/diaspora.git", projectEvent_http_url = "http://example.com/mike/diaspora.git"},-      push_repository = RepositoryEvent {repositoryEvent_name = "Diaspora", repositoryEvent_url = "git@example.com:mike/diaspora.git", repositoryEvent_description = Just "", repositoryEvent_homepage = Just "http://example.com/mike/diaspora", repositoryEvent_git_http_url = Just "http://example.com/mike/diaspora.git", repositoryEvent_git_ssh_url = Just "git@example.com:mike/diaspora.git", repositoryEvent_visibility_level = Just Private},-      push_commits = [CommitEvent {commitEvent_id = "c5feabde2d8cd023215af4d2ceeb7a64839fc428", commitEvent_message = "Add simple search to projects in public area", commitEvent_timestamp = "2013-05-13T18:18:08+00:00", commitEvent_url = "https://dev.gitlab.org/gitlab/gitlabhq/commit/c5feabde2d8cd023215af4d2ceeb7a64839fc428", commitEvent_author = CommitAuthorEvent {commitAuthorEvent_name = "Example User", commitAuthorEvent_email = "user@example.com"}}],-      push_total_commits_count = 1-    }+  Push {push_event_name = "push", push_before = "95790bf891e76fee5e1747ab589903a6a1f80f22", push_after = "da1560886d4f094c3e6c9ef40349f7d38b5d27d7", push_ref = "refs/heads/master", push_checkout_sha = Just "da1560886d4f094c3e6c9ef40349f7d38b5d27d7", push_user_id = 4, push_user_name = "John Smith", push_user_username = Just "abc1", push_user_email = Just "john@example.com", push_user_avatar = "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=8://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80", push_project_id = 15, push_project = ProjectEvent {projectEvent_id = Nothing, projectEvent_name = "Diaspora", projectEvent_description = Just "", projectEvent_web_url = "http://example.com/mike/diaspora", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:mike/diaspora.git", projectEvent_git_http_url = "http://example.com/mike/diaspora.git", projectEvent_namespace = "Mike", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "mike/diaspora", projectEvent_default_branch = "master", projectEvent_homepage = Just "http://example.com/mike/diaspora", projectEvent_url = "git@example.com:mike/diaspora.git", projectEvent_ssh_url = "git@example.com:mike/diaspora.git", projectEvent_http_url = "http://example.com/mike/diaspora.git"}, push_repository = RepositoryEvent {repositoryEvent_name = "Diaspora", repositoryEvent_url = "git@example.com:mike/diaspora.git", repositoryEvent_description = Just "", repositoryEvent_homepage = Just "http://example.com/mike/diaspora", repositoryEvent_git_http_url = Just "http://example.com/mike/diaspora.git", repositoryEvent_git_ssh_url = Just "git@example.com:mike/diaspora.git", repositoryEvent_visibility_level = Just Private}, push_commits = [CommitEvent {commitEvent_id = "c5feabde2d8cd023215af4d2ceeb7a64839fc428", commitEvent_message = "Add simple search to projects in public area", commitEvent_timestamp = "2013-05-13T18:18:08+00:00", commitEvent_url = "https://dev.gitlab.org/gitlab/gitlabhq/commit/c5feabde2d8cd023215af4d2ceeb7a64839fc428", commitEvent_author = CommitAuthorEvent {commitAuthorEvent_name = "Example User", commitAuthorEvent_email = "user@example.com"}}], push_total_commits_count = 1} +push2Haskell :: Push+push2Haskell =+  Push {push_event_name = "push", push_before = "edcba", push_after = "0000000000000000000000000000000000000000", push_ref = "refs/heads/Rohan", push_checkout_sha = Nothing, push_user_id = 2583, push_user_name = "Joe", push_user_username = Just "joe", push_user_email = Nothing, push_user_avatar = "https://secure.gravatar.com/avatar/abc", push_project_id = 25811, push_project = ProjectEvent {projectEvent_id = Just 25811, projectEvent_name = "The project name", projectEvent_description = Nothing, projectEvent_web_url = "https://example.com/joe/proj-name", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:joe/proj-name.git", projectEvent_git_http_url = "https://example.com/joe/proj-name.git", projectEvent_namespace = "The namespace", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe/proj-name", projectEvent_default_branch = "main", projectEvent_homepage = Just "https://example.com/joe/proj-name", projectEvent_url = "git@example.com:joe/proj-name.git", projectEvent_ssh_url = "git@example.com:joe/proj-name.git", projectEvent_http_url = "https://example.com/joe/proj-name.git"}, push_repository = RepositoryEvent {repositoryEvent_name = "The project name", repositoryEvent_url = "git@example.com:joe/proj-name.git", repositoryEvent_description = Nothing, repositoryEvent_homepage = Just "https://example.com/joe/proj-name", repositoryEvent_git_http_url = Just "https://example.com/joe/proj-name.git", repositoryEvent_git_ssh_url = Just "git@example.com:joe/proj-name.git", repositoryEvent_visibility_level = Just Private}, push_commits = [], push_total_commits_count = 0}+ tagPushHaskell :: TagPush tagPushHaskell =-  TagPush-    { tagPush_event_name = "tag_push",-      tagPush_before = "0000000000000000000000000000000000000000",-      tagPush_after = "82b3d5ae55f7080f1e6022629cdb57bfae7cccc7",-      tagPush_ref = "refs/tags/v1.0.0",-      tagPush_checkout_sha = "5937ac0a7beb003549fc5fd26fc247adbce4a52e",-      tagPush_user_id = 1,-      tagPush_user_name = "John Smith",-      tagPush_user_avatar = "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=8://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80",-      tagPush_project_id = 1,-      tagPush_project = ProjectEvent {projectEvent_name = "Example", projectEvent_description = Just "", projectEvent_web_url = "http://example.com/jsmith/example", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:jsmith/example.git", projectEvent_git_http_url = "http://example.com/jsmith/example.git", projectEvent_namespace = "Jsmith", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "jsmith/example", projectEvent_default_branch = "master", projectEvent_homepage = Just "http://example.com/jsmith/example", projectEvent_url = "git@example.com:jsmith/example.git", projectEvent_ssh_url = "git@example.com:jsmith/example.git", projectEvent_http_url = "http://example.com/jsmith/example.git"},-      tagPush_repository = RepositoryEvent {repositoryEvent_name = "Example", repositoryEvent_url = "ssh://git@example.com/jsmith/example.git", repositoryEvent_description = Just "", repositoryEvent_homepage = Just "http://example.com/jsmith/example", repositoryEvent_git_http_url = Just "http://example.com/jsmith/example.git", repositoryEvent_git_ssh_url = Just "git@example.com:jsmith/example.git", repositoryEvent_visibility_level = Just Private},-      tagPush_commits = [],-      tagPush_total_commits_count = 0-    }+  TagPush {tagPush_event_name = "tag_push", tagPush_before = "0000000000000000000000000000000000000000", tagPush_after = "82b3d5ae55f7080f1e6022629cdb57bfae7cccc7", tagPush_ref = "refs/tags/v1.0.0", tagPush_checkout_sha = "5937ac0a7beb003549fc5fd26fc247adbce4a52e", tagPush_user_id = 1, tagPush_user_name = "John Smith", tagPush_user_avatar = "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=8://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80", tagPush_project_id = 1, tagPush_project = ProjectEvent {projectEvent_id = Nothing, projectEvent_name = "Example", projectEvent_description = Just "", projectEvent_web_url = "http://example.com/jsmith/example", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:jsmith/example.git", projectEvent_git_http_url = "http://example.com/jsmith/example.git", projectEvent_namespace = "Jsmith", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "jsmith/example", projectEvent_default_branch = "master", projectEvent_homepage = Just "http://example.com/jsmith/example", projectEvent_url = "git@example.com:jsmith/example.git", projectEvent_ssh_url = "git@example.com:jsmith/example.git", projectEvent_http_url = "http://example.com/jsmith/example.git"}, tagPush_repository = RepositoryEvent {repositoryEvent_name = "Example", repositoryEvent_url = "ssh://git@example.com/jsmith/example.git", repositoryEvent_description = Just "", repositoryEvent_homepage = Just "http://example.com/jsmith/example", repositoryEvent_git_http_url = Just "http://example.com/jsmith/example.git", repositoryEvent_git_ssh_url = Just "git@example.com:jsmith/example.git", repositoryEvent_visibility_level = Just Private}, tagPush_commits = [], tagPush_total_commits_count = 0}  repositoryUpdateHaskell :: RepositoryUpdate repositoryUpdateHaskell =-  RepositoryUpdate-    { repositoryUpdate_event_name = "repository_update",-      repositoryUpdate_user_id = 1,-      repositoryUpdate_user_name = "John Smith",-      repositoryUpdate_user_email = "admin@example.com",-      repositoryUpdate_user_avatar = "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=8://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80",-      repositoryUpdate_project_id = 1,-      repositoryUpdate_project = ProjectEvent {projectEvent_name = "Example", projectEvent_description = Just "", projectEvent_web_url = "http://example.com/jsmith/example", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:jsmith/example.git", projectEvent_git_http_url = "http://example.com/jsmith/example.git", projectEvent_namespace = "Jsmith", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "jsmith/example", projectEvent_default_branch = "master", projectEvent_homepage = Just "http://example.com/jsmith/example", projectEvent_url = "git@example.com:jsmith/example.git", projectEvent_ssh_url = "git@example.com:jsmith/example.git", projectEvent_http_url = "http://example.com/jsmith/example.git"},-      repositoryUpdate_changes = [ProjectChanges {projectChanges_before = "8205ea8d81ce0c6b90fbe8280d118cc9fdad6130", projectChanges_after = "4045ea7a3df38697b3730a20fb73c8bed8a3e69e", projectChanges_ref = "refs/heads/master"}],-      repositoryUpdate_refs = ["refs/heads/master"]-    }+  RepositoryUpdate {repositoryUpdate_event_name = "repository_update", repositoryUpdate_user_id = 1, repositoryUpdate_user_name = "John Smith", repositoryUpdate_user_email = "admin@example.com", repositoryUpdate_user_avatar = "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=8://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80", repositoryUpdate_project_id = 1, repositoryUpdate_project = ProjectEvent {projectEvent_id = Nothing, projectEvent_name = "Example", projectEvent_description = Just "", projectEvent_web_url = "http://example.com/jsmith/example", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:jsmith/example.git", projectEvent_git_http_url = "http://example.com/jsmith/example.git", projectEvent_namespace = "Jsmith", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "jsmith/example", projectEvent_default_branch = "master", projectEvent_homepage = Just "http://example.com/jsmith/example", projectEvent_url = "git@example.com:jsmith/example.git", projectEvent_ssh_url = "git@example.com:jsmith/example.git", projectEvent_http_url = "http://example.com/jsmith/example.git"}, repositoryUpdate_changes = [ProjectChanges {projectChanges_before = "8205ea8d81ce0c6b90fbe8280d118cc9fdad6130", projectChanges_after = "4045ea7a3df38697b3730a20fb73c8bed8a3e69e", projectChanges_ref = "refs/heads/master"}], repositoryUpdate_refs = ["refs/heads/master"]}  mergeRequestHaskell :: MergeRequestEvent mergeRequestHaskell =-  MergeRequestEvent {mergeRequest_object_kind = "merge_request", mergeRequest_event_type = "merge_request", mergeRequest_user = UserEvent {userEvent_name = "Administrator", userEvent_username = "root", userEvent_avatar_url = "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40&d=identicon"}, mergeRequest_project = ProjectEvent {projectEvent_name = "Gitlab Test", projectEvent_description = Just "Aut reprehenderit ut est.", projectEvent_web_url = "http://example.com/gitlabhq/gitlab-test", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:gitlabhq/gitlab-test.git", projectEvent_git_http_url = "http://example.com/gitlabhq/gitlab-test.git", projectEvent_namespace = "GitlabHQ", projectEvent_visibility_level = Public, projectEvent_path_with_namespace = "gitlabhq/gitlab-test", projectEvent_default_branch = "master", projectEvent_homepage = Just "http://example.com/gitlabhq/gitlab-test", projectEvent_url = "http://example.com/gitlabhq/gitlab-test.git", projectEvent_ssh_url = "git@example.com:gitlabhq/gitlab-test.git", projectEvent_http_url = "http://example.com/gitlabhq/gitlab-test.git"}, mergeRequest_object_attributes = ObjectAttributes {objectAttributes_id = 99, objectAttributes_target_branch = "master", objectAttributes_source_branch = "ms-viewport", objectAttributes_source_project_id = 14, objectAttributes_author_id = Just 51, objectAttributes_assignee_id = Just 6, objectAttributes_assignee_ids = Nothing, objectAttributes_title = "MS-Viewport", objectAttributes_created_at = "2013-12-03T17:23:34Z", objectAttributes_updated_at = "2013-12-03T17:23:34Z", objectAttributes_milestone_id = Nothing, objectAttributes_state = "opened", objectAttributes_state_id = Nothing, objectAttributes_merge_status = "unchecked", objectAttributes_target_project_id = 14, objectAttributes_iid = 1, objectAttributes_description = "", objectAttributes_updated_by_id = Nothing, objectAttributes_merge_error = Nothing, objectAttributes_merge_params = Nothing, objectAttributes_merge_when_pipeline_succeeds = Nothing, objectAttributes_merge_user_id = Nothing, objectAttributes_merge_commit_sha = Nothing, objectAttributes_deleted_at = Nothing, objectAttributes_in_progress_merge_commit_sha = Nothing, objectAttributes_lock_version = Nothing, objectAttributes_time_estimate = Nothing, objectAttributes_last_edited_at = Nothing, objectAttributes_last_edited_by_id = Nothing, objectAttributes_head_pipeline_id = Nothing, objectAttributes_ref_fetched = Nothing, objectAttributes_merge_jid = Nothing, objectAttributes_source = ProjectEvent {projectEvent_name = "Awesome Project", projectEvent_description = Just "Aut reprehenderit ut est.", projectEvent_web_url = "http://example.com/awesome_space/awesome_project", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:awesome_space/awesome_project.git", projectEvent_git_http_url = "http://example.com/awesome_space/awesome_project.git", projectEvent_namespace = "Awesome Space", projectEvent_visibility_level = Public, projectEvent_path_with_namespace = "awesome_space/awesome_project", projectEvent_default_branch = "master", projectEvent_homepage = Just "http://example.com/awesome_space/awesome_project", projectEvent_url = "http://example.com/awesome_space/awesome_project.git", projectEvent_ssh_url = "git@example.com:awesome_space/awesome_project.git", projectEvent_http_url = "http://example.com/awesome_space/awesome_project.git"}, objectAttributes_target = ProjectEvent {projectEvent_name = "Awesome Project", projectEvent_description = Just "Aut reprehenderit ut est.", projectEvent_web_url = "http://example.com/awesome_space/awesome_project", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:awesome_space/awesome_project.git", projectEvent_git_http_url = "http://example.com/awesome_space/awesome_project.git", projectEvent_namespace = "Awesome Space", projectEvent_visibility_level = Public, projectEvent_path_with_namespace = "awesome_space/awesome_project", projectEvent_default_branch = "master", projectEvent_homepage = Just "http://example.com/awesome_space/awesome_project", projectEvent_url = "http://example.com/awesome_space/awesome_project.git", projectEvent_ssh_url = "git@example.com:awesome_space/awesome_project.git", projectEvent_http_url = "http://example.com/awesome_space/awesome_project.git"}, objectAttributes_last_commit = CommitEvent {commitEvent_id = "da1560886d4f094c3e6c9ef40349f7d38b5d27d7", commitEvent_message = "fixed readme", commitEvent_timestamp = "2012-01-03T23:36:29+02:00", commitEvent_url = "http://example.com/awesome_space/awesome_project/commits/da1560886d4f094c3e6c9ef40349f7d38b5d27d7", commitEvent_author = CommitAuthorEvent {commitAuthorEvent_name = "GitLab dev user", commitAuthorEvent_email = "gitlabdev@dv6700.(none)"}}, objectAttributes_work_in_progress = False, objectAttributes_total_time_spent = Nothing, objectAttributes_human_total_time_spent = Nothing, objectAttributes_human_time_estimate = Nothing, objectAttributes_action = Just "open"}, mergeRequest_labels = Just [Label {label_id = Just 206, label_title = Just "API", label_color = Just "#ffffff", label_project_id = Just 14, label_created_at = Just "2013-12-03T17:15:43Z", label_updated_at = Just "2013-12-03T17:15:43Z", label_template = Just False, label_description = Just "API related issues", label_type = Just "ProjectLabel", label_group_id = Just 41}], mergeRequest_changes = MergeRequestChanges {mergeRequestChanges_author_id = Nothing, mergeRequestChanges_created_at = Nothing, mergeRequestChanges_description = Nothing, mergeRequestChanges_id = Nothing, mergeRequestChanges_iid = Nothing, mergeRequestChanges_source_branch = Nothing, mergeRequestChanges_source_project_id = Nothing, mergeRequestChanges_target_branch = Nothing, mergeRequestChanges_target_project_id = Nothing, mergeRequestChanges_title = Nothing, mergeRequestChanges_updated_at = Just (MergeRequestChange {mergeRequestChange_previous = Just "2017-09-15 16:50:55 UTC", mergeRequestChange_current = Just "2017-09-15 16:52:00 UTC"})}, mergeRequest_repository = RepositoryEvent {repositoryEvent_name = "Gitlab Test", repositoryEvent_url = "http://example.com/gitlabhq/gitlab-test.git", repositoryEvent_description = Just "Aut reprehenderit ut est.", repositoryEvent_homepage = Just "http://example.com/gitlabhq/gitlab-test", repositoryEvent_git_http_url = Nothing, repositoryEvent_git_ssh_url = Nothing, repositoryEvent_visibility_level = Nothing}}+  MergeRequestEvent {mergeRequest_object_kind = "merge_request", mergeRequest_event_type = "merge_request", mergeRequest_user = UserEvent {userEvent_id = Nothing, userEvent_name = "Administrator", userEvent_username = "root", userEvent_avatar_url = "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40&d=identicon", userEvent_email = Nothing}, mergeRequest_project = ProjectEvent {projectEvent_id = Just 1, projectEvent_name = "Gitlab Test", projectEvent_description = Just "Aut reprehenderit ut est.", projectEvent_web_url = "http://example.com/gitlabhq/gitlab-test", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:gitlabhq/gitlab-test.git", projectEvent_git_http_url = "http://example.com/gitlabhq/gitlab-test.git", projectEvent_namespace = "GitlabHQ", projectEvent_visibility_level = Public, projectEvent_path_with_namespace = "gitlabhq/gitlab-test", projectEvent_default_branch = "master", projectEvent_homepage = Just "http://example.com/gitlabhq/gitlab-test", projectEvent_url = "http://example.com/gitlabhq/gitlab-test.git", projectEvent_ssh_url = "git@example.com:gitlabhq/gitlab-test.git", projectEvent_http_url = "http://example.com/gitlabhq/gitlab-test.git"}, mergeRequest_object_attributes = MergeRequestObjectAttributes {objectAttributes_id = 99, objectAttributes_target_branch = "master", objectAttributes_source_branch = "ms-viewport", objectAttributes_source_project_id = 14, objectAttributes_author_id = Just 51, objectAttributes_assignee_id = Just 6, objectAttributes_assignee_ids = Nothing, objectAttributes_title = "MS-Viewport", objectAttributes_created_at = "2013-12-03T17:23:34Z", objectAttributes_updated_at = "2013-12-03T17:23:34Z", objectAttributes_milestone_id = Nothing, objectAttributes_state = "opened", objectAttributes_state_id = Nothing, objectAttributes_merge_status = "unchecked", objectAttributes_target_project_id = 14, objectAttributes_iid = 1, objectAttributes_description = "", objectAttributes_updated_by_id = Nothing, objectAttributes_merge_error = Nothing, objectAttributes_merge_params = Nothing, objectAttributes_merge_when_pipeline_succeeds = Nothing, objectAttributes_merge_user_id = Nothing, objectAttributes_merge_commit_sha = Nothing, objectAttributes_deleted_at = Nothing, objectAttributes_in_progress_merge_commit_sha = Nothing, objectAttributes_lock_version = Nothing, objectAttributes_time_estimate = Nothing, objectAttributes_last_edited_at = Nothing, objectAttributes_last_edited_by_id = Nothing, objectAttributes_head_pipeline_id = Nothing, objectAttributes_ref_fetched = Nothing, objectAttributes_merge_jid = Nothing, objectAttributes_source = ProjectEvent {projectEvent_id = Nothing, projectEvent_name = "Awesome Project", projectEvent_description = Just "Aut reprehenderit ut est.", projectEvent_web_url = "http://example.com/awesome_space/awesome_project", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:awesome_space/awesome_project.git", projectEvent_git_http_url = "http://example.com/awesome_space/awesome_project.git", projectEvent_namespace = "Awesome Space", projectEvent_visibility_level = Public, projectEvent_path_with_namespace = "awesome_space/awesome_project", projectEvent_default_branch = "master", projectEvent_homepage = Just "http://example.com/awesome_space/awesome_project", projectEvent_url = "http://example.com/awesome_space/awesome_project.git", projectEvent_ssh_url = "git@example.com:awesome_space/awesome_project.git", projectEvent_http_url = "http://example.com/awesome_space/awesome_project.git"}, objectAttributes_target = ProjectEvent {projectEvent_id = Nothing, projectEvent_name = "Awesome Project", projectEvent_description = Just "Aut reprehenderit ut est.", projectEvent_web_url = "http://example.com/awesome_space/awesome_project", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:awesome_space/awesome_project.git", projectEvent_git_http_url = "http://example.com/awesome_space/awesome_project.git", projectEvent_namespace = "Awesome Space", projectEvent_visibility_level = Public, projectEvent_path_with_namespace = "awesome_space/awesome_project", projectEvent_default_branch = "master", projectEvent_homepage = Just "http://example.com/awesome_space/awesome_project", projectEvent_url = "http://example.com/awesome_space/awesome_project.git", projectEvent_ssh_url = "git@example.com:awesome_space/awesome_project.git", projectEvent_http_url = "http://example.com/awesome_space/awesome_project.git"}, objectAttributes_last_commit = CommitEvent {commitEvent_id = "da1560886d4f094c3e6c9ef40349f7d38b5d27d7", commitEvent_message = "fixed readme", commitEvent_timestamp = "2012-01-03T23:36:29+02:00", commitEvent_url = "http://example.com/awesome_space/awesome_project/commits/da1560886d4f094c3e6c9ef40349f7d38b5d27d7", commitEvent_author = CommitAuthorEvent {commitAuthorEvent_name = "GitLab dev user", commitAuthorEvent_email = "gitlabdev@dv6700.(none)"}}, objectAttributes_work_in_progress = False, objectAttributes_total_time_spent = Nothing, objectAttributes_human_total_time_spent = Nothing, objectAttributes_human_time_estimate = Nothing, objectAttributes_action = Just "open"}, mergeRequest_labels = Just [Label {label_id = Just 206, label_title = Just "API", label_color = Just "#ffffff", label_project_id = Just 14, label_created_at = Just "2013-12-03T17:15:43Z", label_updated_at = Just "2013-12-03T17:15:43Z", label_template = Just False, label_description = Just "API related issues", label_type = Just "ProjectLabel", label_group_id = Just 41}], mergeRequest_changes = MergeRequestChanges {mergeRequestChanges_author_id = Nothing, mergeRequestChanges_created_at = Nothing, mergeRequestChanges_description = Nothing, mergeRequestChanges_id = Nothing, mergeRequestChanges_iid = Nothing, mergeRequestChanges_source_branch = Nothing, mergeRequestChanges_source_project_id = Nothing, mergeRequestChanges_target_branch = Nothing, mergeRequestChanges_target_project_id = Nothing, mergeRequestChanges_title = Nothing, mergeRequestChanges_updated_at = Just (MergeRequestChange {mergeRequestChange_previous = Just "2017-09-15 16:50:55 UTC", mergeRequestChange_current = Just "2017-09-15 16:52:00 UTC"})}, mergeRequest_repository = RepositoryEvent {repositoryEvent_name = "Gitlab Test", repositoryEvent_url = "http://example.com/gitlabhq/gitlab-test.git", repositoryEvent_description = Just "Aut reprehenderit ut est.", repositoryEvent_homepage = Just "http://example.com/gitlabhq/gitlab-test", repositoryEvent_git_http_url = Nothing, repositoryEvent_git_ssh_url = Nothing, repositoryEvent_visibility_level = Nothing}}  mergeRequestGitLab_15_5_0_Haskell :: MergeRequestEvent mergeRequestGitLab_15_5_0_Haskell =-  MergeRequestEvent {mergeRequest_object_kind = "merge_request", mergeRequest_event_type = "merge_request", mergeRequest_user = UserEvent {userEvent_name = "Joe Bloggs", userEvent_username = "joe", userEvent_avatar_url = "https://gitlab.example.com/uploads/-/system/user/avatar/5/avatar.png"}, mergeRequest_project = ProjectEvent {projectEvent_name = "test-ci-project", projectEvent_description = Just "", projectEvent_web_url = "https://gitlab.example.com/joe/test-ci-project", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_git_http_url = "https://gitlab.example.com/joe/test-ci-project.git", projectEvent_namespace = "Joe Bloggs", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe/test-ci-project", projectEvent_default_branch = "master", projectEvent_homepage = Just "https://gitlab.example.com/joe/test-ci-project", projectEvent_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_ssh_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_http_url = "https://gitlab.example.com/joe/test-ci-project.git"}, mergeRequest_object_attributes = ObjectAttributes {objectAttributes_id = 3448, objectAttributes_target_branch = "master", objectAttributes_source_branch = "another-branch", objectAttributes_source_project_id = 7926, objectAttributes_author_id = Just 5, objectAttributes_assignee_id = Nothing, objectAttributes_assignee_ids = Just [], objectAttributes_title = "A change", objectAttributes_created_at = "2022-10-24 22:11:46 UTC", objectAttributes_updated_at = "2022-10-24 22:11:46 UTC", objectAttributes_milestone_id = Nothing, objectAttributes_state = "opened", objectAttributes_state_id = Just 1, objectAttributes_merge_status = "preparing", objectAttributes_target_project_id = 7926, objectAttributes_iid = 1, objectAttributes_description = "To test the merge request event.", objectAttributes_updated_by_id = Nothing, objectAttributes_merge_error = Nothing, objectAttributes_merge_params = Just (MergeParams {mergeParams_force_remove_source_branch = Just "1"}), objectAttributes_merge_when_pipeline_succeeds = Just False, objectAttributes_merge_user_id = Nothing, objectAttributes_merge_commit_sha = Nothing, objectAttributes_deleted_at = Nothing, objectAttributes_in_progress_merge_commit_sha = Nothing, objectAttributes_lock_version = Nothing, objectAttributes_time_estimate = Just 0, objectAttributes_last_edited_at = Nothing, objectAttributes_last_edited_by_id = Nothing, objectAttributes_head_pipeline_id = Nothing, objectAttributes_ref_fetched = Nothing, objectAttributes_merge_jid = Nothing, objectAttributes_source = ProjectEvent {projectEvent_name = "test-ci-project", projectEvent_description = Just "", projectEvent_web_url = "https://gitlab.example.com/joe/test-ci-project", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_git_http_url = "https://gitlab.example.com/joe/test-ci-project.git", projectEvent_namespace = "Joe Bloggs", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe/test-ci-project", projectEvent_default_branch = "master", projectEvent_homepage = Just "https://gitlab.example.com/joe/test-ci-project", projectEvent_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_ssh_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_http_url = "https://gitlab.example.com/joe/test-ci-project.git"}, objectAttributes_target = ProjectEvent {projectEvent_name = "test-ci-project", projectEvent_description = Just "", projectEvent_web_url = "https://gitlab.example.com/joe/test-ci-project", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_git_http_url = "https://gitlab.example.com/joe/test-ci-project.git", projectEvent_namespace = "Joe Bloggs", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe/test-ci-project", projectEvent_default_branch = "master", projectEvent_homepage = Just "https://gitlab.example.com/joe/test-ci-project", projectEvent_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_ssh_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_http_url = "https://gitlab.example.com/joe/test-ci-project.git"}, objectAttributes_last_commit = CommitEvent {commitEvent_id = "83c2d70f8ecb1376d1d4f1e52b7a18c560a7b95c", commitEvent_message = "A change\n", commitEvent_timestamp = "2022-10-24T23:10:03+01:00", commitEvent_url = "https://gitlab.example.com/joe/test-ci-project/-/commit/83c2d70f8ecb1376d1d4f1e52b7a18c560a7b95c", commitEvent_author = CommitAuthorEvent {commitAuthorEvent_name = "Joe Bloggs", commitAuthorEvent_email = "robstewart57@gmail.com"}}, objectAttributes_work_in_progress = False, objectAttributes_total_time_spent = Just 0, objectAttributes_human_total_time_spent = Nothing, objectAttributes_human_time_estimate = Nothing, objectAttributes_action = Just "open"}, mergeRequest_labels = Just [], mergeRequest_changes = MergeRequestChanges {mergeRequestChanges_author_id = Nothing, mergeRequestChanges_created_at = Nothing, mergeRequestChanges_description = Nothing, mergeRequestChanges_id = Nothing, mergeRequestChanges_iid = Nothing, mergeRequestChanges_source_branch = Nothing, mergeRequestChanges_source_project_id = Nothing, mergeRequestChanges_target_branch = Nothing, mergeRequestChanges_target_project_id = Nothing, mergeRequestChanges_title = Nothing, mergeRequestChanges_updated_at = Nothing}, mergeRequest_repository = RepositoryEvent {repositoryEvent_name = "test-ci-project", repositoryEvent_url = "git@gitlab.example.com:joe/test-ci-project.git", repositoryEvent_description = Just "", repositoryEvent_homepage = Just "https://gitlab.example.com/joe/test-ci-project", repositoryEvent_git_http_url = Nothing, repositoryEvent_git_ssh_url = Nothing, repositoryEvent_visibility_level = Nothing}}+  MergeRequestEvent {mergeRequest_object_kind = "merge_request", mergeRequest_event_type = "merge_request", mergeRequest_user = UserEvent {userEvent_id = Nothing, userEvent_name = "Joe Bloggs", userEvent_username = "joe", userEvent_avatar_url = "https://gitlab.example.com/uploads/-/system/user/avatar/5/avatar.png", userEvent_email = Nothing}, mergeRequest_project = ProjectEvent {projectEvent_id = Just 7926, projectEvent_name = "test-ci-project", projectEvent_description = Just "", projectEvent_web_url = "https://gitlab.example.com/joe/test-ci-project", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_git_http_url = "https://gitlab.example.com/joe/test-ci-project.git", projectEvent_namespace = "Joe Bloggs", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe/test-ci-project", projectEvent_default_branch = "master", projectEvent_homepage = Just "https://gitlab.example.com/joe/test-ci-project", projectEvent_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_ssh_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_http_url = "https://gitlab.example.com/joe/test-ci-project.git"}, mergeRequest_object_attributes = MergeRequestObjectAttributes {objectAttributes_id = 3448, objectAttributes_target_branch = "master", objectAttributes_source_branch = "another-branch", objectAttributes_source_project_id = 7926, objectAttributes_author_id = Just 5, objectAttributes_assignee_id = Nothing, objectAttributes_assignee_ids = Just [], objectAttributes_title = "A change", objectAttributes_created_at = "2022-10-24 22:11:46 UTC", objectAttributes_updated_at = "2022-10-24 22:11:46 UTC", objectAttributes_milestone_id = Nothing, objectAttributes_state = "opened", objectAttributes_state_id = Just 1, objectAttributes_merge_status = "preparing", objectAttributes_target_project_id = 7926, objectAttributes_iid = 1, objectAttributes_description = "To test the merge request event.", objectAttributes_updated_by_id = Nothing, objectAttributes_merge_error = Nothing, objectAttributes_merge_params = Just (MergeParams {mergeParams_force_remove_source_branch = Just "1"}), objectAttributes_merge_when_pipeline_succeeds = Just False, objectAttributes_merge_user_id = Nothing, objectAttributes_merge_commit_sha = Nothing, objectAttributes_deleted_at = Nothing, objectAttributes_in_progress_merge_commit_sha = Nothing, objectAttributes_lock_version = Nothing, objectAttributes_time_estimate = Just 0, objectAttributes_last_edited_at = Nothing, objectAttributes_last_edited_by_id = Nothing, objectAttributes_head_pipeline_id = Nothing, objectAttributes_ref_fetched = Nothing, objectAttributes_merge_jid = Nothing, objectAttributes_source = ProjectEvent {projectEvent_id = Just 7926, projectEvent_name = "test-ci-project", projectEvent_description = Just "", projectEvent_web_url = "https://gitlab.example.com/joe/test-ci-project", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_git_http_url = "https://gitlab.example.com/joe/test-ci-project.git", projectEvent_namespace = "Joe Bloggs", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe/test-ci-project", projectEvent_default_branch = "master", projectEvent_homepage = Just "https://gitlab.example.com/joe/test-ci-project", projectEvent_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_ssh_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_http_url = "https://gitlab.example.com/joe/test-ci-project.git"}, objectAttributes_target = ProjectEvent {projectEvent_id = Just 7926, projectEvent_name = "test-ci-project", projectEvent_description = Just "", projectEvent_web_url = "https://gitlab.example.com/joe/test-ci-project", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_git_http_url = "https://gitlab.example.com/joe/test-ci-project.git", projectEvent_namespace = "Joe Bloggs", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe/test-ci-project", projectEvent_default_branch = "master", projectEvent_homepage = Just "https://gitlab.example.com/joe/test-ci-project", projectEvent_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_ssh_url = "git@gitlab.example.com:joe/test-ci-project.git", projectEvent_http_url = "https://gitlab.example.com/joe/test-ci-project.git"}, objectAttributes_last_commit = CommitEvent {commitEvent_id = "83c2d70f8ecb1376d1d4f1e52b7a18c560a7b95c", commitEvent_message = "A change\n", commitEvent_timestamp = "2022-10-24T23:10:03+01:00", commitEvent_url = "https://gitlab.example.com/joe/test-ci-project/-/commit/83c2d70f8ecb1376d1d4f1e52b7a18c560a7b95c", commitEvent_author = CommitAuthorEvent {commitAuthorEvent_name = "Joe Bloggs", commitAuthorEvent_email = "robstewart57@gmail.com"}}, objectAttributes_work_in_progress = False, objectAttributes_total_time_spent = Just 0, objectAttributes_human_total_time_spent = Nothing, objectAttributes_human_time_estimate = Nothing, objectAttributes_action = Just "open"}, mergeRequest_labels = Just [], mergeRequest_changes = MergeRequestChanges {mergeRequestChanges_author_id = Nothing, mergeRequestChanges_created_at = Nothing, mergeRequestChanges_description = Nothing, mergeRequestChanges_id = Nothing, mergeRequestChanges_iid = Nothing, mergeRequestChanges_source_branch = Nothing, mergeRequestChanges_source_project_id = Nothing, mergeRequestChanges_target_branch = Nothing, mergeRequestChanges_target_project_id = Nothing, mergeRequestChanges_title = Nothing, mergeRequestChanges_updated_at = Nothing}, mergeRequest_repository = RepositoryEvent {repositoryEvent_name = "test-ci-project", repositoryEvent_url = "git@gitlab.example.com:joe/test-ci-project.git", repositoryEvent_description = Just "", repositoryEvent_homepage = Just "https://gitlab.example.com/joe/test-ci-project", repositoryEvent_git_http_url = Nothing, repositoryEvent_git_ssh_url = Nothing, repositoryEvent_visibility_level = Nothing}}  -- | tests that this fix works: -- https://gitlab.com/robstewart57/gitlab-haskell/-/commit/d1ca1037944616ac940284c5f8e49b5d9bcbf83c mergeRequestGitLab_15_5_0_maybe_descriptions_Haskell :: MergeRequestEvent mergeRequestGitLab_15_5_0_maybe_descriptions_Haskell =-  MergeRequestEvent {mergeRequest_object_kind = "merge_request", mergeRequest_event_type = "merge_request", mergeRequest_user = UserEvent {userEvent_name = "Bloggs, Joe", userEvent_username = "joe123", userEvent_avatar_url = "https://secure.gravatar.com/avatar/df1b70b1fd7d7eaaa5f9a41f5f5093c0?s=80&d=identicon"}, mergeRequest_project = ProjectEvent {projectEvent_name = "proj1", projectEvent_description = Nothing, projectEvent_web_url = "https://gitlab.example.com/grp1/grp2/proj1", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@gitlab.example.com:grp1/grp2/proj1.git", projectEvent_git_http_url = "https://gitlab.example.com/grp1/grp2/proj1.git", projectEvent_namespace = "grp2", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "grp1/grp2/proj1", projectEvent_default_branch = "main", projectEvent_homepage = Just "https://gitlab.example.com/grp1/grp2/proj1", projectEvent_url = "git@gitlab.example.com:grp1/grp2/proj1.git", projectEvent_ssh_url = "git@gitlab.example.com:grp1/grp2/proj1.git", projectEvent_http_url = "https://gitlab.example.com/grp1/grp2/proj1.git"}, mergeRequest_object_attributes = ObjectAttributes {objectAttributes_id = 3461, objectAttributes_target_branch = "main", objectAttributes_source_branch = "main", objectAttributes_source_project_id = 49668, objectAttributes_author_id = Just 2312, objectAttributes_assignee_id = Nothing, objectAttributes_assignee_ids = Just [], objectAttributes_title = "the MR title", objectAttributes_created_at = "2022-10-25 18:51:48 UTC", objectAttributes_updated_at = "2022-10-25 18:51:48 UTC", objectAttributes_milestone_id = Nothing, objectAttributes_state = "opened", objectAttributes_state_id = Just 1, objectAttributes_merge_status = "preparing", objectAttributes_target_project_id = 43593, objectAttributes_iid = 14, objectAttributes_description = "", objectAttributes_updated_by_id = Nothing, objectAttributes_merge_error = Nothing, objectAttributes_merge_params = Just (MergeParams {mergeParams_force_remove_source_branch = Nothing}), objectAttributes_merge_when_pipeline_succeeds = Just False, objectAttributes_merge_user_id = Nothing, objectAttributes_merge_commit_sha = Nothing, objectAttributes_deleted_at = Nothing, objectAttributes_in_progress_merge_commit_sha = Nothing, objectAttributes_lock_version = Nothing, objectAttributes_time_estimate = Just 0, objectAttributes_last_edited_at = Nothing, objectAttributes_last_edited_by_id = Nothing, objectAttributes_head_pipeline_id = Nothing, objectAttributes_ref_fetched = Nothing, objectAttributes_merge_jid = Nothing, objectAttributes_source = ProjectEvent {projectEvent_name = "proj1", projectEvent_description = Nothing, projectEvent_web_url = "https://gitlab.example.com/joe123/proj1", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@gitlab.example.com:joe123/proj1.git", projectEvent_git_http_url = "https://gitlab.example.com/joe123/proj1.git", projectEvent_namespace = "Bloggs, Joe", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe123/proj1", projectEvent_default_branch = "main", projectEvent_homepage = Just "https://gitlab.example.com/joe123/proj1", projectEvent_url = "git@gitlab.example.com:joe123/proj1.git", projectEvent_ssh_url = "git@gitlab.example.com:joe123/proj1.git", projectEvent_http_url = "https://gitlab.example.com/joe123/proj1.git"}, objectAttributes_target = ProjectEvent {projectEvent_name = "proj1", projectEvent_description = Nothing, projectEvent_web_url = "https://gitlab.example.com/grp1/grp2/proj1", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@gitlab.example.com:grp1/grp2/proj1.git", projectEvent_git_http_url = "https://gitlab.example.com/grp1/grp2/proj1.git", projectEvent_namespace = "grp2", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "grp1/grp2/proj1", projectEvent_default_branch = "main", projectEvent_homepage = Just "https://gitlab.example.com/grp1/grp2/proj1", projectEvent_url = "git@gitlab.example.com:grp1/grp2/proj1.git", projectEvent_ssh_url = "git@gitlab.example.com:grp1/grp2/proj1.git", projectEvent_http_url = "https://gitlab.example.com/grp1/grp2/proj1.git"}, objectAttributes_last_commit = CommitEvent {commitEvent_id = "249d94fdc92825a2ca22c4fa74c511ec5f03e086", commitEvent_message = "Updated README\n", commitEvent_timestamp = "2022-10-08T10:37:28+01:00", commitEvent_url = "https://gitlab.example.com/grp1/grp2/proj1/-/commit/249d94fdc92825a2ca22c4fa74c511ec5f03e086", commitEvent_author = CommitAuthorEvent {commitAuthorEvent_name = "Hill, Harry", commitAuthorEvent_email = "harry@gmail.com"}}, objectAttributes_work_in_progress = True, objectAttributes_total_time_spent = Just 0, objectAttributes_human_total_time_spent = Nothing, objectAttributes_human_time_estimate = Nothing, objectAttributes_action = Just "open"}, mergeRequest_labels = Just [], mergeRequest_changes = MergeRequestChanges {mergeRequestChanges_author_id = Nothing, mergeRequestChanges_created_at = Nothing, mergeRequestChanges_description = Nothing, mergeRequestChanges_id = Nothing, mergeRequestChanges_iid = Nothing, mergeRequestChanges_source_branch = Nothing, mergeRequestChanges_source_project_id = Nothing, mergeRequestChanges_target_branch = Nothing, mergeRequestChanges_target_project_id = Nothing, mergeRequestChanges_title = Nothing, mergeRequestChanges_updated_at = Nothing}, mergeRequest_repository = RepositoryEvent {repositoryEvent_name = "proj1", repositoryEvent_url = "git@gitlab.example.com:grp1/grp2/proj1.git", repositoryEvent_description = Nothing, repositoryEvent_homepage = Just "https://gitlab.example.com/grp1/grp2/proj1", repositoryEvent_git_http_url = Nothing, repositoryEvent_git_ssh_url = Nothing, repositoryEvent_visibility_level = Nothing}}+  MergeRequestEvent {mergeRequest_object_kind = "merge_request", mergeRequest_event_type = "merge_request", mergeRequest_user = UserEvent {userEvent_id = Nothing, userEvent_name = "Bloggs, Joe", userEvent_username = "joe123", userEvent_avatar_url = "https://secure.gravatar.com/avatar/df1b70b1fd7d7eaaa5f9a41f5f5093c0?s=80&d=identicon", userEvent_email = Nothing}, mergeRequest_project = ProjectEvent {projectEvent_id = Just 43593, projectEvent_name = "proj1", projectEvent_description = Nothing, projectEvent_web_url = "https://gitlab.example.com/grp1/grp2/proj1", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@gitlab.example.com:grp1/grp2/proj1.git", projectEvent_git_http_url = "https://gitlab.example.com/grp1/grp2/proj1.git", projectEvent_namespace = "grp2", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "grp1/grp2/proj1", projectEvent_default_branch = "main", projectEvent_homepage = Just "https://gitlab.example.com/grp1/grp2/proj1", projectEvent_url = "git@gitlab.example.com:grp1/grp2/proj1.git", projectEvent_ssh_url = "git@gitlab.example.com:grp1/grp2/proj1.git", projectEvent_http_url = "https://gitlab.example.com/grp1/grp2/proj1.git"}, mergeRequest_object_attributes = MergeRequestObjectAttributes {objectAttributes_id = 3461, objectAttributes_target_branch = "main", objectAttributes_source_branch = "main", objectAttributes_source_project_id = 49668, objectAttributes_author_id = Just 2312, objectAttributes_assignee_id = Nothing, objectAttributes_assignee_ids = Just [], objectAttributes_title = "the MR title", objectAttributes_created_at = "2022-10-25 18:51:48 UTC", objectAttributes_updated_at = "2022-10-25 18:51:48 UTC", objectAttributes_milestone_id = Nothing, objectAttributes_state = "opened", objectAttributes_state_id = Just 1, objectAttributes_merge_status = "preparing", objectAttributes_target_project_id = 43593, objectAttributes_iid = 14, objectAttributes_description = "", objectAttributes_updated_by_id = Nothing, objectAttributes_merge_error = Nothing, objectAttributes_merge_params = Just (MergeParams {mergeParams_force_remove_source_branch = Nothing}), objectAttributes_merge_when_pipeline_succeeds = Just False, objectAttributes_merge_user_id = Nothing, objectAttributes_merge_commit_sha = Nothing, objectAttributes_deleted_at = Nothing, objectAttributes_in_progress_merge_commit_sha = Nothing, objectAttributes_lock_version = Nothing, objectAttributes_time_estimate = Just 0, objectAttributes_last_edited_at = Nothing, objectAttributes_last_edited_by_id = Nothing, objectAttributes_head_pipeline_id = Nothing, objectAttributes_ref_fetched = Nothing, objectAttributes_merge_jid = Nothing, objectAttributes_source = ProjectEvent {projectEvent_id = Just 49668, projectEvent_name = "proj1", projectEvent_description = Nothing, projectEvent_web_url = "https://gitlab.example.com/joe123/proj1", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@gitlab.example.com:joe123/proj1.git", projectEvent_git_http_url = "https://gitlab.example.com/joe123/proj1.git", projectEvent_namespace = "Bloggs, Joe", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe123/proj1", projectEvent_default_branch = "main", projectEvent_homepage = Just "https://gitlab.example.com/joe123/proj1", projectEvent_url = "git@gitlab.example.com:joe123/proj1.git", projectEvent_ssh_url = "git@gitlab.example.com:joe123/proj1.git", projectEvent_http_url = "https://gitlab.example.com/joe123/proj1.git"}, objectAttributes_target = ProjectEvent {projectEvent_id = Just 43593, projectEvent_name = "proj1", projectEvent_description = Nothing, projectEvent_web_url = "https://gitlab.example.com/grp1/grp2/proj1", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@gitlab.example.com:grp1/grp2/proj1.git", projectEvent_git_http_url = "https://gitlab.example.com/grp1/grp2/proj1.git", projectEvent_namespace = "grp2", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "grp1/grp2/proj1", projectEvent_default_branch = "main", projectEvent_homepage = Just "https://gitlab.example.com/grp1/grp2/proj1", projectEvent_url = "git@gitlab.example.com:grp1/grp2/proj1.git", projectEvent_ssh_url = "git@gitlab.example.com:grp1/grp2/proj1.git", projectEvent_http_url = "https://gitlab.example.com/grp1/grp2/proj1.git"}, objectAttributes_last_commit = CommitEvent {commitEvent_id = "249d94fdc92825a2ca22c4fa74c511ec5f03e086", commitEvent_message = "Updated README\n", commitEvent_timestamp = "2022-10-08T10:37:28+01:00", commitEvent_url = "https://gitlab.example.com/grp1/grp2/proj1/-/commit/249d94fdc92825a2ca22c4fa74c511ec5f03e086", commitEvent_author = CommitAuthorEvent {commitAuthorEvent_name = "Hill, Harry", commitAuthorEvent_email = "harry@gmail.com"}}, objectAttributes_work_in_progress = True, objectAttributes_total_time_spent = Just 0, objectAttributes_human_total_time_spent = Nothing, objectAttributes_human_time_estimate = Nothing, objectAttributes_action = Just "open"}, mergeRequest_labels = Just [], mergeRequest_changes = MergeRequestChanges {mergeRequestChanges_author_id = Nothing, mergeRequestChanges_created_at = Nothing, mergeRequestChanges_description = Nothing, mergeRequestChanges_id = Nothing, mergeRequestChanges_iid = Nothing, mergeRequestChanges_source_branch = Nothing, mergeRequestChanges_source_project_id = Nothing, mergeRequestChanges_target_branch = Nothing, mergeRequestChanges_target_project_id = Nothing, mergeRequestChanges_title = Nothing, mergeRequestChanges_updated_at = Nothing}, mergeRequest_repository = RepositoryEvent {repositoryEvent_name = "proj1", repositoryEvent_url = "git@gitlab.example.com:grp1/grp2/proj1.git", repositoryEvent_description = Nothing, repositoryEvent_homepage = Just "https://gitlab.example.com/grp1/grp2/proj1", repositoryEvent_git_http_url = Nothing, repositoryEvent_git_ssh_url = Nothing, repositoryEvent_visibility_level = Nothing}}++buildHaskell :: BuildEvent+buildHaskell =+  BuildEvent {build_event_object_kind = "build", build_event_ref = "master", build_event_tag = False, build_event_before_sha = "19d1543c2f5ea888e3c69019bd7e3daff228fcbc", build_event_sha = "12fc8bb3a8b3f52c5bffa020e6d362027c724359", build_event_retries_count = 0, build_event_build_event_id = 47423, build_event_build_event_name = "junit", build_event_build_event_stage = "test", build_event_build_event_status = "created", build_event_created_at = "2024-11-01 20:15:34 UTC", build_event_started_at = Nothing, build_event_finished_at = Nothing, build_event_duration = Nothing, build_event_queued_duration = Nothing, build_event_allow_failure = False, build_event_failure_reason = Just "unknown_failure", build_event_pipeline_id = 32611, build_event_runner = Nothing, build_event_project_id = 25039, build_event_project_name = "Joe / repo-name", build_event_user = User {user_id = 2682, user_username = "joe", user_bio = Nothing, user_two_factor_enabled = Nothing, user_last_sign_in_at = Nothing, user_current_sign_in_at = Nothing, user_last_activity_on = Nothing, user_skype = Nothing, user_twitter = Nothing, user_website_url = Nothing, user_theme_id = Nothing, user_color_scheme_id = Nothing, user_external = Nothing, user_private_profile = Nothing, user_projects_limit = Nothing, user_can_create_group = Nothing, user_can_create_project = Nothing, user_public_email = Nothing, user_organization = Nothing, user_job_title = Nothing, user_pronouns = Nothing, user_linkedin = Nothing, user_confirmed_at = Nothing, user_identities = Nothing, user_name = "Joe", user_email = Just "[REDACTED]", user_followers = Nothing, user_bot = Nothing, user_following = Nothing, user_state = Nothing, user_avatar_url = Just "https://secure.gravatar.com/avatar/abcde", user_web_url = Nothing, user_location = Nothing, user_extern_uid = Nothing, user_group_id_for_saml = Nothing, user_discussion_locked = Nothing, user_created_at = Nothing, user_note = Nothing, user_password = Nothing, user_force_random_password = Nothing, user_providor = Nothing, user_reset_password = Nothing, user_skip_confirmation = Nothing, user_view_diffs_file_by_file = Nothing}, build_event_commit = BuildCommit {build_commit_id = 32611, build_commit_name = Nothing, build_commit_sha = "12fc8bb3a8b3f52c5bffa020e6d362027c724359", build_commit_message = "the message", build_commit_author_name = "Joe", build_commit_author_email = "joe@gmail.com", build_commit_author_url = "mailto:joe@gmail.com", build_commit_status = "created", build_commit_duration = Nothing, build_commit_started_at = Nothing, build_commit_finished_at = Nothing}, build_event_repository = Repository {repository_id = Nothing, repository_name = "repo-name", repository_type = Nothing, repository_path = Nothing, repository_mode = Nothing}, build_event_project = BuildProject {build_project_project_id = 25039, build_project_project_name = "repo-name", build_project_description = Nothing, build_project_web_url = "https://example.com/joe/repo-name", build_project_avatar_url = Nothing, build_project_git_ssh_url = "git@example.com:joe/repo-name.git", build_project_git_http_url = "https://example.com/joe/repo-name.git", build_project_namespace = "Joe", build_project_visibility_level = 0, build_project_path_with_namespace = "joe/repo-name", build_project_default_branch = "master", build_project_ci_config_path = Nothing}, build_event_environment = Nothing}++build2Haskell :: BuildEvent+build2Haskell =+  BuildEvent {build_event_object_kind = "build", build_event_ref = "master", build_event_tag = False, build_event_before_sha = "edcba", build_event_sha = "abcde", build_event_retries_count = 0, build_event_build_event_id = 47500, build_event_build_event_name = "junit", build_event_build_event_stage = "test", build_event_build_event_status = "failed", build_event_created_at = "2024-11-02 18:29:00 UTC", build_event_started_at = Just "2024-11-02 18:29:01 UTC", build_event_finished_at = Just "2024-11-02 18:29:06 UTC", build_event_duration = Just 4.543246, build_event_queued_duration = Just 1.08065, build_event_allow_failure = False, build_event_failure_reason = Just "script_failure", build_event_pipeline_id = 32685, build_event_runner = Just (Runner {runner_id = 17, runner_description = "", runner_runner_type = "instance_type", runner_active = True, runner_is_shared = True, runner_tags = []}), build_event_project_id = 25078, build_event_project_name = "joe/proj-name", build_event_user = User {user_id = 742, user_username = "jg2078", user_bio = Nothing, user_two_factor_enabled = Nothing, user_last_sign_in_at = Nothing, user_current_sign_in_at = Nothing, user_last_activity_on = Nothing, user_skype = Nothing, user_twitter = Nothing, user_website_url = Nothing, user_theme_id = Nothing, user_color_scheme_id = Nothing, user_external = Nothing, user_private_profile = Nothing, user_projects_limit = Nothing, user_can_create_group = Nothing, user_can_create_project = Nothing, user_public_email = Nothing, user_organization = Nothing, user_job_title = Nothing, user_pronouns = Nothing, user_linkedin = Nothing, user_confirmed_at = Nothing, user_identities = Nothing, user_name = "Goddard, Jamie", user_email = Just "[REDACTED]", user_followers = Nothing, user_bot = Nothing, user_following = Nothing, user_state = Nothing, user_avatar_url = Just "https://secure.gravatar.com/avatar/abc", user_web_url = Nothing, user_location = Nothing, user_extern_uid = Nothing, user_group_id_for_saml = Nothing, user_discussion_locked = Nothing, user_created_at = Nothing, user_note = Nothing, user_password = Nothing, user_force_random_password = Nothing, user_providor = Nothing, user_reset_password = Nothing, user_skip_confirmation = Nothing, user_view_diffs_file_by_file = Nothing}, build_event_commit = BuildCommit {build_commit_id = 32685, build_commit_name = Nothing, build_commit_sha = "abcde", build_commit_message = "message name", build_commit_author_name = "joe", build_commit_author_email = "joe@gmail.com", build_commit_author_url = "mailto:joe@gmail.com", build_commit_status = "failed", build_commit_duration = Just 4, build_commit_started_at = Just "2024-11-02 18:29:01 UTC", build_commit_finished_at = Just "2024-11-02 18:29:06 UTC"}, build_event_repository = Repository {repository_id = Nothing, repository_name = "proj-name", repository_type = Nothing, repository_path = Nothing, repository_mode = Nothing}, build_event_project = BuildProject {build_project_project_id = 25078, build_project_project_name = "proj-name", build_project_description = Nothing, build_project_web_url = "https://example.com/joe/proj-name", build_project_avatar_url = Nothing, build_project_git_ssh_url = "git@example.com:joe/proj-name.git", build_project_git_http_url = "https://example.com/joe/proj-name.git", build_project_namespace = "Joe", build_project_visibility_level = 0, build_project_path_with_namespace = "joe/proj-name", build_project_default_branch = "master", build_project_ci_config_path = Nothing}, build_event_environment = Nothing}++pipelineHaskell :: PipelineEvent+pipelineHaskell =+  PipelineEvent {pipeline_event_object_kind = "pipeline", pipeline_event_object_attributes = PipelineObjectAttributes {pipeline_object_attributes_id = 32617, pipeline_object_attributes_iid = 4, pipeline_object_attributes_name = Nothing, pipeline_object_attributes_ref = "master", pipeline_object_attributes_tag = False, pipeline_object_attributes_sha = "abcde", pipeline_object_attributes_before_sha = "edcba", pipeline_object_attributes_source = "push", pipeline_object_attributes_status = "failed", pipeline_object_attributes_detailed_status = "failed", pipeline_object_attributes_stages = ["test"], pipeline_object_attributes_created_at = "2024-11-01 21:58:31 UTC", pipeline_object_attributes_finished_at = Just "2024-11-01 21:58:35 UTC", pipeline_object_attributes_duration = Just 3.0, pipeline_object_attributes_queued_duration = Nothing, pipeline_object_attributes_variables = [], pipeline_object_attributes_url = "https://example.com/joe/proj-name/-/pipelines/32617"}, pipeline_event_merge_request = Nothing, pipeline_event_user = User {user_id = 899, user_username = "joe", user_bio = Nothing, user_two_factor_enabled = Nothing, user_last_sign_in_at = Nothing, user_current_sign_in_at = Nothing, user_last_activity_on = Nothing, user_skype = Nothing, user_twitter = Nothing, user_website_url = Nothing, user_theme_id = Nothing, user_color_scheme_id = Nothing, user_external = Nothing, user_private_profile = Nothing, user_projects_limit = Nothing, user_can_create_group = Nothing, user_can_create_project = Nothing, user_public_email = Nothing, user_organization = Nothing, user_job_title = Nothing, user_pronouns = Nothing, user_linkedin = Nothing, user_confirmed_at = Nothing, user_identities = Nothing, user_name = "Joe", user_email = Just "[REDACTED]", user_followers = Nothing, user_bot = Nothing, user_following = Nothing, user_state = Nothing, user_avatar_url = Just "https://secure.gravatar.com/avatar/abc", user_web_url = Nothing, user_location = Nothing, user_extern_uid = Nothing, user_group_id_for_saml = Nothing, user_discussion_locked = Nothing, user_created_at = Nothing, user_note = Nothing, user_password = Nothing, user_force_random_password = Nothing, user_providor = Nothing, user_reset_password = Nothing, user_skip_confirmation = Nothing, user_view_diffs_file_by_file = Nothing}, pipeline_event_project = BuildProject {build_project_project_id = 24472, build_project_project_name = "proj-name", build_project_description = Nothing, build_project_web_url = "https://example.com/joe/proj-name", build_project_avatar_url = Nothing, build_project_git_ssh_url = "git@example.com:joe/proj-name.git", build_project_git_http_url = "https://example.com/joe/proj-name.git", build_project_namespace = "Joe", build_project_visibility_level = 0, build_project_path_with_namespace = "joe/proj-name", build_project_default_branch = "master", build_project_ci_config_path = Nothing}, pipeline_event_commit = CommitEvent {commitEvent_id = "abcde", commitEvent_message = "the commit message", commitEvent_timestamp = "2024-11-01T21:58:31+00:00", commitEvent_url = "https://example.com/joe/proj-name/-/commit/abcde", commitEvent_author = CommitAuthorEvent {commitAuthorEvent_name = "Joe", commitAuthorEvent_email = "12345+Joe@users.noreply.github.com"}}, pipeline_event_builds = [PipelineBuild {pipeline_build_id = 47429, pipeline_build_stage = "test", pipeline_build_name = "junit", pipeline_build_status = "failed", pipeline_build_created_at = "2024-11-01 21:58:31 UTC", pipeline_build_started_at = Just "2024-11-01 21:58:31 UTC", pipeline_build_finished_at = Just "2024-11-01 21:58:35 UTC", pipeline_build_duration = Just 3.889573, pipeline_build_queued_duration = 0.19131, pipeline_build_failure_reason = Just "script_failure", pipeline_build_when = "on_success", pipeline_build_manual = False, pipeline_build_allow_failure = False, pipeline_build_user = UserEvent {userEvent_id = Nothing, userEvent_name = "Joe", userEvent_username = "joe", userEvent_avatar_url = "https://secure.gravatar.com/avatar/abc", userEvent_email = Nothing}, pipeline_build_runner = Just (Runner {runner_id = 15, runner_description = "", runner_runner_type = "instance_type", runner_active = True, runner_is_shared = True, runner_tags = []}), pipeline_build_artifacts_file = ArtifactsFile {artifacts_file_filename = Nothing, artifacts_file_size = Nothing}, pipeline_build_environment = Nothing}]}++pipeline2Haskell :: PipelineEvent+pipeline2Haskell =+  PipelineEvent {pipeline_event_object_kind = "pipeline", pipeline_event_object_attributes = PipelineObjectAttributes {pipeline_object_attributes_id = 32686, pipeline_object_attributes_iid = 2, pipeline_object_attributes_name = Nothing, pipeline_object_attributes_ref = "master", pipeline_object_attributes_tag = False, pipeline_object_attributes_sha = "abcde", pipeline_object_attributes_before_sha = "edcba", pipeline_object_attributes_source = "push", pipeline_object_attributes_status = "failed", pipeline_object_attributes_detailed_status = "failed", pipeline_object_attributes_stages = ["test"], pipeline_object_attributes_created_at = "2024-11-02 18:32:17 UTC", pipeline_object_attributes_finished_at = Just "2024-11-02 18:32:23 UTC", pipeline_object_attributes_duration = Just 4.0, pipeline_object_attributes_queued_duration = Just 1.0, pipeline_object_attributes_variables = [], pipeline_object_attributes_url = "https://example.com/joe/proj-name/-/pipelines/32686"}, pipeline_event_merge_request = Nothing, pipeline_event_user = User {user_id = 742, user_username = "joe", user_bio = Nothing, user_two_factor_enabled = Nothing, user_last_sign_in_at = Nothing, user_current_sign_in_at = Nothing, user_last_activity_on = Nothing, user_skype = Nothing, user_twitter = Nothing, user_website_url = Nothing, user_theme_id = Nothing, user_color_scheme_id = Nothing, user_external = Nothing, user_private_profile = Nothing, user_projects_limit = Nothing, user_can_create_group = Nothing, user_can_create_project = Nothing, user_public_email = Nothing, user_organization = Nothing, user_job_title = Nothing, user_pronouns = Nothing, user_linkedin = Nothing, user_confirmed_at = Nothing, user_identities = Nothing, user_name = "Joe", user_email = Just "[REDACTED]", user_followers = Nothing, user_bot = Nothing, user_following = Nothing, user_state = Nothing, user_avatar_url = Just "https://secure.gravatar.com/avatar/abc", user_web_url = Nothing, user_location = Nothing, user_extern_uid = Nothing, user_group_id_for_saml = Nothing, user_discussion_locked = Nothing, user_created_at = Nothing, user_note = Nothing, user_password = Nothing, user_force_random_password = Nothing, user_providor = Nothing, user_reset_password = Nothing, user_skip_confirmation = Nothing, user_view_diffs_file_by_file = Nothing}, pipeline_event_project = BuildProject {build_project_project_id = 25078, build_project_project_name = "proj-name", build_project_description = Nothing, build_project_web_url = "https://example.com/joe/proj-name", build_project_avatar_url = Nothing, build_project_git_ssh_url = "git@example.com:joe/proj-name.git", build_project_git_http_url = "https://example.com/joe/proj-name.git", build_project_namespace = "Joe", build_project_visibility_level = 0, build_project_path_with_namespace = "joe/proj-name", build_project_default_branch = "master", build_project_ci_config_path = Nothing}, pipeline_event_commit = CommitEvent {commitEvent_id = "abcde", commitEvent_message = "the commit message", commitEvent_timestamp = "2024-11-02T18:32:16+00:00", commitEvent_url = "https://example.com/joe/proj-name/-/commit/abcde", commitEvent_author = CommitAuthorEvent {commitAuthorEvent_name = "joe", commitAuthorEvent_email = "joe@gmail.com"}}, pipeline_event_builds = [PipelineBuild {pipeline_build_id = 47501, pipeline_build_stage = "test", pipeline_build_name = "junit", pipeline_build_status = "failed", pipeline_build_created_at = "2024-11-02 18:32:18 UTC", pipeline_build_started_at = Just "2024-11-02 18:32:18 UTC", pipeline_build_finished_at = Just "2024-11-02 18:32:23 UTC", pipeline_build_duration = Just 4.428372, pipeline_build_queued_duration = 0.561693, pipeline_build_failure_reason = Just "script_failure", pipeline_build_when = "on_success", pipeline_build_manual = False, pipeline_build_allow_failure = False, pipeline_build_user = UserEvent {userEvent_id = Nothing, userEvent_name = "Joe", userEvent_username = "joe", userEvent_avatar_url = "https://secure.gravatar.com/avatar/abc", userEvent_email = Nothing}, pipeline_build_runner = Just (Runner {runner_id = 15, runner_description = "", runner_runner_type = "instance_type", runner_active = True, runner_is_shared = True, runner_tags = []}), pipeline_build_artifacts_file = ArtifactsFile {artifacts_file_filename = Nothing, artifacts_file_size = Nothing}, pipeline_build_environment = Nothing}]}++pipeline3Haskell :: PipelineEvent+pipeline3Haskell =+  PipelineEvent {pipeline_event_object_kind = "pipeline", pipeline_event_object_attributes = PipelineObjectAttributes {pipeline_object_attributes_id = 32701, pipeline_object_attributes_iid = 5, pipeline_object_attributes_name = Nothing, pipeline_object_attributes_ref = "master", pipeline_object_attributes_tag = False, pipeline_object_attributes_sha = "abcde", pipeline_object_attributes_before_sha = "edcba", pipeline_object_attributes_source = "push", pipeline_object_attributes_status = "failed", pipeline_object_attributes_detailed_status = "failed", pipeline_object_attributes_stages = ["test"], pipeline_object_attributes_created_at = "2024-11-02 19:31:48 UTC", pipeline_object_attributes_finished_at = Just "2024-11-02 19:31:53 UTC", pipeline_object_attributes_duration = Just 3.0, pipeline_object_attributes_queued_duration = Just 1.0, pipeline_object_attributes_variables = [], pipeline_object_attributes_url = "https://example.com/joe/proj-name/-/pipelines/32701"}, pipeline_event_merge_request = Nothing, pipeline_event_user = User {user_id = 3041, user_username = "joe", user_bio = Nothing, user_two_factor_enabled = Nothing, user_last_sign_in_at = Nothing, user_current_sign_in_at = Nothing, user_last_activity_on = Nothing, user_skype = Nothing, user_twitter = Nothing, user_website_url = Nothing, user_theme_id = Nothing, user_color_scheme_id = Nothing, user_external = Nothing, user_private_profile = Nothing, user_projects_limit = Nothing, user_can_create_group = Nothing, user_can_create_project = Nothing, user_public_email = Nothing, user_organization = Nothing, user_job_title = Nothing, user_pronouns = Nothing, user_linkedin = Nothing, user_confirmed_at = Nothing, user_identities = Nothing, user_name = "Joe", user_email = Just "[REDACTED]", user_followers = Nothing, user_bot = Nothing, user_following = Nothing, user_state = Nothing, user_avatar_url = Just "https://secure.gravatar.com/avatar/abc", user_web_url = Nothing, user_location = Nothing, user_extern_uid = Nothing, user_group_id_for_saml = Nothing, user_discussion_locked = Nothing, user_created_at = Nothing, user_note = Nothing, user_password = Nothing, user_force_random_password = Nothing, user_providor = Nothing, user_reset_password = Nothing, user_skip_confirmation = Nothing, user_view_diffs_file_by_file = Nothing}, pipeline_event_project = BuildProject {build_project_project_id = 25084, build_project_project_name = "proj-name", build_project_description = Just "", build_project_web_url = "https://example.com/joe/proj-name", build_project_avatar_url = Nothing, build_project_git_ssh_url = "git@example.com:joe/proj-name.git", build_project_git_http_url = "https://example.com/joe/proj-name.git", build_project_namespace = "Joe", build_project_visibility_level = 0, build_project_path_with_namespace = "joe/proj-name", build_project_default_branch = "master", build_project_ci_config_path = Nothing}, pipeline_event_commit = CommitEvent {commitEvent_id = "abcde", commitEvent_message = "the commit message", commitEvent_timestamp = "2024-11-02T19:31:48+00:00", commitEvent_url = "https://example.com/joe/proj-name/-/commit/abcde", commitEvent_author = CommitAuthorEvent {commitAuthorEvent_name = "Joe", commitAuthorEvent_email = "joe@gmail.com"}}, pipeline_event_builds = [PipelineBuild {pipeline_build_id = 47516, pipeline_build_stage = "test", pipeline_build_name = "junit", pipeline_build_status = "failed", pipeline_build_created_at = "2024-11-02 19:31:48 UTC", pipeline_build_started_at = Just "2024-11-02 19:31:50 UTC", pipeline_build_finished_at = Just "2024-11-02 19:31:53 UTC", pipeline_build_duration = Just 3.734497, pipeline_build_queued_duration = 0.672819, pipeline_build_failure_reason = Just "script_failure", pipeline_build_when = "on_success", pipeline_build_manual = False, pipeline_build_allow_failure = False, pipeline_build_user = UserEvent {userEvent_id = Nothing, userEvent_name = "Joe", userEvent_username = "joe", userEvent_avatar_url = "https://secure.gravatar.com/avatar/abc", userEvent_email = Nothing}, pipeline_build_runner = Just (Runner {runner_id = 14, runner_description = "", runner_runner_type = "instance_type", runner_active = True, runner_is_shared = True, runner_tags = []}), pipeline_build_artifacts_file = ArtifactsFile {artifacts_file_filename = Nothing, artifacts_file_size = Nothing}, pipeline_build_environment = Nothing}]}++pipeline4Haskell :: PipelineEvent+pipeline4Haskell =+  PipelineEvent {pipeline_event_object_kind = "pipeline", pipeline_event_object_attributes = PipelineObjectAttributes {pipeline_object_attributes_id = 36096, pipeline_object_attributes_iid = 1, pipeline_object_attributes_name = Nothing, pipeline_object_attributes_ref = "master", pipeline_object_attributes_tag = False, pipeline_object_attributes_sha = "abcde", pipeline_object_attributes_before_sha = "edcba", pipeline_object_attributes_source = "push", pipeline_object_attributes_status = "pending", pipeline_object_attributes_detailed_status = "pending", pipeline_object_attributes_stages = ["test"], pipeline_object_attributes_created_at = "2024-11-08 21:26:15 UTC", pipeline_object_attributes_finished_at = Nothing, pipeline_object_attributes_duration = Nothing, pipeline_object_attributes_queued_duration = Nothing, pipeline_object_attributes_variables = [], pipeline_object_attributes_url = "https://example.com/joe/proj-name/-/pipelines/36096"}, pipeline_event_merge_request = Nothing, pipeline_event_user = User {user_id = 2659, user_username = "joe", user_bio = Nothing, user_two_factor_enabled = Nothing, user_last_sign_in_at = Nothing, user_current_sign_in_at = Nothing, user_last_activity_on = Nothing, user_skype = Nothing, user_twitter = Nothing, user_website_url = Nothing, user_theme_id = Nothing, user_color_scheme_id = Nothing, user_external = Nothing, user_private_profile = Nothing, user_projects_limit = Nothing, user_can_create_group = Nothing, user_can_create_project = Nothing, user_public_email = Nothing, user_organization = Nothing, user_job_title = Nothing, user_pronouns = Nothing, user_linkedin = Nothing, user_confirmed_at = Nothing, user_identities = Nothing, user_name = "Lad, Krishan", user_email = Just "[REDACTED]", user_followers = Nothing, user_bot = Nothing, user_following = Nothing, user_state = Nothing, user_avatar_url = Just "https://example.com/uploads/-/system/user/avatar/2659/avatar.png", user_web_url = Nothing, user_location = Nothing, user_extern_uid = Nothing, user_group_id_for_saml = Nothing, user_discussion_locked = Nothing, user_created_at = Nothing, user_note = Nothing, user_password = Nothing, user_force_random_password = Nothing, user_providor = Nothing, user_reset_password = Nothing, user_skip_confirmation = Nothing, user_view_diffs_file_by_file = Nothing}, pipeline_event_project = BuildProject {build_project_project_id = 25415, build_project_project_name = "F28SG - Lab 7", build_project_description = Nothing, build_project_web_url = "https://example.com/joe/proj-name", build_project_avatar_url = Nothing, build_project_git_ssh_url = "git@example.com:joe/proj-name.git", build_project_git_http_url = "https://example.com/joe/proj-name.git", build_project_namespace = "Joe", build_project_visibility_level = 0, build_project_path_with_namespace = "joe/proj-name", build_project_default_branch = "master", build_project_ci_config_path = Nothing}, pipeline_event_commit = CommitEvent {commitEvent_id = "abcde", commitEvent_message = "commit message", commitEvent_timestamp = "2024-11-08T21:26:13+00:00", commitEvent_url = "https://example.com/joe/proj-name/-/commit/abcde", commitEvent_author = CommitAuthorEvent {commitAuthorEvent_name = "Joe", commitAuthorEvent_email = "joe@gmail.com"}}, pipeline_event_builds = [PipelineBuild {pipeline_build_id = 51146, pipeline_build_stage = "test", pipeline_build_name = "junit", pipeline_build_status = "pending", pipeline_build_created_at = "2024-11-08 21:26:15 UTC", pipeline_build_started_at = Nothing, pipeline_build_finished_at = Nothing, pipeline_build_duration = Nothing, pipeline_build_queued_duration = 0.328087189, pipeline_build_failure_reason = Nothing, pipeline_build_when = "on_success", pipeline_build_manual = False, pipeline_build_allow_failure = False, pipeline_build_user = UserEvent {userEvent_id = Nothing, userEvent_name = "Joe", userEvent_username = "joe", userEvent_avatar_url = "https://example.com/uploads/-/system/user/avatar/2659/avatar.png", userEvent_email = Nothing}, pipeline_build_runner = Nothing, pipeline_build_artifacts_file = ArtifactsFile {artifacts_file_filename = Nothing, artifacts_file_size = Nothing}, pipeline_build_environment = Nothing}]}++pipeline5Haskell :: PipelineEvent+pipeline5Haskell =+  PipelineEvent {pipeline_event_object_kind = "pipeline", pipeline_event_object_attributes = PipelineObjectAttributes {pipeline_object_attributes_id = 38727, pipeline_object_attributes_iid = 53, pipeline_object_attributes_name = Nothing, pipeline_object_attributes_ref = "master", pipeline_object_attributes_tag = False, pipeline_object_attributes_sha = "abcde", pipeline_object_attributes_before_sha = "edcba", pipeline_object_attributes_source = "push", pipeline_object_attributes_status = "success", pipeline_object_attributes_detailed_status = "passed", pipeline_object_attributes_stages = ["deploy"], pipeline_object_attributes_created_at = "2024-11-17 16:17:11 UTC", pipeline_object_attributes_finished_at = Just "2024-11-17 16:17:15 UTC", pipeline_object_attributes_duration = Just 2.0, pipeline_object_attributes_queued_duration = Just 1.0, pipeline_object_attributes_variables = [], pipeline_object_attributes_url = "https://example.com/group-name/proj-name/-/pipelines/38727"}, pipeline_event_merge_request = Nothing, pipeline_event_user = User {user_id = 2638, user_username = "joe", user_bio = Nothing, user_two_factor_enabled = Nothing, user_last_sign_in_at = Nothing, user_current_sign_in_at = Nothing, user_last_activity_on = Nothing, user_skype = Nothing, user_twitter = Nothing, user_website_url = Nothing, user_theme_id = Nothing, user_color_scheme_id = Nothing, user_external = Nothing, user_private_profile = Nothing, user_projects_limit = Nothing, user_can_create_group = Nothing, user_can_create_project = Nothing, user_public_email = Nothing, user_organization = Nothing, user_job_title = Nothing, user_pronouns = Nothing, user_linkedin = Nothing, user_confirmed_at = Nothing, user_identities = Nothing, user_name = "Joe Bloggs", user_email = Just "[REDACTED]", user_followers = Nothing, user_bot = Nothing, user_following = Nothing, user_state = Nothing, user_avatar_url = Just "https://secure.gravatar.com/avatar/abc", user_web_url = Nothing, user_location = Nothing, user_extern_uid = Nothing, user_group_id_for_saml = Nothing, user_discussion_locked = Nothing, user_created_at = Nothing, user_note = Nothing, user_password = Nothing, user_force_random_password = Nothing, user_providor = Nothing, user_reset_password = Nothing, user_skip_confirmation = Nothing, user_view_diffs_file_by_file = Nothing}, pipeline_event_project = BuildProject {build_project_project_id = 20385, build_project_project_name = "Cinema Website", build_project_description = Nothing, build_project_web_url = "https://example.com/group-name/proj-name", build_project_avatar_url = Nothing, build_project_git_ssh_url = "git@example.com:group-name/proj-name.git", build_project_git_http_url = "https://example.com/group-name/proj-name.git", build_project_namespace = "Group name", build_project_visibility_level = 0, build_project_path_with_namespace = "group-name/proj-name", build_project_default_branch = "master", build_project_ci_config_path = Nothing}, pipeline_event_commit = CommitEvent {commitEvent_id = "abcde", commitEvent_message = "the message", commitEvent_timestamp = "2024-11-17T16:17:13+00:00", commitEvent_url = "https://example.com/group-name/proj-name/-/commit/abcde", commitEvent_author = CommitAuthorEvent {commitAuthorEvent_name = "Joe", commitAuthorEvent_email = "joe@gmail.com"}}, pipeline_event_builds = [PipelineBuild {pipeline_build_id = 54510, pipeline_build_stage = "deploy", pipeline_build_name = "pages", pipeline_build_status = "success", pipeline_build_created_at = "2024-11-17 16:17:11 UTC", pipeline_build_started_at = Just "2024-11-17 16:17:12 UTC", pipeline_build_finished_at = Just "2024-11-17 16:17:15 UTC", pipeline_build_duration = Just 2.767007, pipeline_build_queued_duration = 0.868802, pipeline_build_failure_reason = Nothing, pipeline_build_when = "on_success", pipeline_build_manual = False, pipeline_build_allow_failure = False, pipeline_build_user = UserEvent {userEvent_id = Nothing, userEvent_name = "Joe Bloggs", userEvent_username = "joe", userEvent_avatar_url = "https://secure.gravatar.com/avatar/abc", userEvent_email = Nothing}, pipeline_build_runner = Just (Runner {runner_id = 15, runner_description = "", runner_runner_type = "instance_type", runner_active = True, runner_is_shared = True, runner_tags = []}), pipeline_build_artifacts_file = ArtifactsFile {artifacts_file_filename = Just "artifacts.zip", artifacts_file_size = Just 8136559}, pipeline_build_environment = Nothing}]}++issue1Haskell :: IssueEvent+issue1Haskell =+  IssueEvent {issue_event_event_type = "issue", issue_event_user = Just (UserEvent {userEvent_id = Nothing, userEvent_name = "Joe", userEvent_username = "ma2305", userEvent_avatar_url = "https://secure.gravatar.com/avatar/abcde", userEvent_email = Nothing}), issue_event_project = Just (ProjectEvent {projectEvent_id = Just 19102, projectEvent_name = "proj-name", projectEvent_description = Just "", projectEvent_web_url = "https://example.com/joe123/proj-name", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:joe123/proj-name.git", projectEvent_git_http_url = "https://example.com/joe123/proj-name.git", projectEvent_namespace = "Joe", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe123/proj-name", projectEvent_default_branch = "master", projectEvent_homepage = Just "https://example.com/joe123/proj-name", projectEvent_url = "git@example.com:joe123/proj-name.git", projectEvent_ssh_url = "git@example.com:joe123/proj-name.git", projectEvent_http_url = "https://example.com/joe123/proj-name.git"}), issue_event_object_attributes = Just (IssueEventObjectAttributes {issue_event_object_attributes_author_id = 2052, issue_event_object_attributes_closed_at = Just "2024-11-02 19:47:16 UTC", issue_event_object_attributes_confidential = False, issue_event_object_attributes_created_at = "2024-11-02 05:45:09 UTC", issue_event_object_attributes_description = Just "", issue_event_object_attributes_discussion_locked = Nothing, issue_event_object_attributes_due_date = Nothing, issue_event_object_attributes_id = 2183, issue_event_object_attributes_iid = 40, issue_event_object_attributes_last_edited_at = Nothing, issue_event_object_attributes_last_edited_by_id = Nothing, issue_event_object_attributes_milestone_id = Nothing, issue_event_object_attributes_move_to_id = Nothing, issue_event_object_attributes_duplicated_to_id = Nothing, issue_event_object_attributes_project_id = 19102, issue_event_object_attributes_relative_position = Just 20520, issue_event_object_attributes_state_id = 2, issue_event_object_attributes_time_estimate = 0, issue_event_object_attributes_title = "Issue title", issue_event_object_attributes_updated_at = "2024-11-02 19:47:17 UTC", issue_event_object_attributes_updated_by_id = Nothing, issue_event_object_attributes_type = "Issue", issue_event_object_attributes_url = "https://example.com/joe123/proj-name/-/issues/40", issue_event_object_attributes_total_time_spent = 0, issue_event_object_attributes_time_change = 0, issue_event_object_attributes_human_total_time_spent = Nothing, issue_event_object_attributes_human_time_change = Nothing, issue_event_object_attributes_human_time_estimate = Nothing}), issue_event_labels = Just [Label {label_id = Just 385, label_title = Just "Stage 3", label_color = Just "#cd5b45", label_project_id = Just 19102, label_created_at = Just "2024-11-02 05:42:30 UTC", label_updated_at = Just "2024-11-02 05:42:30 UTC", label_template = Just False, label_description = Nothing, label_type = Just "ProjectLabel", label_group_id = Nothing}], issue_event_changes = Just (IssueEventChanges {issue_event_changes_author_id = Nothing, issue_event_changes_created_at = Nothing, issue_event_changes_description = Nothing, issue_event_changes_id = Nothing, issue_event_changes_iid = Nothing, issue_event_changes_project_id = Nothing, issue_event_changes_title = Nothing, issue_event_changes_closed_at = Just (IssueChangesClosedAt {issue_event_closed_at_previous = Nothing, issue_event_closed_at_current = Just "2024-11-02 19:47:16 UTC"}), issue_event_changes_state_id = Just (IssueChangesStateId {issue_event_state_id_previous = Just 1, issue_event_state_id_current = 2}), issue_event_changes_updated_at = Just (IssueChangesUpdatedAt {issue_event_updated_at_previous = Just "2024-11-02 05:45:09 UTC", issue_event_updated_at_current = "2024-11-02 19:47:17 UTC"})}), issue_event_repository = Just (RepositoryEvent {repositoryEvent_name = "proj-name", repositoryEvent_url = "git@example.com:joe123/proj-name.git", repositoryEvent_description = Just "", repositoryEvent_homepage = Just "https://example.com/joe123/proj-name", repositoryEvent_git_http_url = Nothing, repositoryEvent_git_ssh_url = Nothing, repositoryEvent_visibility_level = Nothing}), issue_event_assignees = Just [UserEvent {userEvent_id = Nothing, userEvent_name = "Joe", userEvent_username = "joe123", userEvent_avatar_url = "https://secure.gravatar.com/avatar/abcde", userEvent_email = Nothing}]}++issue2Haskell :: IssueEvent+issue2Haskell =+  IssueEvent {issue_event_event_type = "issue", issue_event_user = Just (UserEvent {userEvent_id = Nothing, userEvent_name = "Joe", userEvent_username = "joe", userEvent_avatar_url = "https://secure.gravatar.com/avatar/abc", userEvent_email = Nothing}), issue_event_project = Just (ProjectEvent {projectEvent_id = Just 20125, projectEvent_name = "proj-name", projectEvent_description = Just "the description", projectEvent_web_url = "https://example.com/joe/proj-name", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:joe/proj-name.git", projectEvent_git_http_url = "https://example.com/joe/proj-name.git", projectEvent_namespace = "Joe", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe/proj-name", projectEvent_default_branch = "master", projectEvent_homepage = Just "https://example.com/joe/proj-name", projectEvent_url = "git@example.com:joe/proj-name.git", projectEvent_ssh_url = "git@example.com:joe/proj-name.git", projectEvent_http_url = "https://example.com/joe/proj-name.git"}), issue_event_object_attributes = Just (IssueEventObjectAttributes {issue_event_object_attributes_author_id = 2617, issue_event_object_attributes_closed_at = Nothing, issue_event_object_attributes_confidential = False, issue_event_object_attributes_created_at = "2024-11-09 00:44:06 UTC", issue_event_object_attributes_description = Just "issue description", issue_event_object_attributes_discussion_locked = Nothing, issue_event_object_attributes_due_date = Nothing, issue_event_object_attributes_id = 2286, issue_event_object_attributes_iid = 25, issue_event_object_attributes_last_edited_at = Nothing, issue_event_object_attributes_last_edited_by_id = Nothing, issue_event_object_attributes_milestone_id = Nothing, issue_event_object_attributes_move_to_id = Nothing, issue_event_object_attributes_duplicated_to_id = Nothing, issue_event_object_attributes_project_id = 20125, issue_event_object_attributes_relative_position = Nothing, issue_event_object_attributes_state_id = 1, issue_event_object_attributes_time_estimate = 0, issue_event_object_attributes_title = "Class Diagram - stage 3", issue_event_object_attributes_updated_at = "2024-11-09 00:44:06 UTC", issue_event_object_attributes_updated_by_id = Nothing, issue_event_object_attributes_type = "Issue", issue_event_object_attributes_url = "https://example.com/joe/proj-name/-/issues/25", issue_event_object_attributes_total_time_spent = 0, issue_event_object_attributes_time_change = 0, issue_event_object_attributes_human_total_time_spent = Nothing, issue_event_object_attributes_human_time_change = Nothing, issue_event_object_attributes_human_time_estimate = Nothing}), issue_event_labels = Just [Label {label_id = Just 380, label_title = Just "the label title", label_color = Just "#9400d3", label_project_id = Just 20125, label_created_at = Just "2024-10-30 16:25:49 UTC", label_updated_at = Just "2024-10-30 16:25:49 UTC", label_template = Just False, label_description = Nothing, label_type = Just "ProjectLabel", label_group_id = Nothing}], issue_event_changes = Just (IssueEventChanges {issue_event_changes_author_id = Just (IssueChangesAuthorId {issue_event_author_id_previous = Nothing, issue_event_author_id_current = 2617}), issue_event_changes_created_at = Just (IssueChangesCreatedAt {issue_event_created_at_previous = Nothing, issue_event_created_at_current = "2024-11-09 00:44:06 UTC"}), issue_event_changes_description = Just (IssueChangesDescription {issue_event_description_previous = Nothing, issue_event_description_current = "issue description"}), issue_event_changes_id = Just (IssueChangesId {issue_event_id_previous = Nothing, issue_event_id_current = 2286}), issue_event_changes_iid = Just (IssueChangesIid {issue_event_iid_previous = Nothing, issue_event_iid_current = 25}), issue_event_changes_project_id = Just (IssueChangesProjectId {issue_event_project_id_previous = Nothing, issue_event_project_id_current = 20125}), issue_event_changes_title = Just (IssueChangesTitle {issue_event_title_previous = Nothing, issue_event_title_current = "new issue title"}), issue_event_changes_closed_at = Nothing, issue_event_changes_state_id = Nothing, issue_event_changes_updated_at = Just (IssueChangesUpdatedAt {issue_event_updated_at_previous = Nothing, issue_event_updated_at_current = "2024-11-09 00:44:06 UTC"})}), issue_event_repository = Just (RepositoryEvent {repositoryEvent_name = "proj-name", repositoryEvent_url = "git@example.com:joe/proj-name.git", repositoryEvent_description = Just "the description", repositoryEvent_homepage = Just "https://example.com/joe/proj-name", repositoryEvent_git_http_url = Nothing, repositoryEvent_git_ssh_url = Nothing, repositoryEvent_visibility_level = Nothing}), issue_event_assignees = Just [UserEvent {userEvent_id = Nothing, userEvent_name = "Joe", userEvent_username = "joe", userEvent_avatar_url = "https://secure.gravatar.com/avatar/abc", userEvent_email = Nothing}]}++issue3Haskell :: IssueEvent+issue3Haskell =+  IssueEvent {issue_event_event_type = "issue", issue_event_user = Just (UserEvent {userEvent_id = Nothing, userEvent_name = "Joe", userEvent_username = "hr3000", userEvent_avatar_url = "https://secure.gravatar.com/avatar/abc", userEvent_email = Nothing}), issue_event_project = Just (ProjectEvent {projectEvent_id = Just 20064, projectEvent_name = "proj-name", projectEvent_description = Just "", projectEvent_web_url = "https://example.com/joe/proj-name", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:joe/proj-name.git", projectEvent_git_http_url = "https://example.com/joe/proj-name.git", projectEvent_namespace = "Joe", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe/proj-name", projectEvent_default_branch = "master", projectEvent_homepage = Just "https://example.com/joe/proj-name", projectEvent_url = "git@example.com:joe/proj-name.git", projectEvent_ssh_url = "git@example.com:joe/proj-name.git", projectEvent_http_url = "https://example.com/joe/proj-name.git"}), issue_event_object_attributes = Just (IssueEventObjectAttributes {issue_event_object_attributes_author_id = 2947, issue_event_object_attributes_closed_at = Nothing, issue_event_object_attributes_confidential = False, issue_event_object_attributes_created_at = "2024-11-22 21:57:16 UTC", issue_event_object_attributes_description = Just "The issue description", issue_event_object_attributes_discussion_locked = Nothing, issue_event_object_attributes_due_date = Just "2024-11-27", issue_event_object_attributes_id = 2982, issue_event_object_attributes_iid = 14, issue_event_object_attributes_last_edited_at = Nothing, issue_event_object_attributes_last_edited_by_id = Nothing, issue_event_object_attributes_milestone_id = Just 61, issue_event_object_attributes_move_to_id = Nothing, issue_event_object_attributes_duplicated_to_id = Nothing, issue_event_object_attributes_project_id = 20064, issue_event_object_attributes_relative_position = Just 7182, issue_event_object_attributes_state_id = 1, issue_event_object_attributes_time_estimate = 0, issue_event_object_attributes_title = "The issue description", issue_event_object_attributes_updated_at = "2024-11-22 21:57:31 UTC", issue_event_object_attributes_updated_by_id = Just 2947, issue_event_object_attributes_type = "Issue", issue_event_object_attributes_url = "https://example.com/joe/proj-name/-/issues/14", issue_event_object_attributes_total_time_spent = 0, issue_event_object_attributes_time_change = 0, issue_event_object_attributes_human_total_time_spent = Nothing, issue_event_object_attributes_human_time_change = Nothing, issue_event_object_attributes_human_time_estimate = Nothing}), issue_event_labels = Just [Label {label_id = Just 358, label_title = Just "joeProj-Name", label_color = Just "#6699cc", label_project_id = Just 20064, label_created_at = Just "2024-10-12 07:51:53 UTC", label_updated_at = Just "2024-10-12 07:51:53 UTC", label_template = Just False, label_description = Nothing, label_type = Just "ProjectLabel", label_group_id = Nothing}], issue_event_changes = Just (IssueEventChanges {issue_event_changes_author_id = Nothing, issue_event_changes_created_at = Nothing, issue_event_changes_description = Nothing, issue_event_changes_id = Nothing, issue_event_changes_iid = Nothing, issue_event_changes_project_id = Nothing, issue_event_changes_title = Nothing, issue_event_changes_closed_at = Just (IssueChangesClosedAt {issue_event_closed_at_previous = Just "2024-11-22 21:57:30 UTC", issue_event_closed_at_current = Nothing}), issue_event_changes_state_id = Just (IssueChangesStateId {issue_event_state_id_previous = Just 2, issue_event_state_id_current = 1}), issue_event_changes_updated_at = Just (IssueChangesUpdatedAt {issue_event_updated_at_previous = Just "2024-11-22 21:57:30 UTC", issue_event_updated_at_current = "2024-11-22 21:57:31 UTC"})}), issue_event_repository = Just (RepositoryEvent {repositoryEvent_name = "proj-name", repositoryEvent_url = "git@example.com:joe/proj-name.git", repositoryEvent_description = Just "", repositoryEvent_homepage = Just "https://example.com/joe/proj-name", repositoryEvent_git_http_url = Nothing, repositoryEvent_git_ssh_url = Nothing, repositoryEvent_visibility_level = Nothing}), issue_event_assignees = Just [UserEvent {userEvent_id = Nothing, userEvent_name = "Joe", userEvent_username = "joe", userEvent_avatar_url = "https://secure.gravatar.com/avatar/abc", userEvent_email = Nothing}]}++issue4Haskell :: IssueEvent+issue4Haskell =+  IssueEvent {issue_event_event_type = "issue", issue_event_user = Just (UserEvent {userEvent_id = Nothing, userEvent_name = "Joe", userEvent_username = "kmsr2000", userEvent_avatar_url = "https://secure.gravatar.com/avatar/abc", userEvent_email = Nothing}), issue_event_project = Just (ProjectEvent {projectEvent_id = Just 19127, projectEvent_name = "proj-name", projectEvent_description = Just "", projectEvent_web_url = "https://example.com/joe/proj-name", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:joe/proj-name.git", projectEvent_git_http_url = "https://example.com/joe/proj-name.git", projectEvent_namespace = "Joe", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe/proj-name", projectEvent_default_branch = "master", projectEvent_homepage = Just "https://example.com/joe/proj-name", projectEvent_url = "git@example.com:joe/proj-name.git", projectEvent_ssh_url = "git@example.com:joe/proj-name.git", projectEvent_http_url = "https://example.com/joe/proj-name.git"}), issue_event_object_attributes = Just (IssueEventObjectAttributes {issue_event_object_attributes_author_id = 1853, issue_event_object_attributes_closed_at = Nothing, issue_event_object_attributes_confidential = False, issue_event_object_attributes_created_at = "2024-11-11 14:24:04 UTC", issue_event_object_attributes_description = Nothing, issue_event_object_attributes_discussion_locked = Nothing, issue_event_object_attributes_due_date = Nothing, issue_event_object_attributes_id = 2451, issue_event_object_attributes_iid = 78, issue_event_object_attributes_last_edited_at = Nothing, issue_event_object_attributes_last_edited_by_id = Nothing, issue_event_object_attributes_milestone_id = Just 63, issue_event_object_attributes_move_to_id = Nothing, issue_event_object_attributes_duplicated_to_id = Nothing, issue_event_object_attributes_project_id = 19127, issue_event_object_attributes_relative_position = Just 40014, issue_event_object_attributes_state_id = 1, issue_event_object_attributes_time_estimate = 0, issue_event_object_attributes_title = "The issue description", issue_event_object_attributes_updated_at = "2024-11-23 14:04:30 UTC", issue_event_object_attributes_updated_by_id = Just 1853, issue_event_object_attributes_type = "Task", issue_event_object_attributes_url = "https://example.com/joe/proj-name/-/work_items/78", issue_event_object_attributes_total_time_spent = 0, issue_event_object_attributes_time_change = 0, issue_event_object_attributes_human_total_time_spent = Nothing, issue_event_object_attributes_human_time_change = Nothing, issue_event_object_attributes_human_time_estimate = Nothing}), issue_event_labels = Just [Label {label_id = Just 391, label_title = Just "Stage 6", label_color = Just "#330066", label_project_id = Just 19127, label_created_at = Just "2024-11-11 13:54:59 UTC", label_updated_at = Just "2024-11-14 09:04:36 UTC", label_template = Just False, label_description = Just "", label_type = Just "ProjectLabel", label_group_id = Nothing}, Label {label_id = Just 337, label_title = Just "documentation", label_color = Just "#f0ad4e", label_project_id = Just 19127, label_created_at = Just "2024-10-07 07:46:00 UTC", label_updated_at = Just "2024-10-07 07:46:00 UTC", label_template = Just False, label_description = Nothing, label_type = Just "ProjectLabel", label_group_id = Nothing}], issue_event_changes = Just (IssueEventChanges {issue_event_changes_author_id = Nothing, issue_event_changes_created_at = Nothing, issue_event_changes_description = Nothing, issue_event_changes_id = Nothing, issue_event_changes_iid = Nothing, issue_event_changes_project_id = Nothing, issue_event_changes_title = Nothing, issue_event_changes_closed_at = Just (IssueChangesClosedAt {issue_event_closed_at_previous = Just "2024-11-21 15:11:56 UTC", issue_event_closed_at_current = Nothing}), issue_event_changes_state_id = Just (IssueChangesStateId {issue_event_state_id_previous = Just 2, issue_event_state_id_current = 1}), issue_event_changes_updated_at = Just (IssueChangesUpdatedAt {issue_event_updated_at_previous = Just "2024-11-21 15:11:56 UTC", issue_event_updated_at_current = "2024-11-23 14:04:30 UTC"})}), issue_event_repository = Just (RepositoryEvent {repositoryEvent_name = "proj-name", repositoryEvent_url = "git@example.com:joe/proj-name.git", repositoryEvent_description = Just "", repositoryEvent_homepage = Just "https://example.com/joe/proj-name", repositoryEvent_git_http_url = Nothing, repositoryEvent_git_ssh_url = Nothing, repositoryEvent_visibility_level = Nothing}), issue_event_assignees = Just [UserEvent {userEvent_id = Nothing, userEvent_name = "Joe", userEvent_username = "joe", userEvent_avatar_url = "https://secure.gravatar.com/avatar/abc", userEvent_email = Nothing}]}++note1Haskell :: NoteEvent+note1Haskell =+  NoteEvent {note_event_object_kind = "note", note_event_event_type = "note", note_event_user = User {user_id = 2950, user_username = "joe", user_bio = Nothing, user_two_factor_enabled = Nothing, user_last_sign_in_at = Nothing, user_current_sign_in_at = Nothing, user_last_activity_on = Nothing, user_skype = Nothing, user_twitter = Nothing, user_website_url = Nothing, user_theme_id = Nothing, user_color_scheme_id = Nothing, user_external = Nothing, user_private_profile = Nothing, user_projects_limit = Nothing, user_can_create_group = Nothing, user_can_create_project = Nothing, user_public_email = Nothing, user_organization = Nothing, user_job_title = Nothing, user_pronouns = Nothing, user_linkedin = Nothing, user_confirmed_at = Nothing, user_identities = Nothing, user_name = "Joe", user_email = Just "[REDACTED]", user_followers = Nothing, user_bot = Nothing, user_following = Nothing, user_state = Nothing, user_avatar_url = Just "https://secure.gravatar.com/avatar/abc", user_web_url = Nothing, user_location = Nothing, user_extern_uid = Nothing, user_group_id_for_saml = Nothing, user_discussion_locked = Nothing, user_created_at = Nothing, user_note = Nothing, user_password = Nothing, user_force_random_password = Nothing, user_providor = Nothing, user_reset_password = Nothing, user_skip_confirmation = Nothing, user_view_diffs_file_by_file = Nothing}, note_event_project_id = 21219, note_event_project = ProjectEvent {projectEvent_id = Just 21219, projectEvent_name = "proj-name", projectEvent_description = Just "", projectEvent_web_url = "https://example.com/joe/proj-name", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:joe/proj-name.git", projectEvent_git_http_url = "https://example.com/joe/proj-name.git", projectEvent_namespace = "Joe", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe/proj-name", projectEvent_default_branch = "master", projectEvent_homepage = Just "https://example.com/joe/proj-name", projectEvent_url = "git@example.com:joe/proj-name.git", projectEvent_ssh_url = "git@example.com:joe/proj-name.git", projectEvent_http_url = "https://example.com/joe/proj-name.git"}, note_event_object_attributes = NoteObjectAttributes {note_object_attributes_attachment = Nothing, note_object_attributes_author_id = 2950, note_object_attributes_change_position = Nothing, note_object_attributes_commit_id = Nothing, note_object_attributes_created_at = "2024-11-16 16:16:10 UTC", note_object_attributes_discussion_id = "4f0df21318e0110d71de2114a6c34385bd81b713", note_object_attributes_id = 16684, note_object_attributes_line_code = Nothing, note_object_attributes_note = "the note text", note_object_attributes_noteable_id = Just 2797, note_object_attributes_noteable_type = "Issue", note_object_attributes_original_position = Nothing, note_object_attributes_position = Nothing, note_object_attributes_project_id = 21219, note_object_attributes_resolved_at = Nothing, note_object_attributes_resolved_by_id = Nothing, note_object_attributes_resolved_by_push = Nothing, note_object_attributes_st_diff = Nothing, note_object_attributes_system = False, note_object_attributes_type = Nothing, note_object_attributes_updated_at = Just "2024-11-16 16:16:10 UTC", note_object_attributes_updated_by_id = Nothing, note_object_attributes_description = "the note text", note_object_attributes_url = "https://example.com/joe/proj-name/-/issues/19#note_16684", note_object_attributes_action = "create"}, note_event_repository = RepositoryEvent {repositoryEvent_name = "proj-name", repositoryEvent_url = "git@example.com:joe/proj-name.git", repositoryEvent_description = Just "", repositoryEvent_homepage = Just "https://example.com/joe/proj-name", repositoryEvent_git_http_url = Nothing, repositoryEvent_git_ssh_url = Nothing, repositoryEvent_visibility_level = Nothing}, note_event_issue = Just (IssueEventObjectAttributes {issue_event_object_attributes_author_id = 2950, issue_event_object_attributes_closed_at = Nothing, issue_event_object_attributes_confidential = False, issue_event_object_attributes_created_at = "2024-11-16 12:47:16 UTC", issue_event_object_attributes_description = Just "", issue_event_object_attributes_discussion_locked = Nothing, issue_event_object_attributes_due_date = Nothing, issue_event_object_attributes_id = 2797, issue_event_object_attributes_iid = 19, issue_event_object_attributes_last_edited_at = Nothing, issue_event_object_attributes_last_edited_by_id = Nothing, issue_event_object_attributes_milestone_id = Nothing, issue_event_object_attributes_move_to_id = Nothing, issue_event_object_attributes_duplicated_to_id = Nothing, issue_event_object_attributes_project_id = 21219, issue_event_object_attributes_relative_position = Just 9747, issue_event_object_attributes_state_id = 1, issue_event_object_attributes_time_estimate = 0, issue_event_object_attributes_title = "the issue title", issue_event_object_attributes_updated_at = "2024-11-16 16:16:10 UTC", issue_event_object_attributes_updated_by_id = Just 2950, issue_event_object_attributes_type = "Issue", issue_event_object_attributes_url = "https://example.com/joe/proj-name/-/issues/19", issue_event_object_attributes_total_time_spent = 0, issue_event_object_attributes_time_change = 0, issue_event_object_attributes_human_total_time_spent = Nothing, issue_event_object_attributes_human_time_change = Nothing, issue_event_object_attributes_human_time_estimate = Nothing})}++note2Haskell :: NoteEvent+note2Haskell =+  NoteEvent {note_event_object_kind = "note", note_event_event_type = "note", note_event_user = User {user_id = 2477, user_username = "joe", user_bio = Nothing, user_two_factor_enabled = Nothing, user_last_sign_in_at = Nothing, user_current_sign_in_at = Nothing, user_last_activity_on = Nothing, user_skype = Nothing, user_twitter = Nothing, user_website_url = Nothing, user_theme_id = Nothing, user_color_scheme_id = Nothing, user_external = Nothing, user_private_profile = Nothing, user_projects_limit = Nothing, user_can_create_group = Nothing, user_can_create_project = Nothing, user_public_email = Nothing, user_organization = Nothing, user_job_title = Nothing, user_pronouns = Nothing, user_linkedin = Nothing, user_confirmed_at = Nothing, user_identities = Nothing, user_name = "Joe", user_email = Just "[REDACTED]", user_followers = Nothing, user_bot = Nothing, user_following = Nothing, user_state = Nothing, user_avatar_url = Just "https://example.com/uploads/-/system/user/avatar/2477/avatar.png", user_web_url = Nothing, user_location = Nothing, user_extern_uid = Nothing, user_group_id_for_saml = Nothing, user_discussion_locked = Nothing, user_created_at = Nothing, user_note = Nothing, user_password = Nothing, user_force_random_password = Nothing, user_providor = Nothing, user_reset_password = Nothing, user_skip_confirmation = Nothing, user_view_diffs_file_by_file = Nothing}, note_event_project_id = 19102, note_event_project = ProjectEvent {projectEvent_id = Just 19102, projectEvent_name = "proj-name", projectEvent_description = Just "", projectEvent_web_url = "https://example.com/joe/proj-name", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:joe/proj-name.git", projectEvent_git_http_url = "https://example.com/joe/proj-name.git", projectEvent_namespace = "Joe", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe/proj-name", projectEvent_default_branch = "master", projectEvent_homepage = Just "https://example.com/joe/proj-name", projectEvent_url = "git@example.com:joe/proj-name.git", projectEvent_ssh_url = "git@example.com:joe/proj-name.git", projectEvent_http_url = "https://example.com/joe/proj-name.git"}, note_event_object_attributes = NoteObjectAttributes {note_object_attributes_attachment = Nothing, note_object_attributes_author_id = 2477, note_object_attributes_change_position = Nothing, note_object_attributes_commit_id = Just "8dd4c91c0efac607bf6d164ea7e5fd92e6fbe7c6", note_object_attributes_created_at = "2024-11-20 05:48:59 UTC", note_object_attributes_discussion_id = "163e23673e00ebb477a030944824cf25109bdf3e", note_object_attributes_id = 17030, note_object_attributes_line_code = Nothing, note_object_attributes_note = "The note.", note_object_attributes_noteable_id = Nothing, note_object_attributes_noteable_type = "Commit", note_object_attributes_original_position = Nothing, note_object_attributes_position = Nothing, note_object_attributes_project_id = 19102, note_object_attributes_resolved_at = Nothing, note_object_attributes_resolved_by_id = Nothing, note_object_attributes_resolved_by_push = Nothing, note_object_attributes_st_diff = Nothing, note_object_attributes_system = False, note_object_attributes_type = Nothing, note_object_attributes_updated_at = Just "2024-11-20 05:48:59 UTC", note_object_attributes_updated_by_id = Nothing, note_object_attributes_description = "The note.", note_object_attributes_url = "https://example.com/joe/proj-name/-/commit/abcde#note_17030", note_object_attributes_action = "create"}, note_event_repository = RepositoryEvent {repositoryEvent_name = "proj-name", repositoryEvent_url = "git@example.com:joe/proj-name.git", repositoryEvent_description = Just "", repositoryEvent_homepage = Just "https://example.com/joe/proj-name", repositoryEvent_git_http_url = Nothing, repositoryEvent_git_ssh_url = Nothing, repositoryEvent_visibility_level = Nothing}, note_event_issue = Nothing}++note3Haskell :: NoteEvent+note3Haskell =+  NoteEvent {note_event_object_kind = "note", note_event_event_type = "note", note_event_user = User {user_id = 1853, user_username = "joe", user_bio = Nothing, user_two_factor_enabled = Nothing, user_last_sign_in_at = Nothing, user_current_sign_in_at = Nothing, user_last_activity_on = Nothing, user_skype = Nothing, user_twitter = Nothing, user_website_url = Nothing, user_theme_id = Nothing, user_color_scheme_id = Nothing, user_external = Nothing, user_private_profile = Nothing, user_projects_limit = Nothing, user_can_create_group = Nothing, user_can_create_project = Nothing, user_public_email = Nothing, user_organization = Nothing, user_job_title = Nothing, user_pronouns = Nothing, user_linkedin = Nothing, user_confirmed_at = Nothing, user_identities = Nothing, user_name = "Joe", user_email = Just "[REDACTED]", user_followers = Nothing, user_bot = Nothing, user_following = Nothing, user_state = Nothing, user_avatar_url = Just "https://secure.gravatar.com/avatar/abc", user_web_url = Nothing, user_location = Nothing, user_extern_uid = Nothing, user_group_id_for_saml = Nothing, user_discussion_locked = Nothing, user_created_at = Nothing, user_note = Nothing, user_password = Nothing, user_force_random_password = Nothing, user_providor = Nothing, user_reset_password = Nothing, user_skip_confirmation = Nothing, user_view_diffs_file_by_file = Nothing}, note_event_project_id = 19127, note_event_project = ProjectEvent {projectEvent_id = Just 19127, projectEvent_name = "f21sf-24-the-proj-name,", projectEvent_description = Just "", projectEvent_web_url = "https://example.com/joe/the-proj-name,", projectEvent_avatar_url = Nothing, projectEvent_git_ssh_url = "git@example.com:joe/the-proj-name,.git", projectEvent_git_http_url = "https://example.com/joe/the-proj-name,.git", projectEvent_namespace = "Joe", projectEvent_visibility_level = Private, projectEvent_path_with_namespace = "joe/the-proj-name,", projectEvent_default_branch = "master", projectEvent_homepage = Just "https://example.com/joe/the-proj-name,", projectEvent_url = "git@example.com:joe/the-proj-name,.git", projectEvent_ssh_url = "git@example.com:joe/the-proj-name,.git", projectEvent_http_url = "https://example.com/joe/the-proj-name,.git"}, note_event_object_attributes = NoteObjectAttributes {note_object_attributes_attachment = Nothing, note_object_attributes_author_id = 1853, note_object_attributes_change_position = Nothing, note_object_attributes_commit_id = Nothing, note_object_attributes_created_at = "2024-11-23 15:44:37 UTC", note_object_attributes_discussion_id = "db1ba73e93464583ae259a6ea79f95a7e38c7e3c", note_object_attributes_id = 17524, note_object_attributes_line_code = Nothing, note_object_attributes_note = "The description", note_object_attributes_noteable_id = Just 2449, note_object_attributes_noteable_type = "Issue", note_object_attributes_original_position = Nothing, note_object_attributes_position = Nothing, note_object_attributes_project_id = 19127, note_object_attributes_resolved_at = Nothing, note_object_attributes_resolved_by_id = Nothing, note_object_attributes_resolved_by_push = Nothing, note_object_attributes_st_diff = Nothing, note_object_attributes_system = False, note_object_attributes_type = Nothing, note_object_attributes_updated_at = Just "2024-11-23 15:44:37 UTC", note_object_attributes_updated_by_id = Nothing, note_object_attributes_description = "The description", note_object_attributes_url = "https://example.com/joe/the-proj-name,/-/work_items/76#note_17524", note_object_attributes_action = "create"}, note_event_repository = RepositoryEvent {repositoryEvent_name = "the repo name", repositoryEvent_url = "git@example.com:joe/the-proj-name,.git", repositoryEvent_description = Just "", repositoryEvent_homepage = Just "https://example.com/joe/the-proj-name,", repositoryEvent_git_http_url = Nothing, repositoryEvent_git_ssh_url = Nothing, repositoryEvent_visibility_level = Nothing}, note_event_issue = Just (IssueEventObjectAttributes {issue_event_object_attributes_author_id = 1853, issue_event_object_attributes_closed_at = Nothing, issue_event_object_attributes_confidential = False, issue_event_object_attributes_created_at = "2024-11-11 14:23:52 UTC", issue_event_object_attributes_description = Nothing, issue_event_object_attributes_discussion_locked = Nothing, issue_event_object_attributes_due_date = Nothing, issue_event_object_attributes_id = 2449, issue_event_object_attributes_iid = 76, issue_event_object_attributes_last_edited_at = Nothing, issue_event_object_attributes_last_edited_by_id = Nothing, issue_event_object_attributes_milestone_id = Just 63, issue_event_object_attributes_move_to_id = Nothing, issue_event_object_attributes_duplicated_to_id = Nothing, issue_event_object_attributes_project_id = 19127, issue_event_object_attributes_relative_position = Just 38988, issue_event_object_attributes_state_id = 1, issue_event_object_attributes_time_estimate = 0, issue_event_object_attributes_title = "issue title", issue_event_object_attributes_updated_at = "2024-11-23 15:44:37 UTC", issue_event_object_attributes_updated_by_id = Just 1853, issue_event_object_attributes_type = "Task", issue_event_object_attributes_url = "https://example.com/joe/the-proj-name,/-/work_items/76", issue_event_object_attributes_total_time_spent = 0, issue_event_object_attributes_time_change = 0, issue_event_object_attributes_human_total_time_spent = Nothing, issue_event_object_attributes_human_time_change = Nothing, issue_event_object_attributes_human_time_estimate = Nothing})}++wikiPage1Haskell :: WikiPageEvent+wikiPage1Haskell =+  WikiPageEvent {wiki_page_event_object_kind = "wiki_page", wiki_page_event_user = User {user_id = 2908, user_username = "joe", user_bio = Nothing, user_two_factor_enabled = Nothing, user_last_sign_in_at = Nothing, user_current_sign_in_at = Nothing, user_last_activity_on = Nothing, user_skype = Nothing, user_twitter = Nothing, user_website_url = Nothing, user_theme_id = Nothing, user_color_scheme_id = Nothing, user_external = Nothing, user_private_profile = Nothing, user_projects_limit = Nothing, user_can_create_group = Nothing, user_can_create_project = Nothing, user_public_email = Nothing, user_organization = Nothing, user_job_title = Nothing, user_pronouns = Nothing, user_linkedin = Nothing, user_confirmed_at = Nothing, user_identities = Nothing, user_name = "Joe", user_email = Just "[REDACTED]", user_followers = Nothing, user_bot = Nothing, user_following = Nothing, user_state = Nothing, user_avatar_url = Just "https://secure.gravatar.com/avatar/abc", user_web_url = Nothing, user_location = Nothing, user_extern_uid = Nothing, user_group_id_for_saml = Nothing, user_discussion_locked = Nothing, user_created_at = Nothing, user_note = Nothing, user_password = Nothing, user_force_random_password = Nothing, user_providor = Nothing, user_reset_password = Nothing, user_skip_confirmation = Nothing, user_view_diffs_file_by_file = Nothing}, wiki_page_event_wiki = Wiki {wiki_web_url = Just "https://example.com/joe/proj-name/-/wikis/home", wiki_git_ssh_url = Just "git@example.com:joe/proj-name.wiki.git", wiki_git_http_url = Just "https://example.com/joe/proj-name.wiki.git", wiki_path_with_namespace = Just "joe/proj-name.wiki", wiki_default_branch = Just "main"}, wiki_page_event_object_attributes = WikiPageObjectAttributes {wiki_page_object_attributes_slug = Just "home", wiki_page_object_attributes_title = Just "home", wiki_page_object_attributes_format = Just "markdown", wiki_page_object_attributes_message = Just "The wiki message", wiki_page_object_attributes_version_id = Just "99c9ea1617756edfb6187ab82e663afb834cd306", wiki_page_object_attributes_url = Just "https://example.com/joe/proj-name/-/wikis/home", wiki_page_object_attributes_action = Just "update", wiki_page_object_attributes_diff_url = Just "https://example.com/joe/proj-name/-/wikis/home/diff?version_id=99c9ea1617756edfb6187ab82e663afb834cd306"}}++workItem1Haskell :: WorkItemEvent+workItem1Haskell =+  WorkItemEvent {work_item_event_user = User {user_id = 1853, user_username = "joe", user_bio = Nothing, user_two_factor_enabled = Nothing, user_last_sign_in_at = Nothing, user_current_sign_in_at = Nothing, user_last_activity_on = Nothing, user_skype = Nothing, user_twitter = Nothing, user_website_url = Nothing, user_theme_id = Nothing, user_color_scheme_id = Nothing, user_external = Nothing, user_private_profile = Nothing, user_projects_limit = Nothing, user_can_create_group = Nothing, user_can_create_project = Nothing, user_public_email = Nothing, user_organization = Nothing, user_job_title = Nothing, user_pronouns = Nothing, user_linkedin = Nothing, user_confirmed_at = Nothing, user_identities = Nothing, user_name = "Joe Bloggs", user_email = Just "[REDACTED]", user_followers = Nothing, user_bot = Nothing, user_following = Nothing, user_state = Nothing, user_avatar_url = Just "https://secure.gravatar.com/avatar/abc", user_web_url = Nothing, user_location = Nothing, user_extern_uid = Nothing, user_group_id_for_saml = Nothing, user_discussion_locked = Nothing, user_created_at = Nothing, user_note = Nothing, user_password = Nothing, user_force_random_password = Nothing, user_providor = Nothing, user_reset_password = Nothing, user_skip_confirmation = Nothing, user_view_diffs_file_by_file = Nothing}, work_item_event_object_attributes = WorkItemObjectAttributes {work_item_object_author_id = 1853, work_item_object_closed_at = "2024-11-23 15:56:50 UTC", work_item_object_confidential = False, work_item_object_created_at = "2024-11-11 14:23:52 UTC", work_item_object_description = Nothing, work_item_object_discussion_locked = Nothing, work_item_object_due_date = Nothing, work_item_object_id = 2449, work_item_object_iid = 76, work_item_object_last_edited_at = Nothing, work_item_object_last_edited_by_id = Nothing, work_item_object_milestone_id = Just 63, work_item_object_moved_to_id = Nothing, work_item_object_duplicated_to_id = Nothing, work_item_object_project_id = 19127, work_item_object_relative_position = 38988, work_item_object_state_id = 2, work_item_object_time_estimate = 0, work_item_object_title = "The title", work_item_object_updated_at = "2024-11-23 15:56:50 UTC", work_item_object_updated_by_id = 1853, work_item_object_type = "Task", work_item_object_url = "http://example.com/joe/project/-/work_items/76", work_item_object_total_time_spent = 0, work_item_object_time_change = 0, work_item_object_human_total_time_spent = Nothing, work_item_object_human_time_change = Nothing, work_item_object_human_time_estimate = Nothing, work_item_object_assignee_ids = [1853], work_item_object_assignee_id = 1853, work_item_object_labels = [Label {label_id = Just 391, label_title = Just "Stage 6", label_color = Just "#330066", label_project_id = Just 19127, label_created_at = Just "2024-11-11 13:54:59 UTC", label_updated_at = Just "2024-11-14 09:04:36 UTC", label_template = Just False, label_description = Just "", label_type = Just "ProjectLabel", label_group_id = Nothing}, Label {label_id = Just 337, label_title = Just "documentation", label_color = Just "#f0ad4e", label_project_id = Just 19127, label_created_at = Just "2024-10-07 07:46:00 UTC", label_updated_at = Just "2024-10-07 07:46:00 UTC", label_template = Just False, label_description = Nothing, label_type = Just "ProjectLabel", label_group_id = Nothing}], work_item_object_state = "closed", work_item_object_severity = "unknown", work_item_object_customer_relations_contacts = [], work_item_object_action = "close"}, work_item_event_labels = [Label {label_id = Just 391, label_title = Just "Stage 6", label_color = Just "#330066", label_project_id = Just 19127, label_created_at = Just "2024-11-11 13:54:59 UTC", label_updated_at = Just "2024-11-14 09:04:36 UTC", label_template = Just False, label_description = Just "", label_type = Just "ProjectLabel", label_group_id = Nothing}, Label {label_id = Just 337, label_title = Just "documentation", label_color = Just "#f0ad4e", label_project_id = Just 19127, label_created_at = Just "2024-10-07 07:46:00 UTC", label_updated_at = Just "2024-10-07 07:46:00 UTC", label_template = Just False, label_description = Nothing, label_type = Just "ProjectLabel", label_group_id = Nothing}], work_item_event_repository = Repository {repository_id = Nothing, repository_name = "proj-name", repository_type = Nothing, repository_path = Nothing, repository_mode = Nothing}, work_item_event_assignees = [User {user_id = 1853, user_username = "joe", user_bio = Nothing, user_two_factor_enabled = Nothing, user_last_sign_in_at = Nothing, user_current_sign_in_at = Nothing, user_last_activity_on = Nothing, user_skype = Nothing, user_twitter = Nothing, user_website_url = Nothing, user_theme_id = Nothing, user_color_scheme_id = Nothing, user_external = Nothing, user_private_profile = Nothing, user_projects_limit = Nothing, user_can_create_group = Nothing, user_can_create_project = Nothing, user_public_email = Nothing, user_organization = Nothing, user_job_title = Nothing, user_pronouns = Nothing, user_linkedin = Nothing, user_confirmed_at = Nothing, user_identities = Nothing, user_name = "Joe Bloggs", user_email = Just "[REDACTED]", user_followers = Nothing, user_bot = Nothing, user_following = Nothing, user_state = Nothing, user_avatar_url = Just "https://secure.gravatar.com/avatar/abc", user_web_url = Nothing, user_location = Nothing, user_extern_uid = Nothing, user_group_id_for_saml = Nothing, user_discussion_locked = Nothing, user_created_at = Nothing, user_note = Nothing, user_password = Nothing, user_force_random_password = Nothing, user_providor = Nothing, user_reset_password = Nothing, user_skip_confirmation = Nothing, user_view_diffs_file_by_file = Nothing}]}