Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Roman Lacko
gitlab_api
Commits
e621c1d4
Verified
Commit
e621c1d4
authored
Apr 21, 2021
by
Roman Lacko
Browse files
Add Merge Requests API
parent
08aaa8fa
Changes
2
Hide whitespace changes
Inline
Side-by-side
GitLab.pm
View file @
e621c1d4
...
...
@@ -13,6 +13,7 @@ use GitLab::Events;
use
GitLab::
Groups
;
use
GitLab::
Jobs
;
use
GitLab::
Members
;
use
GitLab::
MergeRequests
;
use
GitLab::
Namespaces
;
use
GitLab::
Projects
;
use
GitLab::
Repositories
;
...
...
GitLab/MergeRequests.pm
0 → 100644
View file @
e621c1d4
package
GitLab::
MergeRequests
;
use
utf8
;
use
strict
;
use
warnings
;
use
vars
qw($VERSION)
;
use
GitLab::
API
;
use
Log::
Any
qw($log)
;
our
$VERSION
=
v13
.0.0
;
my
$requests
=
{
merge_requests
=>
{
method
=>
'
GET
',
path
=>
'
/merge_requests
',
optional
=>
[
qw(
approved_by_ids
approver_ids
assignee_id
author_id
author_username
created_after
created_before
deployed_after
deployed_before
environment
in
labels
milestone
my_reaction_emoji
not
order_by
reviewer_id
reviewer_username
scope
search
sort
source_branch
state
target_branch
updated_after
updated_before
view
wip
with_labels_details
with_merge_status_recheck
)
],
paginated
=>
1
,
},
project_merge_requests
=>
{
method
=>
'
GET
',
path
=>
'
/projects/<id>/merge_requests
',
optional
=>
[
qw(
approved_by_ids
approver_ids
assignee_id
author_id
author_username
created_after
created_before
iids
labels
milestone
my_reaction_emoji
not
order_by
reviewer_id
reviewer_username
scope
search
sort
source_branch
state
target_branch
updated_after
updated_before
view
wip
with_labels_details
with_merge_status_recheck
)
],
paginated
=>
1
,
},
group_merge_requests
=>
{
method
=>
'
GET
',
path
=>
'
/groups/<gid>/merge_requests
',
optional
=>
[
qw(
approved_by_ids
approver_ids
assignee_id
author_id
author_username
created_after
created_before
iids
labels
milestone
my_reaction_emoji
not
order_by
reviewer_id
reviewer_username
scope
search
sort
source_branch
state
target_branch
updated_after
updated_before
view
wip
with_labels_details
with_merge_status_recheck
)
],
paginated
=>
1
,
},
project_merge_request_get
=>
{
method
=>
'
GET
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>
',
optional
=>
[
qw(
render_html
include_diverged_commits_count
include_rebase_in_progress
)
],
},
project_merge_request_get_participants
=>
{
method
=>
'
GET
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/participants
',
paginated
=>
1
,
},
project_merge_request_get_commits
=>
{
method
=>
'
GET
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/commits
',
paginated
=>
1
,
},
project_merge_request_get_changes
=>
{
method
=>
'
GET
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/changes
',
optional
=>
[
qw(
access_raw_diffs
)
],
paginated
=>
1
,
},
project_merge_request_get_pipelines
=>
{
method
=>
'
GET
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/pipelines
',
paginated
=>
1
,
},
project_merge_request_create_pipeline
=>
{
method
=>
'
POST
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/pipelines
',
},
project_merge_request_create
=>
{
method
=>
'
POST
',
path
=>
'
/projects/<id>/merge_requests
',
encode
=>
[
qw(
id
target_project_id
)
],
required
=>
[
qw(
source_branch
target_branch
title
)
],
optional
=>
[
qw(
assignee_id
assignee_ids[]
reviewer_ids[]
description
target_project_id
labels
milestone_id
remove_source_branch
allow_collaboration
allow_maintainer_to_push
squash
)
],
},
project_merge_request_update
=>
{
method
=>
'
PUT
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>
',
optional
=>
[
qw(
target_branch
title
assignee_id
assignee_ids
reviewer_ids
milestone_id
labels
add_labels
remove_labels
description
state_event
remove_source_branch
squash
discussion_locked
allow_collaboration
allow_maintainer_to_push
)
],
},
project_merge_request_delete
=>
{
method
=>
'
DELETE
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>
',
},
project_merge_request_accept
=>
{
method
=>
'
PUT
',
path
=>
'
PUT /projects/<id>/merge_requests/<mr_id>/merge
',
optional
=>
[
qw(
merge_commit_message
squash_commit_message
squash
should_remove_source_branch
merge_when_pipeline_succeeds
sha
)
],
},
project_merge_request_accept_default_ref
=>
{
method
=>
'
GET
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/merge_ref
',
},
project_merge_request_cancel_when_pipeline_succeeds
=>
{
method
=>
'
POST
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/cancel_merge_when_pipeline_succeeds
',
},
project_merge_request_rebase
=>
{
method
=>
'
PUT
',
path
=>
'
PUT /projects/<id>/merge_requests/<mr_id>/rebase
',
optional
=>
[
qw(
skip_ci
)
],
},
project_merge_request_get_issues
=>
{
method
=>
'
GET
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/closes_issues
',
paginated
=>
1
,
},
project_merge_request_subscribe
=>
{
method
=>
'
POST
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/subscribe
',
},
project_merge_request_unsubscribe
=>
{
method
=>
'
POST
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/unsubscribe
',
},
project_merge_request_todo
=>
{
method
=>
'
POST
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/todo
',
},
project_merge_request_diff_versions
=>
{
method
=>
'
GET
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/versions
',
paginated
=>
1
,
},
project_merge_request_diff_version_get
=>
{
method
=>
'
GET
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/versions/<version_id>
',
},
project_merge_request_set_time_estimate
=>
{
method
=>
'
POST
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/time_estimate
',
required
=>
[
qw(
duration
)
],
},
project_merge_request_reset_time_estimate
=>
{
method
=>
'
POST
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/reset_time_estimate
',
},
project_merge_request_add_spent_time
=>
{
method
=>
'
POST
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/add_spent_time
',
required
=>
[
qw(
duration
)
],
},
project_merge_request_reset_spent_time
=>
{
method
=>
'
POST
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/reset_spent_time
',
},
project_merge_request_time_stats
=>
{
method
=>
'
GET
',
path
=>
'
/projects/<id>/merge_requests/<mr_id>/time_stats
',
},
};
sub
import
{
$log
->
debug
("
initializing
"
.
__PACKAGE__
);
while
(
my
(
$name
,
$tmpl
)
=
each
(
%$requests
))
{
$tmpl
->
{
name
}
=
$name
unless
exists
$tmpl
->
{
name
};
GitLab::
API
->
register
(
$tmpl
);
}
}
1
;
__END__
=head1 NAME
GitLab::MergeRequests - implements Merge Requests API calls
See L<GitLab API -- Users|https://docs.gitlab.com/ce/api/merge_requests.html>
for details and response formats.
=head1 AUTHOR
Roman Lacko <L<xlacko1@fi.muni.cz>>
=head1 SEE ALSO
=over
=item L<GitLab>
Wrapper around L<GitLab::API> and other C<GitLab::*> modules.
=back
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment