@@ -1159,10 +1159,39 @@ class ProjectCommitCommentManager(ListMixin, CreateMixin, RESTManager):
11591159 _create_attrs = (('note' , ), ('path' , 'line' , 'line_type' ))
11601160
11611161
1162+ class ProjectCommitDiscussionNote (SaveMixin , ObjectDeleteMixin , RESTObject ):
1163+ pass
1164+
1165+
1166+ class ProjectCommitDiscussionNoteManager (GetMixin , CreateMixin , UpdateMixin ,
1167+ DeleteMixin , RESTManager ):
1168+ _path = ('/projects/%(project_id)s/repository/commits/%(commit_id)s/'
1169+ 'discussions/%(discussion_id)s/notes' )
1170+ _obj_cls = ProjectCommitDiscussionNote
1171+ _from_parent_attrs = {'project_id' : 'project_id' ,
1172+ 'commit_id' : 'commit_id' ,
1173+ 'discussion_id' : 'id' }
1174+ _create_attrs = (('body' ,), ('created_at' , 'position' ))
1175+ _update_attrs = (('body' ,), tuple ())
1176+
1177+
1178+ class ProjectCommitDiscussion (RESTObject ):
1179+ _managers = (('notes' , 'ProjectCommitDiscussionNoteManager' ),)
1180+
1181+
1182+ class ProjectCommitDiscussionManager (RetrieveMixin , CreateMixin , RESTManager ):
1183+ _path = ('/projects/%(project_id)s/repository/commits/%(commit_id)s/'
1184+ 'discussions' )
1185+ _obj_cls = ProjectCommitDiscussion
1186+ _from_parent_attrs = {'project_id' : 'project_id' , 'commit_id' : 'id' }
1187+ _create_attrs = (('body' ,), ('created_at' ,))
1188+
1189+
11621190class ProjectCommit (RESTObject ):
11631191 _short_print_attr = 'title'
11641192 _managers = (
11651193 ('comments' , 'ProjectCommitCommentManager' ),
1194+ ('discussions' , 'ProjectCommitDiscussionManager' ),
11661195 ('statuses' , 'ProjectCommitStatusManager' ),
11671196 )
11681197
@@ -1330,13 +1359,41 @@ class ProjectIssueNoteManager(CRUDMixin, RESTManager):
13301359 _update_attrs = (('body' , ), tuple ())
13311360
13321361
1362+ class ProjectIssueDiscussionNote (SaveMixin , ObjectDeleteMixin , RESTObject ):
1363+ pass
1364+
1365+
1366+ class ProjectIssueDiscussionNoteManager (GetMixin , CreateMixin , UpdateMixin ,
1367+ DeleteMixin , RESTManager ):
1368+ _path = ('/projects/%(project_id)s/issues/%(issue_iid)s/'
1369+ 'discussions/%(discussion_id)s/notes' )
1370+ _obj_cls = ProjectIssueDiscussionNote
1371+ _from_parent_attrs = {'project_id' : 'project_id' ,
1372+ 'issue_iid' : 'issue_iid' ,
1373+ 'discussion_id' : 'id' }
1374+ _create_attrs = (('body' ,), ('created_at' ,))
1375+ _update_attrs = (('body' ,), tuple ())
1376+
1377+
1378+ class ProjectIssueDiscussion (RESTObject ):
1379+ _managers = (('notes' , 'ProjectIssueDiscussionNoteManager' ),)
1380+
1381+
1382+ class ProjectIssueDiscussionManager (RetrieveMixin , CreateMixin , RESTManager ):
1383+ _path = '/projects/%(project_id)s/issues/%(issue_iid)s/discussions'
1384+ _obj_cls = ProjectIssueDiscussion
1385+ _from_parent_attrs = {'project_id' : 'project_id' , 'issue_iid' : 'iid' }
1386+ _create_attrs = (('body' ,), ('created_at' ,))
1387+
1388+
13331389class ProjectIssue (SubscribableMixin , TodoMixin , TimeTrackingMixin , SaveMixin ,
13341390 ObjectDeleteMixin , RESTObject ):
13351391 _short_print_attr = 'title'
13361392 _id_attr = 'iid'
13371393 _managers = (
1338- ('notes' , 'ProjectIssueNoteManager' ),
13391394 ('awardemojis' , 'ProjectIssueAwardEmojiManager' ),
1395+ ('discussions' , 'ProjectIssueDiscussionManager' ),
1396+ ('notes' , 'ProjectIssueNoteManager' ),
13401397 )
13411398
13421399 @cli .register_custom_action ('ProjectIssue' )
@@ -1510,7 +1567,7 @@ class ProjectMergeRequestNoteAwardEmojiManager(NoUpdateMixin, RESTManager):
15101567 '/notes/%(note_id)s/award_emoji' )
15111568 _obj_cls = ProjectMergeRequestNoteAwardEmoji
15121569 _from_parent_attrs = {'project_id' : 'project_id' ,
1513- 'mr_iid' : 'issue_iid ' ,
1570+ 'mr_iid' : 'mr_iid ' ,
15141571 'note_id' : 'id' }
15151572 _create_attrs = (('name' , ), tuple ())
15161573
@@ -1527,13 +1584,45 @@ class ProjectMergeRequestNoteManager(CRUDMixin, RESTManager):
15271584 _update_attrs = (('body' , ), tuple ())
15281585
15291586
1587+ class ProjectMergeRequestDiscussionNote (SaveMixin , ObjectDeleteMixin ,
1588+ RESTObject ):
1589+ pass
1590+
1591+
1592+ class ProjectMergeRequestDiscussionNoteManager (GetMixin , CreateMixin ,
1593+ UpdateMixin , DeleteMixin ,
1594+ RESTManager ):
1595+ _path = ('/projects/%(project_id)s/merge_requests/%(mr_iid)s/'
1596+ 'discussions/%(discussion_id)s/notes' )
1597+ _obj_cls = ProjectMergeRequestDiscussionNote
1598+ _from_parent_attrs = {'project_id' : 'project_id' ,
1599+ 'mr_iid' : 'mr_iid' ,
1600+ 'discussion_id' : 'id' }
1601+ _create_attrs = (('body' ,), ('created_at' ,))
1602+ _update_attrs = (('body' ,), tuple ())
1603+
1604+
1605+ class ProjectMergeRequestDiscussion (SaveMixin , RESTObject ):
1606+ _managers = (('notes' , 'ProjectMergeRequestDiscussionNoteManager' ),)
1607+
1608+
1609+ class ProjectMergeRequestDiscussionManager (RetrieveMixin , CreateMixin ,
1610+ UpdateMixin , RESTManager ):
1611+ _path = '/projects/%(project_id)s/merge_requests/%(mr_iid)s/discussions'
1612+ _obj_cls = ProjectMergeRequestDiscussion
1613+ _from_parent_attrs = {'project_id' : 'project_id' , 'mr_iid' : 'iid' }
1614+ _create_attrs = (('body' ,), ('created_at' , 'position' ))
1615+ _update_attrs = (('resolved' ,), tuple ())
1616+
1617+
15301618class ProjectMergeRequest (SubscribableMixin , TodoMixin , TimeTrackingMixin ,
15311619 SaveMixin , ObjectDeleteMixin , RESTObject ):
15321620 _id_attr = 'iid'
15331621
15341622 _managers = (
15351623 ('awardemojis' , 'ProjectMergeRequestAwardEmojiManager' ),
15361624 ('diffs' , 'ProjectMergeRequestDiffManager' ),
1625+ ('discussions' , 'ProjectMergeRequestDiscussionManager' ),
15371626 ('notes' , 'ProjectMergeRequestNoteManager' ),
15381627 )
15391628
@@ -2175,11 +2264,39 @@ class ProjectSnippetAwardEmojiManager(NoUpdateMixin, RESTManager):
21752264 _create_attrs = (('name' , ), tuple ())
21762265
21772266
2267+ class ProjectSnippetDiscussionNote (SaveMixin , ObjectDeleteMixin , RESTObject ):
2268+ pass
2269+
2270+
2271+ class ProjectSnippetDiscussionNoteManager (GetMixin , CreateMixin , UpdateMixin ,
2272+ DeleteMixin , RESTManager ):
2273+ _path = ('/projects/%(project_id)s/snippets/%(snippet_id)s/'
2274+ 'discussions/%(discussion_id)s/notes' )
2275+ _obj_cls = ProjectSnippetDiscussionNote
2276+ _from_parent_attrs = {'project_id' : 'project_id' ,
2277+ 'snippet_id' : 'snippet_id' ,
2278+ 'discussion_id' : 'id' }
2279+ _create_attrs = (('body' ,), ('created_at' ,))
2280+ _update_attrs = (('body' ,), tuple ())
2281+
2282+
2283+ class ProjectSnippetDiscussion (RESTObject ):
2284+ _managers = (('notes' , 'ProjectSnippetDiscussionNoteManager' ),)
2285+
2286+
2287+ class ProjectSnippetDiscussionManager (RetrieveMixin , CreateMixin , RESTManager ):
2288+ _path = '/projects/%(project_id)s/snippets/%(snippet_id)s/discussions'
2289+ _obj_cls = ProjectSnippetDiscussion
2290+ _from_parent_attrs = {'project_id' : 'project_id' , 'snippet_id' : 'id' }
2291+ _create_attrs = (('body' ,), ('created_at' ,))
2292+
2293+
21782294class ProjectSnippet (SaveMixin , ObjectDeleteMixin , RESTObject ):
21792295 _url = '/projects/%(project_id)s/snippets'
21802296 _short_print_attr = 'title'
21812297 _managers = (
21822298 ('awardemojis' , 'ProjectSnippetAwardEmojiManager' ),
2299+ ('discussions' , 'ProjectSnippetDiscussionManager' ),
21832300 ('notes' , 'ProjectSnippetNoteManager' ),
21842301 )
21852302
0 commit comments