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
MergeRequestfield - Add
ProjectSnippetfield - Add
Commitfield for notes on commits ChangeProjecttype fromEmojiEventProjecttoEventProject
MilestoneWebhookEvent - Source: lib/gitlab/data_builder/milestone.rb
- Add
Groupfield ChangeProjecttype fromMilestoneEventProjectto*EventProject
Shared types - Same hook_attrs methods reused across multiple webhooks:
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.ProjectremainsEmojiEventProject -
MilestoneWebhookEvent.ProjectremainsMilestoneEventProject(value type) -
GroupResourceAccessTokenEvent.GroupremainsGroupResourceAccessTokenEventGroup
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.