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 +67/−0
- data/system-hooks/build2.json +74/−0
- data/system-hooks/group-created2.json +9/−0
- data/system-hooks/issue1.json +124/−0
- data/system-hooks/issue2.json +144/−0
- data/system-hooks/issue3.json +124/−0
- data/system-hooks/issue4.json +148/−0
- data/system-hooks/note1.json +99/−0
- data/system-hooks/note2.json +75/−0
- data/system-hooks/note3.json +126/−0
- data/system-hooks/pipeline.json +94/−0
- data/system-hooks/pipeline2.json +94/−0
- data/system-hooks/pipeline3.json +94/−0
- data/system-hooks/pipeline4.json +87/−0
- data/system-hooks/pipeline5.json +94/−0
- data/system-hooks/push2.json +46/−0
- data/system-hooks/wiki-page1.json +45/−0
- data/system-hooks/work-item1.json +148/−0
- gitlab-haskell.cabal +3/−3
- src/GitLab.hs +1/−1
- src/GitLab/API/Members.hs +34/−56
- src/GitLab/API/Pipelines.hs +9/−5
- src/GitLab/API/Projects.hs +3/−2
- src/GitLab/SystemHooks/GitLabSystemHooks.hs +153/−0
- src/GitLab/SystemHooks/Types.hs +986/−11
- src/GitLab/Types.hs +9/−7
- tests/SystemHookTests.hs +363/−48
+ 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}]}