Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bluefeet/gitlab-api-v3
A complete GitLab API v3 client. (DEPRECATED)
https://github.com/bluefeet/gitlab-api-v3
cpan deprecated perl5
Last synced: 4 days ago
JSON representation
A complete GitLab API v3 client. (DEPRECATED)
- Host: GitHub
- URL: https://github.com/bluefeet/gitlab-api-v3
- Owner: bluefeet
- License: other
- Archived: true
- Created: 2014-11-17T01:31:38.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2021-01-30T06:37:10.000Z (almost 4 years ago)
- Last Synced: 2024-09-29T18:42:02.908Z (4 months ago)
- Topics: cpan, deprecated, perl5
- Language: Perl
- Homepage: https://metacpan.org/pod/GitLab::API::v3
- Size: 153 KB
- Stars: 13
- Watchers: 2
- Forks: 14
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: Changes
- License: LICENSE
Awesome Lists containing this project
README
# NAME
GitLab::API::v3 - A complete GitLab API v3 client. (DEPRECATED)
# SYNOPSIS
```perl
use GitLab::API::v3;my $api = GitLab::API::v3->new(
url => $v3_api_url,
token => $token,
);my $branches = $api->branches( $project_id );
```## DEPRECATED
This module is at the end of it's life as the latest GitLab no longer supports
the v3 API. Instead, use [GitLab::API::v4](https://metacpan.org/pod/GitLab%3A%3AAPI%3A%3Av4).# DESCRIPTION
This module provides a one-to-one interface with the GitLab
API v3. Much is not documented here as it would just be duplicating
GitLab's own [API Documentation](http://doc.gitlab.com/ce/api/README.html).Note that this distribution also includes the [gitlab-api-v3](https://metacpan.org/pod/gitlab-api-v3) command-line
interface (CLI).# CREDENTIALS
Authentication credentials may be defined by setting either the ["token"](#token),
the ["login"](#login) and ["password"](#password), or the ["email"](#email) and ["password"](#password) arguments.When the object is constructed the ["login"](#login), ["email"](#email), and ["password"](#password)
arguments are used to call ["session"](#session) to generate a token. The token is
saved in the ["token"](#token) attribute, and the login/email/password arguments
are discarded.If no credentials are supplied then the client will be anonymous and greatly
limited in what it can do with the API.## CONSTANTS
Several values in the GitLab API require looking up the numeric value
for a meaning (such as `access_level` and `visibility_level`).
Instead of doing that, you can use [GitLab::API::v3::Constants](https://metacpan.org/pod/GitLab%3A%3AAPI%3A%3Av3%3A%3AConstants).## EXCEPTIONS
The API methods will all throw (hopefully) a useful exception if
an unsuccessful response is received from the API. That is except for
`GET` requests that return a `404` response - these will return `undef`
for methods that return a value.If you'd like to catch and handle these exceptions consider using
[Try::Tiny](https://metacpan.org/pod/Try%3A%3ATiny).## LOGGING
This module uses [Log::Any](https://metacpan.org/pod/Log%3A%3AAny) and produces some debug messages here
and there, but the most useful bits are the info messages produced
just before each API call.## PROJECT ID
Note that many API calls require a `$project_id`. This can be
specified as either a numeric project `ID`, or as a
`NAMESPACE_PATH/PROJECT_PATH` in many cases. Perhaps even
all cases, but the GitLab documentation on this point is vague.## RETURN VALUES
Many of this module's methods should return a value but do not
currently. This is due to the fact that this module was built
as a strict representation of GitLab's own documentation which
is often inconsistent.If you find a method that should provide a return value, but
doesn't currently, please verify that GitLab actually does
return a value and then submit a pull request or open an issue.
See ["CONTRIBUTING"](#contributing) for more info.# REQUIRED ARGUMENTS
## url
The URL to your v3 API endpoint. Typically this will be something
like `http://git.example.com/api/v3`.# OPTIONAL ARGUMENTS
## token
A GitLab API token.
If set then neither ["login"](#login) or ["email"](#email) may be set.
Read more in ["CREDENTIALS"](#credentials).## login
A GitLab user login name.
If set then ["password"](#password) must be set.
Read more in ["CREDENTIALS"](#credentials).A GitLab user email.
If set then ["password"](#password) must be set.
Read more in ["CREDENTIALS"](#credentials).## password
A GitLab user password.
This must be set if either ["login"](#login) or ["email"](#email) are set.
Read more in ["CREDENTIALS"](#credentials).## rest\_client
An instance of [GitLab::API::v3::RESTClient](https://metacpan.org/pod/GitLab%3A%3AAPI%3A%3Av3%3A%3ARESTClient). Typically you will not
be setting this as it defaults to a new instance and customization
should not be necessary.## retries
The number of times the request should be retried in case it does not succeed.
Defaults to 0, meaning that a failed request will not be retried.# UTILITY METHODS
## paginator
```perl
my $paginator = $api->paginator( $method, @method_args );my $members = $api->paginator('group_members', $group_id);
while (my $member = $members->next()) {
...
}my $users_pager = $api->paginator('users');
while (my $users = $users_pager->next_page()) {
...
}my $all_open_issues = $api->paginator(
'issues',
$project_id,
{ state=>'opened' },
)->all();
```Given a method who supports the `page` and `per_page` parameters,
and returns an array ref, this will return a [GitLab::API::v3::Paginator](https://metacpan.org/pod/GitLab%3A%3AAPI%3A%3Av3%3A%3APaginator)
object that will allow you to walk the records one page or one record
at a time.# AWARD EMOJI METHODS
See [http://docs.gitlab.com/ce/api/award\_emoji.html](http://docs.gitlab.com/ce/api/award_emoji.html).
## issue\_award\_emojis
```perl
my $award_emojis = $api->issue_award_emojis(
$id,
$issue_id,
);
```Sends a `GET` request to `/projects/:id/issues/:issue_id/award_emoji` and returns the decoded/deserialized response body.
## merge\_request\_award\_emojis
```perl
my $award_emojis = $api->merge_request_award_emojis(
$id,
$merge_request_id,
);
```Sends a `GET` request to `/projects/:id/merge_requests/:merge_request_id/award_emoji` and returns the decoded/deserialized response body.
## issue\_award\_emoji
```perl
my $award_emoji = $api->issue_award_emoji(
$id,
$issue_id,
$award_id,
);
```Sends a `GET` request to `/projects/:id/issues/:issue_id/award_emoji/:award_id` and returns the decoded/deserialized response body.
## merge\_request\_award\_emoji
```perl
my $award_emoji = $api->merge_request_award_emoji(
$id,
$merge_request_id,
$award_id,
);
```Sends a `GET` request to `/projects/:id/merge_requests/:merge_request_id/award_emoji/:award_id` and returns the decoded/deserialized response body.
## create\_issue\_award\_emoji
```perl
my $award_emoji = $api->create_issue_award_emoji(
$id,
$issue_id,
\%params,
);
```Sends a `POST` request to `/projects/:id/issues/:issue_id/award_emoji` and returns the decoded/deserialized response body.
## create\_merge\_request\_award\_emoji
```perl
my $award_emoji = $api->create_merge_request_award_emoji(
$id,
$merge_request_id,
\%params,
);
```Sends a `POST` request to `/projects/:id/merge_requests/:merge_request_id/award_emoji` and returns the decoded/deserialized response body.
## delete\_issue\_award\_emoji
```perl
my $award_emoji = $api->delete_issue_award_emoji(
$id,
$issue_id,
$award_id,
);
```Sends a `DELETE` request to `/projects/:id/issues/:issue_id/award_emoji/:award_id` and returns the decoded/deserialized response body.
## delete\_merge\_request\_award\_emoji
```perl
my $award_emoji = $api->delete_merge_request_award_emoji(
$id,
$merge_request_id,
$award_id,
);
```Sends a `DELETE` request to `/projects/:id/merge_requests/:merge_request_id/award_emoji/:award_id` and returns the decoded/deserialized response body.
## issue\_note\_award\_emojis
```perl
my $award_emojis = $api->issue_note_award_emojis(
$id,
$issue_id,
$note_id,
);
```Sends a `GET` request to `/projects/:id/issues/:issue_id/notes/:note_id/award_emoji` and returns the decoded/deserialized response body.
## issue\_note\_award\_emoji
```perl
my $award_emoji = $api->issue_note_award_emoji(
$id,
$issue_id,
$note_id,
$award_id,
);
```Sends a `GET` request to `/projects/:id/issues/:issue_id/notes/:note_id/award_emoji/:award_id` and returns the decoded/deserialized response body.
## create\_issue\_note\_award\_emoji
```perl
my $award_emoji = $api->create_issue_note_award_emoji(
$id,
$issue_id,
$note_id,
\%params,
);
```Sends a `POST` request to `/projects/:id/issues/:issue_id/notes/:note_id/award_emoji` and returns the decoded/deserialized response body.
## delete\_issue\_note\_award\_emoji
```perl
my $award_emoji = $api->delete_issue_note_award_emoji(
$id,
$issue_id,
$note_id,
$award_id,
);
```Sends a `DELETE` request to `/projects/:id/issues/:issue_id/notes/:note_id/award_emoji/:award_id` and returns the decoded/deserialized response body.
## merge\_request\_note\_award\_emojis
```perl
my $award_emojis = $api->merge_request_note_award_emojis(
$id,
$merge_request_id,
$note_id,
);
```Sends a `GET` request to `/projects/:id/merge_requests/:merge_request_id/notes/:note_id/award_emoji` and returns the decoded/deserialized response body.
## merge\_request\_note\_award\_emoji
```perl
my $award_emoji = $api->merge_request_note_award_emoji(
$id,
$merge_request_id,
$note_id,
$award_id,
);
```Sends a `GET` request to `/projects/:id/merge_requests/:merge_request_id/notes/:note_id/award_emoji/:award_id` and returns the decoded/deserialized response body.
## create\_merge\_request\_note\_award\_emoji
```perl
my $award_emoji = $api->create_merge_request_note_award_emoji(
$id,
$merge_request_id,
$note_id,
\%params,
);
```Sends a `POST` request to `/projects/:id/merge_requests/:merge_request_id/notes/:note_id/award_emoji` and returns the decoded/deserialized response body.
## delete\_merge\_request\_note\_award\_emoji
```perl
my $award_emoji = $api->delete_merge_request_note_award_emoji(
$id,
$merge_request_id,
$note_id,
$award_id,
);
```Sends a `DELETE` request to `/projects/:id/merge_requests/:merge_request_id/notes/:note_id/award_emoji/:award_id` and returns the decoded/deserialized response body.
# BRANCH METHODS
See [http://doc.gitlab.com/ce/api/branches.html](http://doc.gitlab.com/ce/api/branches.html).
## branches
```perl
my $branches = $api->branches(
$project_id,
);
```Sends a `GET` request to `/projects/:project_id/repository/branches` and returns the decoded/deserialized response body.
## branch
```perl
my $branch = $api->branch(
$project_id,
$branch_name,
);
```Sends a `GET` request to `/projects/:project_id/repository/branches/:branch_name` and returns the decoded/deserialized response body.
## protect\_branch
```
$api->protect_branch(
$project_id,
$branch_name,
\%params,
);
```Sends a `PUT` request to `/projects/:project_id/repository/branches/:branch_name/protect`.
## unprotect\_branch
```
$api->unprotect_branch(
$project_id,
$branch_name,
);
```Sends a `PUT` request to `/projects/:project_id/repository/branches/:branch_name/unprotect`.
## create\_branch
```perl
my $branch = $api->create_branch(
$project_id,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/repository/branches` and returns the decoded/deserialized response body.
## delete\_branch
```
$api->delete_branch(
$project_id,
$branch_name,
);
```Sends a `DELETE` request to `/projects/:project_id/repository/branches/:branch_name`.
# BUILD METHODS
See [http://docs.gitlab.com/ce/api/builds.html](http://docs.gitlab.com/ce/api/builds.html).
## builds
```perl
my $builds = $api->builds(
$id,
\%params,
);
```Sends a `GET` request to `/projects/:id/builds` and returns the decoded/deserialized response body.
## commit\_builds
```perl
my $builds = $api->commit_builds(
$id,
$sha,
\%params,
);
```Sends a `GET` request to `/projects/:id/repository/commits/:sha/builds` and returns the decoded/deserialized response body.
## build
```perl
my $build = $api->build(
$id,
$build_id,
);
```Sends a `GET` request to `/projects/:id/builds/:build_id` and returns the decoded/deserialized response body.
## build\_artifacts
```perl
my $artifacts = $api->build_artifacts(
$id,
$build_id,
);
```Sends a `GET` request to `/projects/:id/builds/:build_id/artifacts` and returns the decoded/deserialized response body.
## build\_trace
```perl
my $trace = $api->build_trace(
$id,
$build_id,
);
```Sends a `GET` request to `/projects/:id/builds/:build_id/trace` and returns the decoded/deserialized response body.
## cancel\_build
```perl
my $build = $api->cancel_build(
$id,
$build_id,
);
```Sends a `POST` request to `/projects/:id/builds/:build_id/cancel` and returns the decoded/deserialized response body.
## retry\_build
```perl
my $build = $api->retry_build(
$id,
$build_id,
);
```Sends a `POST` request to `/projects/:id/builds/:build_id/retry` and returns the decoded/deserialized response body.
## erase\_build
```perl
my $build = $api->erase_build(
$id,
$build_id,
);
```Sends a `POST` request to `/projects/:id/builds/:build_id/erase` and returns the decoded/deserialized response body.
## keep\_build\_artifacts
```perl
my $build = $api->keep_build_artifacts(
$id,
$build_id,
);
```Sends a `POST` request to `/projects/:id/builds/:build_id/artifacts/keep` and returns the decoded/deserialized response body.
# BUILD TRIGGER METHODS
See [http://docs.gitlab.com/ce/api/build\_triggers.html](http://docs.gitlab.com/ce/api/build_triggers.html).
## triggers
```perl
my $triggers = $api->triggers(
$id,
);
```Sends a `GET` request to `/projects/:id/triggers` and returns the decoded/deserialized response body.
## trigger
```perl
my $trigger = $api->trigger(
$id,
$token,
);
```Sends a `GET` request to `/projects/:id/triggers/:token` and returns the decoded/deserialized response body.
## create\_trigger
```perl
my $trigger = $api->create_trigger(
$id,
);
```Sends a `POST` request to `/projects/:id/triggers` and returns the decoded/deserialized response body.
## delete\_trigger
```perl
my $trigger = $api->delete_trigger(
$id,
$token,
);
```Sends a `DELETE` request to `/projects/:id/triggers/:token` and returns the decoded/deserialized response body.
# BUILD VARIABLE METHODS
See [http://docs.gitlab.com/ce/api/build\_variables.html](http://docs.gitlab.com/ce/api/build_variables.html).
## variables
```perl
my $variables = $api->variables(
$id,
);
```Sends a `GET` request to `/projects/:id/variables` and returns the decoded/deserialized response body.
## variable
```perl
my $variable = $api->variable(
$id,
$key,
);
```Sends a `GET` request to `/projects/:id/variables/:key` and returns the decoded/deserialized response body.
## create\_variable
```perl
my $variable = $api->create_variable(
$id,
\%params,
);
```Sends a `POST` request to `/projects/:id/variables` and returns the decoded/deserialized response body.
## update\_variable
```perl
my $variable = $api->update_variable(
$id,
$key,
\%params,
);
```Sends a `PUT` request to `/projects/:id/variables/:key` and returns the decoded/deserialized response body.
## delete\_variable
```perl
my $variable = $api->delete_variable(
$id,
$key,
);
```Sends a `DELETE` request to `/projects/:id/variables/:key` and returns the decoded/deserialized response body.
# COMMIT METHODS
See [http://doc.gitlab.com/ce/api/commits.html](http://doc.gitlab.com/ce/api/commits.html).
## commits
```perl
my $commits = $api->commits(
$project_id,
\%params,
);
```Sends a `GET` request to `/projects/:project_id/repository/commits` and returns the decoded/deserialized response body.
## commit
```perl
my $commit = $api->commit(
$project_id,
$commit_sha,
);
```Sends a `GET` request to `/projects/:project_id/repository/commits/:commit_sha` and returns the decoded/deserialized response body.
## commit\_diff
```perl
my $diff = $api->commit_diff(
$project_id,
$commit_sha,
);
```Sends a `GET` request to `/projects/:project_id/repository/commits/:commit_sha/diff` and returns the decoded/deserialized response body.
## commit\_comments
```perl
my $comments = $api->commit_comments(
$project_id,
$commit_sha,
);
```Sends a `GET` request to `/projects/:project_id/repository/commits/:commit_sha/comments` and returns the decoded/deserialized response body.
## add\_commit\_comment
```
$api->add_commit_comment(
$project_id,
$commit_sha,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/repository/commits/:commit_sha/comments`.
# DEPLOY KEY METHODS
See [http://doc.gitlab.com/ce/api/deploy\_keys.html](http://doc.gitlab.com/ce/api/deploy_keys.html).
## deploy\_keys
```perl
my $keys = $api->deploy_keys(
$project_id,
);
```Sends a `GET` request to `/projects/:project_id/keys` and returns the decoded/deserialized response body.
## deploy\_key
```perl
my $key = $api->deploy_key(
$project_id,
$key_id,
);
```Sends a `GET` request to `/projects/:project_id/keys/:key_id` and returns the decoded/deserialized response body.
## create\_deploy\_key
```
$api->create_deploy_key(
$project_id,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/keys`.
## delete\_deploy\_key
```
$api->delete_deploy_key(
$project_id,
$key_id,
);
```Sends a `DELETE` request to `/projects/:project_id/keys/:key_id`.
# GROUP METHODS
See [http://doc.gitlab.com/ce/api/groups.html](http://doc.gitlab.com/ce/api/groups.html).
## groups
```perl
my $groups = $api->groups();
```Sends a `GET` request to `/groups` and returns the decoded/deserialized response body.
## group
```perl
my $group = $api->group(
$group_id,
);
```Sends a `GET` request to `/groups/:group_id` and returns the decoded/deserialized response body.
## create\_group
```
$api->create_group(
\%params,
);
```Sends a `POST` request to `/groups`.
## transfer\_project
```
$api->transfer_project(
$group_id,
$project_id,
);
```Sends a `POST` request to `/groups/:group_id/projects/:project_id`.
## delete\_group
```
$api->delete_group(
$group_id,
);
```Sends a `DELETE` request to `/groups/:group_id`.
## search\_groups
```perl
my $groups = $api->search_groups(
\%params,
);
```Sends a `GET` request to `/groups` and returns the decoded/deserialized response body.
## group\_members
```perl
my $members = $api->group_members(
$group_id,
);
```Sends a `GET` request to `/groups/:group_id/members` and returns the decoded/deserialized response body.
## group\_projects
```perl
my $projects = $api->group_projects(
$group_id,
\%params,
);
```Sends a `GET` request to `/groups/:group_id/projects` and returns the decoded/deserialized response body.
## add\_group\_member
```
$api->add_group_member(
$group_id,
\%params,
);
```Sends a `POST` request to `/groups/:group_id/members`.
## edit\_group\_member
```perl
$api->edit_group_member(
$group_id,
$user_id,
\%params,
);
```Sends a `PUT` request to `/groups/:group_id/members/:user_id`.
## remove\_group\_member
```perl
$api->remove_group_member(
$group_id,
$user_id,
);
```Sends a `DELETE` request to `/groups/:group_id/members/:user_id`.
# ISSUE METHODS
See [http://doc.gitlab.com/ce/api/issues.html](http://doc.gitlab.com/ce/api/issues.html).
## all\_issues
```perl
my $issues = $api->all_issues(
\%params,
);
```Sends a `GET` request to `/issues` and returns the decoded/deserialized response body.
## issues
```perl
my $issues = $api->issues(
$project_id,
\%params,
);
```Sends a `GET` request to `/projects/:project_id/issues` and returns the decoded/deserialized response body.
## issue
```perl
my $issue = $api->issue(
$project_id,
$issue_id,
);
```Sends a `GET` request to `/projects/:project_id/issues/:issue_id` and returns the decoded/deserialized response body.
## create\_issue
```perl
my $issue = $api->create_issue(
$project_id,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/issues` and returns the decoded/deserialized response body.
## edit\_issue
```perl
my $issue = $api->edit_issue(
$project_id,
$issue_id,
\%params,
);
```Sends a `PUT` request to `/projects/:project_id/issues/:issue_id` and returns the decoded/deserialized response body.
# KEY METHODS
See [http://docs.gitlab.com/ce/api/keys.html](http://docs.gitlab.com/ce/api/keys.html).
## key
```perl
my $key = $api->key(
$key_id,
);
```Sends a `GET` request to `/keys/:key_id` and returns the decoded/deserialized response body.
# LABEL METHODS
See [http://doc.gitlab.com/ce/api/labels.html](http://doc.gitlab.com/ce/api/labels.html).
## labels
```perl
my $labels = $api->labels(
$project_id,
);
```Sends a `GET` request to `/projects/:project_id/labels` and returns the decoded/deserialized response body.
## create\_label
```perl
my $label = $api->create_label(
$project_id,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/labels` and returns the decoded/deserialized response body.
## delete\_label
```
$api->delete_label(
$project_id,
\%params,
);
```Sends a `DELETE` request to `/projects/:project_id/labels`.
## edit\_label
```perl
my $label = $api->edit_label(
$project_id,
\%params,
);
```Sends a `PUT` request to `/projects/:project_id/labels` and returns the decoded/deserialized response body.
# MERGE REQUEST METHODS
See [http://doc.gitlab.com/ce/api/merge\_requests.html](http://doc.gitlab.com/ce/api/merge_requests.html).
## merge\_requests
```perl
my $merge_requests = $api->merge_requests(
$project_id,
\%params,
);
```Sends a `GET` request to `/projects/:project_id/merge_requests` and returns the decoded/deserialized response body.
## merge\_request
```perl
my $merge_request = $api->merge_request(
$project_id,
$merge_request_id,
);
```Sends a `GET` request to `/projects/:project_id/merge_request/:merge_request_id` and returns the decoded/deserialized response body.
## create\_merge\_request
```perl
my $merge_request = $api->create_merge_request(
$project_id,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/merge_requests` and returns the decoded/deserialized response body.
## edit\_merge\_request
```perl
my $merge_request = $api->edit_merge_request(
$project_id,
$merge_request_id,
\%params,
);
```Sends a `PUT` request to `/projects/:project_id/merge_requests/:merge_request_id` and returns the decoded/deserialized response body.
## accept\_merge\_request
```
$api->accept_merge_request(
$project_id,
$merge_request_id,
\%params,
);
```Sends a `PUT` request to `/projects/:project_id/merge_requests/:merge_request_id/merge`.
## add\_merge\_request\_comment
```
$api->add_merge_request_comment(
$project_id,
$merge_request_id,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/merge_requests/:merge_request_id/comments`.
## merge\_request\_comments
```perl
my $comments = $api->merge_request_comments(
$project_id,
$merge_request_id,
);
```Sends a `GET` request to `/projects/:project_id/merge_requests/:merge_request_id/comments` and returns the decoded/deserialized response body.
# MILESTONE METHODS
See [http://doc.gitlab.com/ce/api/milestones.html](http://doc.gitlab.com/ce/api/milestones.html).
## milestones
```perl
my $milestones = $api->milestones(
$project_id,
\%params,
);
```Sends a `GET` request to `/projects/:project_id/milestones` and returns the decoded/deserialized response body.
## milestone
```perl
my $milestone = $api->milestone(
$project_id,
$milestone_id,
);
```Sends a `GET` request to `/projects/:project_id/milestones/:milestone_id` and returns the decoded/deserialized response body.
## create\_milestone
```
$api->create_milestone(
$project_id,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/milestones`.
## edit\_milestone
```
$api->edit_milestone(
$project_id,
$milestone_id,
\%params,
);
```Sends a `PUT` request to `/projects/:project_id/milestones/:milestone_id`.
## milestone\_issues
```perl
my $issues = $api->milestone_issues(
$project_id,
$milestone_id,
);
```Sends a `GET` request to `/projects/:project_id/milestones/:milestone_id/issues` and returns the decoded/deserialized response body.
# OPEN SOURCE LICENSES METHODS
See [http://docs.gitlab.com/ce/api/licenses.html](http://docs.gitlab.com/ce/api/licenses.html).
## licenses
```perl
my $licenses = $api->licenses(
\%params,
);
```Sends a `GET` request to `/licenses` and returns the decoded/deserialized response body.
## license
```perl
my $license = $api->license(
$license_key,
\%params,
);
```Sends a `GET` request to `/licenses/:license_key` and returns the decoded/deserialized response body.
# NAMESPACE METHODS
See [http://docs.gitlab.com/ce/api/namespaces.html](http://docs.gitlab.com/ce/api/namespaces.html).
## namespaces
```perl
my $namespaces = $api->namespaces(
\%params,
);
```Sends a `GET` request to `/namespaces` and returns the decoded/deserialized response body.
# NOTE METHODS
See [http://doc.gitlab.com/ce/api/notes.html](http://doc.gitlab.com/ce/api/notes.html).
## notes
```perl
my $notes = $api->notes(
$project_id,
$thing_type,
$thing_id,
);
```Sends a `GET` request to `/projects/:project_id/:thing_type/:thing_id/notes` and returns the decoded/deserialized response body.
## note
```perl
my $note = $api->note(
$project_id,
$thing_type,
$thing_id,
$note_id,
);
```Sends a `GET` request to `/projects/:project_id/:thing_type/:thing_id/notes/:note_id` and returns the decoded/deserialized response body.
## create\_note
```
$api->create_note(
$project_id,
$thing_type,
$thing_id,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/:thing_type/:thing_id/notes`.
## edit\_note
```
$api->edit_note(
$project_id,
$thing_type,
$thing_id,
$note_id,
\%params,
);
```Sends a `PUT` request to `/projects/:project_id/:thing_type/:thing_id/notes/:note_id`.
# PROJECT METHODS
See [http://doc.gitlab.com/ce/api/projects.html](http://doc.gitlab.com/ce/api/projects.html).
## projects
```perl
my $projects = $api->projects(
\%params,
);
```Sends a `GET` request to `/projects` and returns the decoded/deserialized response body.
## owned\_projects
```perl
my $projects = $api->owned_projects(
\%params,
);
```Sends a `GET` request to `/projects/owned` and returns the decoded/deserialized response body.
## all\_projects
```perl
my $projects = $api->all_projects(
\%params,
);
```Sends a `GET` request to `/projects/all` and returns the decoded/deserialized response body.
## project
```perl
my $project = $api->project(
$project_id,
);
```Sends a `GET` request to `/projects/:project_id` and returns the decoded/deserialized response body.
## project\_events
```perl
my $events = $api->project_events(
$project_id,
);
```Sends a `GET` request to `/projects/:project_id/events` and returns the decoded/deserialized response body.
## create\_project
```perl
my $project = $api->create_project(
\%params,
);
```Sends a `POST` request to `/projects` and returns the decoded/deserialized response body.
## create\_project\_for\_user
```perl
$api->create_project_for_user(
$user_id,
\%params,
);
```Sends a `POST` request to `/projects/user/:user_id`.
## edit\_project
```perl
my $project = $api->edit_project(
$project_id,
\%params,
);
```Sends a `PUT` request to `/projects/:project_id` and returns the decoded/deserialized response body.
## fork\_project
```
$api->fork_project(
$project_id,
);
```Sends a `POST` request to `/pojects/fork/:project_id`.
## delete\_project
```
$api->delete_project(
$project_id,
);
```Sends a `DELETE` request to `/projects/:project_id`.
## project\_members
```perl
my $members = $api->project_members(
$project_id,
\%params,
);
```Sends a `GET` request to `/projects/:project_id/members` and returns the decoded/deserialized response body.
## project\_member
```perl
my $member = $api->project_member(
$project_id,
$user_id,
);
```Sends a `GET` request to `/project/:project_id/members/:user_id` and returns the decoded/deserialized response body.
## add\_project\_member
```
$api->add_project_member(
$project_id,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/members`.
## edit\_project\_member
```perl
$api->edit_project_member(
$project_id,
$user_id,
\%params,
);
```Sends a `PUT` request to `/projects/:project_id/members/:user_id`.
## remove\_project\_member
```perl
$api->remove_project_member(
$project_id,
$user_id,
);
```Sends a `DELETE` request to `/projects/:project_id/members/:user_id`.
## share\_project\_with\_group
```
$api->share_project_with_group(
$id,
\%params,
);
```Sends a `POST` request to `/projects/:id/share`.
## delete\_shared\_project\_link\_within\_group
```
$api->delete_shared_project_link_within_group(
$id,
$group_id,
);
```Sends a `DELETE` request to `/projects/:id/share/:group_id`.
## project\_hooks
```perl
my $hooks = $api->project_hooks(
$project_id,
);
```Sends a `GET` request to `/projects/:project_id/hooks` and returns the decoded/deserialized response body.
## project\_hook
```perl
my $hook = $api->project_hook(
$project_id,
$hook_id,
);
```Sends a `GET` request to `/project/:project_id/hooks/:hook_id` and returns the decoded/deserialized response body.
## create\_project\_hook
```
$api->create_project_hook(
$project_id,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/hooks`.
## edit\_project\_hook
```
$api->edit_project_hook(
$project_id,
$hook_id,
\%params,
);
```Sends a `PUT` request to `/projects/:project_id/hooks/:hook_id`.
## delete\_project\_hook
```perl
my $hook = $api->delete_project_hook(
$project_id,
$hook_id,
);
```Sends a `DELETE` request to `/projects/:project_id/hooks/:hook_id` and returns the decoded/deserialized response body.
## set\_project\_fork
```
$api->set_project_fork(
$project_id,
$forked_from_id,
);
```Sends a `POST` request to `/projects/:project_id/fork/:forked_from_id`.
## clear\_project\_fork
```
$api->clear_project_fork(
$project_id,
);
```Sends a `DELETE` request to `/projects/:project_id/fork`.
## search\_projects\_by\_name
```perl
my $projects = $api->search_projects_by_name(
$query,
\%params,
);
```Sends a `GET` request to `/projects/search/:query` and returns the decoded/deserialized response body.
# PROJECT SNIPPET METHODS
See [http://doc.gitlab.com/ce/api/project\_snippets.html](http://doc.gitlab.com/ce/api/project_snippets.html).
## snippets
```perl
my $snippets = $api->snippets(
$project_id,
);
```Sends a `GET` request to `/projects/:project_id/snippets` and returns the decoded/deserialized response body.
## snippet
```perl
my $snippet = $api->snippet(
$project_id,
$snippet_id,
);
```Sends a `GET` request to `/projects/:project_id/snippets/:snippet_id` and returns the decoded/deserialized response body.
## create\_snippet
```
$api->create_snippet(
$project_id,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/snippets`.
## edit\_snippet
```
$api->edit_snippet(
$project_id,
$snippet_id,
\%params,
);
```Sends a `PUT` request to `/projects/:project_id/snippets/:snippet_id`.
## delete\_snippet
```
$api->delete_snippet(
$project_id,
$snippet_id,
);
```Sends a `DELETE` request to `/projects/:project_id/snippets/:snippet_id`.
## snippet\_content
```perl
my $content = $api->snippet_content(
$project_id,
$snippet_id,
);
```Sends a `GET` request to `/projects/:project_id/snippets/:snippet_id/raw` and returns the decoded/deserialized response body.
# REPOSITORY METHODS
See [http://doc.gitlab.com/ce/api/repositories.html](http://doc.gitlab.com/ce/api/repositories.html).
## tree
```perl
my $tree = $api->tree(
$project_id,
\%params,
);
```Sends a `GET` request to `/projects/:project_id/repository/tree` and returns the decoded/deserialized response body.
## blob
```perl
my $blob = $api->blob(
$project_id,
$ref,
\%params,
);
```Sends a `GET` request to `/projects/:project_id/repository/blobs/:ref` and returns the decoded/deserialized response body.
## raw\_blob
```perl
my $raw_blob = $api->raw_blob(
$project_id,
$blob_sha,
);
```Sends a `GET` request to `/projects/:project_id/repository/raw_blobs/:blob_sha` and returns the decoded/deserialized response body.
## archive
```perl
my $archive = $api->archive(
$project_id,
\%params,
);
```Sends a `GET` request to `/projects/:project_id/repository/archive` and returns the decoded/deserialized response body.
## compare
```perl
my $comparison = $api->compare(
$project_id,
\%params,
);
```Sends a `GET` request to `/projects/:project_id/repository/compare` and returns the decoded/deserialized response body.
## contributors
```perl
my $contributors = $api->contributors(
$project_id,
);
```Sends a `GET` request to `/projects/:project_id/repository/contributors` and returns the decoded/deserialized response body.
# FILE METHODS
See [http://doc.gitlab.com/ce/api/repository\_files.html](http://doc.gitlab.com/ce/api/repository_files.html).
## file
```perl
my $file = $api->file(
$project_id,
\%params,
);
```Sends a `GET` request to `/projects/:project_id/repository/files` and returns the decoded/deserialized response body.
## create\_file
```
$api->create_file(
$project_id,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/repository/files`.
## edit\_file
```
$api->edit_file(
$project_id,
\%params,
);
```Sends a `PUT` request to `/projects/:project_id/repository/files`.
## delete\_file
```
$api->delete_file(
$project_id,
\%params,
);
```Sends a `DELETE` request to `/projects/:project_id/repository/files`.
# RUNNER METHODS
See [http://docs.gitlab.com/ce/api/runners.html](http://docs.gitlab.com/ce/api/runners.html).
## runners
```perl
my $runners = $api->runners(
\%params,
);
```Sends a `GET` request to `/runners` and returns the decoded/deserialized response body.
## all\_runners
```perl
my $runners = $api->all_runners(
\%params,
);
```Sends a `GET` request to `/runners/all` and returns the decoded/deserialized response body.
## runner
```perl
my $runner = $api->runner(
$id,
);
```Sends a `GET` request to `/runners/:id` and returns the decoded/deserialized response body.
## update\_runner
```perl
my $runner = $api->update_runner(
$id,
\%params,
);
```Sends a `PUT` request to `/runners/:id` and returns the decoded/deserialized response body.
## delete\_runner
```perl
my $runner = $api->delete_runner(
$id,
);
```Sends a `DELETE` request to `/runners/:id` and returns the decoded/deserialized response body.
## project\_runners
```perl
my $runners = $api->project_runners(
$id,
);
```Sends a `GET` request to `/projects/:id/runners` and returns the decoded/deserialized response body.
## enable\_project\_runner
```perl
my $runner = $api->enable_project_runner(
$id,
\%params,
);
```Sends a `POST` request to `/projects/:id/runners` and returns the decoded/deserialized response body.
## disable\_project\_runner
```perl
my $runner = $api->disable_project_runner(
$id,
$runner_id,
);
```Sends a `DELETE` request to `/projects/:id/runners/:runner_id` and returns the decoded/deserialized response body.
# SERVICE METHODS
See [http://doc.gitlab.com/ce/api/services.html](http://doc.gitlab.com/ce/api/services.html).
## edit\_project\_service
```
$api->edit_project_service(
$project_id,
$service_name,
\%params,
);
```Sends a `PUT` request to `/projects/:project_id/services/:service_name`.
## delete\_project\_service
```
$api->delete_project_service(
$project_id,
$service_name,
);
```Sends a `DELETE` request to `/projects/:project_id/services/:service_name`.
# SESSION METHODS
See [http://doc.gitlab.com/ce/api/session.html](http://doc.gitlab.com/ce/api/session.html).
## session
```perl
my $session = $api->session(
\%params,
);
```Sends a `POST` request to `/session` and returns the decoded/deserialized response body.
# SETTINGS METHODS
See [http://docs.gitlab.com/ce/api/settings.html](http://docs.gitlab.com/ce/api/settings.html).
## settings
```perl
my $settings = $api->settings();
```Sends a `GET` request to `/application/settings` and returns the decoded/deserialized response body.
## update\_settings
```perl
my $settings = $api->update_settings(
\%params,
);
```Sends a `PUT` request to `/application/settings` and returns the decoded/deserialized response body.
# SIDEKIQ METHODS
See [http://docs.gitlab.com/ce/api/sidekiq\_metrics.html](http://docs.gitlab.com/ce/api/sidekiq_metrics.html).
## queue\_metrics
```perl
my $metrics = $api->queue_metrics();
```Sends a `GET` request to `/sidekiq/queue_metrics` and returns the decoded/deserialized response body.
## process\_metrics
```perl
my $metrics = $api->process_metrics();
```Sends a `GET` request to `/sidekiq/process_metrics` and returns the decoded/deserialized response body.
## job\_stats
```perl
my $stats = $api->job_stats();
```Sends a `GET` request to `/sidekiq/job_stats` and returns the decoded/deserialized response body.
## compound\_metrics
```perl
my $metrics = $api->compound_metrics();
```Sends a `GET` request to `/sidekiq/compound_metrics` and returns the decoded/deserialized response body.
# USER SNIPPET METHODS
See [http://docs.gitlab.com/ce/api/snippets.html](http://docs.gitlab.com/ce/api/snippets.html).
## user\_snippets
```perl
my $snippets = $api->user_snippets();
```Sends a `GET` request to `/snippets` and returns the decoded/deserialized response body.
## user\_snippet
```perl
my $snippet = $api->user_snippet(
$snippet_id,
);
```Sends a `GET` request to `/snippets/:snippet_id` and returns the decoded/deserialized response body.
## create\_user\_snippet
```perl
$api->create_user_snippet(
\%params,
);
```Sends a `POST` request to `/snippets`.
## edit\_user\_snippet
```perl
$api->edit_user_snippet(
$snippet_id,
\%params,
);
```Sends a `PUT` request to `/snippets/:snippet_id`.
## delete\_user\_snippet
```perl
$api->delete_user_snippet(
$snippet_id,
);
```Sends a `DELETE` request to `/snippets/:snippet_id`.
## public\_snippets
```perl
my $snippets = $api->public_snippets();
```Sends a `GET` request to `/snippets/public` and returns the decoded/deserialized response body.
# SYSTEM HOOK METHODS
See [http://doc.gitlab.com/ce/api/system\_hooks.html](http://doc.gitlab.com/ce/api/system_hooks.html).
## hooks
```perl
my $hooks = $api->hooks();
```Sends a `GET` request to `/hooks` and returns the decoded/deserialized response body.
## create\_hook
```
$api->create_hook(
\%params,
);
```Sends a `POST` request to `/hooks`.
## test\_hook
```perl
my $hook = $api->test_hook(
$hook_id,
);
```Sends a `GET` request to `/hooks/:hook_id` and returns the decoded/deserialized response body.
## delete\_hook
```
$api->delete_hook(
$hook_id,
);
```Sends a `DELETE` request to `/hooks/:hook_id`.
# TAG METHODS
See [http://docs.gitlab.com/ce/api/tags.html](http://docs.gitlab.com/ce/api/tags.html).
## tags
```perl
my $tags = $api->tags(
$project_id,
);
```Sends a `GET` request to `/projects/:project_id/repository/tags` and returns the decoded/deserialized response body.
## tag
```perl
my $tag = $api->tag(
$project_id,
$tag_name,
);
```Sends a `GET` request to `/projects/:project_id/repository/tags/:tag_name` and returns the decoded/deserialized response body.
## create\_tag
```perl
my $tag = $api->create_tag(
$project_id,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/repository/tags` and returns the decoded/deserialized response body.
## delete\_tag
```
$api->delete_tag(
$project_id,
$tag_name,
);
```Sends a `DELETE` request to `/projects/:project_id/repository/tags/:tag_name`.
## create\_release
```
$api->create_release(
$project_id,
$tag_name,
\%params,
);
```Sends a `POST` request to `/projects/:project_id/repository/tags/:tag_name/release`.
## update\_release
```
$api->update_release(
$project_id,
$tag_name,
\%params,
);
```Sends a `PUT` request to `/projects/:project_id/repository/tags/:tag_name/release`.
# USER METHODS
See [http://doc.gitlab.com/ce/api/users.html](http://doc.gitlab.com/ce/api/users.html).
## users
```perl
my $users = $api->users(
\%params,
);
```Sends a `GET` request to `/users` and returns the decoded/deserialized response body.
## user
```perl
my $user = $api->user(
$user_id,
);
```Sends a `GET` request to `/users/:user_id` and returns the decoded/deserialized response body.
## create\_user
```perl
$api->create_user(
\%params,
);
```Sends a `POST` request to `/users`.
## edit\_user
```perl
$api->edit_user(
$user_id,
\%params,
);
```Sends a `PUT` request to `/users/:user_id`.
## delete\_user
```perl
my $user = $api->delete_user(
$user_id,
);
```Sends a `DELETE` request to `/users/:user_id` and returns the decoded/deserialized response body.
## current\_user
```perl
my $user = $api->current_user();
```Sends a `GET` request to `/user` and returns the decoded/deserialized response body.
## current\_user\_ssh\_keys
```perl
my $keys = $api->current_user_ssh_keys();
```Sends a `GET` request to `/user/keys` and returns the decoded/deserialized response body.
## user\_ssh\_keys
```perl
my $keys = $api->user_ssh_keys(
$user_id,
);
```Sends a `GET` request to `/users/:user_id/keys` and returns the decoded/deserialized response body.
## user\_ssh\_key
```perl
my $key = $api->user_ssh_key(
$key_id,
);
```Sends a `GET` request to `/user/keys/:key_id` and returns the decoded/deserialized response body.
## create\_current\_user\_ssh\_key
```perl
$api->create_current_user_ssh_key(
\%params,
);
```Sends a `POST` request to `/user/keys`.
## create\_user\_ssh\_key
```perl
$api->create_user_ssh_key(
$user_id,
\%params,
);
```Sends a `POST` request to `/users/:user_id/keys`.
## delete\_current\_user\_ssh\_key
```perl
$api->delete_current_user_ssh_key(
$key_id,
);
```Sends a `DELETE` request to `/user/keys/:key_id`.
## delete\_user\_ssh\_key
```perl
$api->delete_user_ssh_key(
$user_id,
$key_id,
);
```Sends a `DELETE` request to `/users/:user_id/keys/:key_id`.
# SEE ALSO
[Net::Gitlab](https://metacpan.org/pod/Net%3A%3AGitlab) purports to provide an interface to the GitLab API, but
it is hard to tell due to a complete lack of documentation via either
POD or unit tests.# SUPPORT
Please submit bugs and feature requests to the
GitLab-API-v3 GitHub issue tracker:[https://github.com/bluefeet/GitLab-API-v3/issues](https://github.com/bluefeet/GitLab-API-v3/issues)
Note that, due to the ["DEPRECATED"](#deprecated) nature of this distribution,
new features and such may be denied.# CONTRIBUTING
This module is auto-generated from a set of YAML files defining the
interface of GitLab's API. If you'd like to contribute to this module
then please feel free to make a
[fork on GitHub](https://github.com/bluefeet/GitLab-API-v3)
and submit a pull request, just make sure you edit the files in the
`authors/` directory instead of `lib/GitLab/API/v3.pm` directly.Please see
[https://github.com/bluefeet/GitLab-API-v3/blob/master/author/README.pod](https://github.com/bluefeet/GitLab-API-v3/blob/master/author/README.pod)
for more information.Alternatively, you can
[open a ticket](https://github.com/bluefeet/GitLab-API-v3/issues).# AUTHORS
```
Aran Clary Deltac
Dotan Dimet
Nigel Gregoire
trunov-ms
Marek R. Sotola
José Joaquín Atria
Dave Webb
```# ACKNOWLEDGEMENTS
Thanks to [ZipRecruiter](https://www.ziprecruiter.com/)
for encouraging their employees to contribute back to the open
source ecosystem. Without their dedication to quality software
development this distribution would not exist.# LICENSE
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.