Add missing fields to emoji and milestone event types

Summary

GitLab's webhook payloads for emoji and milestone events include undocumented fields for various awardable types. This MR enhances the event types to support these fields.

Changes

EmojiEvent - Source: lib/gitlab/data_builder/emoji.rb

  • Add MergeRequest field
  • Add ProjectSnippet field
  • Add Commit field for notes on commits
  • Change Project type from EmojiEventProject to EventProject

MilestoneWebhookEvent - Source: lib/gitlab/data_builder/milestone.rb

  • Add Group field
  • Change Project type from MilestoneEventProject to *EventProject

Shared types - Same hook_attrs methods reused across multiple webhooks:

Type Definition GitLab Usage (2 per type) client-go Usage
EventProject app/models/project.rb:2416 emoji.rb:36, milestone.rb:24 EmojiEvent.Project, MilestoneWebhookEvent.Project
EventGroup app/models/group.rb:1247 milestone.rb:25, resource_access_token_payload.rb:13 MilestoneWebhookEvent.Group, GroupResourceAccessTokenEvent.Group
EventMergeRequest app/models/merge_request.rb:939 emoji.rb:21, note.rb:52 EmojiEvent.MergeRequest
EventSnippet app/models/snippet.rb:256 emoji.rb:21, note.rb:54 EmojiEvent.ProjectSnippet
EventCommit app/models/commit.rb:282 emoji.rb:14-15, note.rb:81 EmojiEvent.Commit

API Breaking Change Considerations

- EmojiEvent.Project type changed from EmojiEventProject to EventProject - MilestoneWebhookEvent.Project type changed from MilestoneEventProject to *EventProject - GroupResourceAccessTokenEvent.Group type changed from GroupResourceAccessTokenEventGroup to EventGroup - EmojiEventProject struct removed - MilestoneEventProject struct removed - GroupResourceAccessTokenEventGroup struct removed

This MR contains no breaking changes. All existing struct types are preserved to maintain backward compatibility:

  • EmojiEvent.Project remains EmojiEventProject
  • MilestoneWebhookEvent.Project remains MilestoneEventProject (value type)
  • GroupResourceAccessTokenEvent.Group remains GroupResourceAccessTokenEventGroup

Notes

According to GitLab's milestone.rb, the Project field is optional (uses milestone.project&.hook_attrs), as group milestones do not belong to a project. However, MilestoneWebhookEvent.Project remains a value type to maintain backward compatibility.

Edited by Huijie Shi

Merge request reports

Loading