{"id":15017574,"url":"https://github.com/bluefeet/gitlab-api-v3","last_synced_at":"2025-10-22T06:48:01.991Z","repository":{"id":23373520,"uuid":"26734898","full_name":"bluefeet/GitLab-API-v3","owner":"bluefeet","description":"A complete GitLab API v3 client. (DEPRECATED)","archived":true,"fork":false,"pushed_at":"2021-01-30T06:37:10.000Z","size":157,"stargazers_count":13,"open_issues_count":0,"forks_count":14,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-09-29T18:42:02.908Z","etag":null,"topics":["cpan","deprecated","perl5"],"latest_commit_sha":null,"homepage":"https://metacpan.org/pod/GitLab::API::v3","language":"Perl","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bluefeet.png","metadata":{"files":{"readme":"README.md","changelog":"Changes","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-11-17T01:31:38.000Z","updated_at":"2023-01-28T10:49:36.000Z","dependencies_parsed_at":"2022-08-28T23:30:30.134Z","dependency_job_id":null,"html_url":"https://github.com/bluefeet/GitLab-API-v3","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluefeet%2FGitLab-API-v3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluefeet%2FGitLab-API-v3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluefeet%2FGitLab-API-v3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluefeet%2FGitLab-API-v3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bluefeet","download_url":"https://codeload.github.com/bluefeet/GitLab-API-v3/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235198388,"owners_count":18951497,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpan","deprecated","perl5"],"created_at":"2024-09-24T19:50:42.144Z","updated_at":"2025-10-03T22:30:31.122Z","avatar_url":"https://github.com/bluefeet.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NAME\n\nGitLab::API::v3 - A complete GitLab API v3 client. (DEPRECATED)\n\n# SYNOPSIS\n\n```perl\nuse GitLab::API::v3;\n\nmy $api = GitLab::API::v3-\u003enew(\n    url   =\u003e $v3_api_url,\n    token =\u003e $token,\n);\n\nmy $branches = $api-\u003ebranches( $project_id );\n```\n\n## DEPRECATED\n\nThis module is at the end of it's life as the latest GitLab no longer supports\nthe v3 API.  Instead, use [GitLab::API::v4](https://metacpan.org/pod/GitLab%3A%3AAPI%3A%3Av4).\n\n# DESCRIPTION\n\nThis module provides a one-to-one interface with the GitLab\nAPI v3.  Much is not documented here as it would just be duplicating\nGitLab's own [API Documentation](http://doc.gitlab.com/ce/api/README.html).\n\nNote that this distribution also includes the [gitlab-api-v3](https://metacpan.org/pod/gitlab-api-v3) command-line\ninterface (CLI).\n\n# CREDENTIALS\n\nAuthentication credentials may be defined by setting either the [\"token\"](#token),\nthe [\"login\"](#login) and [\"password\"](#password), or the [\"email\"](#email) and [\"password\"](#password) arguments.\n\nWhen the object is constructed the [\"login\"](#login), [\"email\"](#email), and [\"password\"](#password)\narguments are used to call [\"session\"](#session) to generate a token.  The token is\nsaved in the [\"token\"](#token) attribute, and the login/email/password arguments\nare discarded.\n\nIf no credentials are supplied then the client will be anonymous and greatly\nlimited in what it can do with the API.\n\n## CONSTANTS\n\nSeveral values in the GitLab API require looking up the numeric value\nfor a meaning (such as `access_level` and `visibility_level`).\nInstead of doing that, you can use [GitLab::API::v3::Constants](https://metacpan.org/pod/GitLab%3A%3AAPI%3A%3Av3%3A%3AConstants).\n\n## EXCEPTIONS\n\nThe API methods will all throw (hopefully) a useful exception if\nan unsuccessful response is received from the API.  That is except for\n`GET` requests that return a `404` response - these will return `undef`\nfor methods that return a value.\n\nIf you'd like to catch and handle these exceptions consider using\n[Try::Tiny](https://metacpan.org/pod/Try%3A%3ATiny).\n\n## LOGGING\n\nThis module uses [Log::Any](https://metacpan.org/pod/Log%3A%3AAny) and produces some debug messages here\nand there, but the most useful bits are the info messages produced\njust before each API call.\n\n## PROJECT ID\n\nNote that many API calls require a `$project_id`.  This can be\nspecified as either a numeric project `ID`, or as a\n`NAMESPACE_PATH/PROJECT_PATH` in many cases.  Perhaps even\nall cases, but the GitLab documentation on this point is vague.\n\n## RETURN VALUES\n\nMany of this module's methods should return a value but do not\ncurrently.  This is due to the fact that this module was built\nas a strict representation of GitLab's own documentation which\nis often inconsistent.\n\nIf you find a method that should provide a return value, but\ndoesn't currently, please verify that GitLab actually does\nreturn a value and then submit a pull request or open an issue.\nSee [\"CONTRIBUTING\"](#contributing) for more info.\n\n# REQUIRED ARGUMENTS\n\n## url\n\nThe URL to your v3 API endpoint.  Typically this will be something\nlike `http://git.example.com/api/v3`.\n\n# OPTIONAL ARGUMENTS\n\n## token\n\nA GitLab API token.\nIf set then neither [\"login\"](#login) or [\"email\"](#email) may be set.\nRead more in [\"CREDENTIALS\"](#credentials).\n\n## login\n\nA GitLab user login name.\nIf set then [\"password\"](#password) must be set.\nRead more in [\"CREDENTIALS\"](#credentials).\n\n## email\n\nA GitLab user email.\nIf set then [\"password\"](#password) must be set.\nRead more in [\"CREDENTIALS\"](#credentials).\n\n## password\n\nA GitLab user password.\nThis must be set if either [\"login\"](#login) or [\"email\"](#email) are set.\nRead more in [\"CREDENTIALS\"](#credentials).\n\n## rest\\_client\n\nAn instance of [GitLab::API::v3::RESTClient](https://metacpan.org/pod/GitLab%3A%3AAPI%3A%3Av3%3A%3ARESTClient).  Typically you will not\nbe setting this as it defaults to a new instance and customization\nshould not be necessary.\n\n## retries\n\nThe number of times the request should be retried in case it does not succeed.\nDefaults to 0, meaning that a failed request will not be retried.\n\n# UTILITY METHODS\n\n## paginator\n\n```perl\nmy $paginator = $api-\u003epaginator( $method, @method_args );\n\nmy $members = $api-\u003epaginator('group_members', $group_id);\nwhile (my $member = $members-\u003enext()) {\n    ...\n}\n\nmy $users_pager = $api-\u003epaginator('users');\nwhile (my $users = $users_pager-\u003enext_page()) {\n    ...\n}\n\nmy $all_open_issues = $api-\u003epaginator(\n    'issues',\n    $project_id,\n    { state=\u003e'opened' },\n)-\u003eall();\n```\n\nGiven a method who supports the `page` and `per_page` parameters,\nand returns an array ref, this will return a [GitLab::API::v3::Paginator](https://metacpan.org/pod/GitLab%3A%3AAPI%3A%3Av3%3A%3APaginator)\nobject that will allow you to walk the records one page or one record\nat a time.\n\n# AWARD EMOJI METHODS\n\nSee [http://docs.gitlab.com/ce/api/award\\_emoji.html](http://docs.gitlab.com/ce/api/award_emoji.html).\n\n## issue\\_award\\_emojis\n\n```perl\nmy $award_emojis = $api-\u003eissue_award_emojis(\n    $id,\n    $issue_id,\n);\n```\n\nSends a `GET` request to `/projects/:id/issues/:issue_id/award_emoji` and returns the decoded/deserialized response body.\n\n## merge\\_request\\_award\\_emojis\n\n```perl\nmy $award_emojis = $api-\u003emerge_request_award_emojis(\n    $id,\n    $merge_request_id,\n);\n```\n\nSends a `GET` request to `/projects/:id/merge_requests/:merge_request_id/award_emoji` and returns the decoded/deserialized response body.\n\n## issue\\_award\\_emoji\n\n```perl\nmy $award_emoji = $api-\u003eissue_award_emoji(\n    $id,\n    $issue_id,\n    $award_id,\n);\n```\n\nSends a `GET` request to `/projects/:id/issues/:issue_id/award_emoji/:award_id` and returns the decoded/deserialized response body.\n\n## merge\\_request\\_award\\_emoji\n\n```perl\nmy $award_emoji = $api-\u003emerge_request_award_emoji(\n    $id,\n    $merge_request_id,\n    $award_id,\n);\n```\n\nSends a `GET` request to `/projects/:id/merge_requests/:merge_request_id/award_emoji/:award_id` and returns the decoded/deserialized response body.\n\n## create\\_issue\\_award\\_emoji\n\n```perl\nmy $award_emoji = $api-\u003ecreate_issue_award_emoji(\n    $id,\n    $issue_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:id/issues/:issue_id/award_emoji` and returns the decoded/deserialized response body.\n\n## create\\_merge\\_request\\_award\\_emoji\n\n```perl\nmy $award_emoji = $api-\u003ecreate_merge_request_award_emoji(\n    $id,\n    $merge_request_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:id/merge_requests/:merge_request_id/award_emoji` and returns the decoded/deserialized response body.\n\n## delete\\_issue\\_award\\_emoji\n\n```perl\nmy $award_emoji = $api-\u003edelete_issue_award_emoji(\n    $id,\n    $issue_id,\n    $award_id,\n);\n```\n\nSends a `DELETE` request to `/projects/:id/issues/:issue_id/award_emoji/:award_id` and returns the decoded/deserialized response body.\n\n## delete\\_merge\\_request\\_award\\_emoji\n\n```perl\nmy $award_emoji = $api-\u003edelete_merge_request_award_emoji(\n    $id,\n    $merge_request_id,\n    $award_id,\n);\n```\n\nSends a `DELETE` request to `/projects/:id/merge_requests/:merge_request_id/award_emoji/:award_id` and returns the decoded/deserialized response body.\n\n## issue\\_note\\_award\\_emojis\n\n```perl\nmy $award_emojis = $api-\u003eissue_note_award_emojis(\n    $id,\n    $issue_id,\n    $note_id,\n);\n```\n\nSends a `GET` request to `/projects/:id/issues/:issue_id/notes/:note_id/award_emoji` and returns the decoded/deserialized response body.\n\n## issue\\_note\\_award\\_emoji\n\n```perl\nmy $award_emoji = $api-\u003eissue_note_award_emoji(\n    $id,\n    $issue_id,\n    $note_id,\n    $award_id,\n);\n```\n\nSends a `GET` request to `/projects/:id/issues/:issue_id/notes/:note_id/award_emoji/:award_id` and returns the decoded/deserialized response body.\n\n## create\\_issue\\_note\\_award\\_emoji\n\n```perl\nmy $award_emoji = $api-\u003ecreate_issue_note_award_emoji(\n    $id,\n    $issue_id,\n    $note_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:id/issues/:issue_id/notes/:note_id/award_emoji` and returns the decoded/deserialized response body.\n\n## delete\\_issue\\_note\\_award\\_emoji\n\n```perl\nmy $award_emoji = $api-\u003edelete_issue_note_award_emoji(\n    $id,\n    $issue_id,\n    $note_id,\n    $award_id,\n);\n```\n\nSends a `DELETE` request to `/projects/:id/issues/:issue_id/notes/:note_id/award_emoji/:award_id` and returns the decoded/deserialized response body.\n\n## merge\\_request\\_note\\_award\\_emojis\n\n```perl\nmy $award_emojis = $api-\u003emerge_request_note_award_emojis(\n    $id,\n    $merge_request_id,\n    $note_id,\n);\n```\n\nSends a `GET` request to `/projects/:id/merge_requests/:merge_request_id/notes/:note_id/award_emoji` and returns the decoded/deserialized response body.\n\n## merge\\_request\\_note\\_award\\_emoji\n\n```perl\nmy $award_emoji = $api-\u003emerge_request_note_award_emoji(\n    $id,\n    $merge_request_id,\n    $note_id,\n    $award_id,\n);\n```\n\nSends 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.\n\n## create\\_merge\\_request\\_note\\_award\\_emoji\n\n```perl\nmy $award_emoji = $api-\u003ecreate_merge_request_note_award_emoji(\n    $id,\n    $merge_request_id,\n    $note_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:id/merge_requests/:merge_request_id/notes/:note_id/award_emoji` and returns the decoded/deserialized response body.\n\n## delete\\_merge\\_request\\_note\\_award\\_emoji\n\n```perl\nmy $award_emoji = $api-\u003edelete_merge_request_note_award_emoji(\n    $id,\n    $merge_request_id,\n    $note_id,\n    $award_id,\n);\n```\n\nSends 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.\n\n# BRANCH METHODS\n\nSee [http://doc.gitlab.com/ce/api/branches.html](http://doc.gitlab.com/ce/api/branches.html).\n\n## branches\n\n```perl\nmy $branches = $api-\u003ebranches(\n    $project_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/branches` and returns the decoded/deserialized response body.\n\n## branch\n\n```perl\nmy $branch = $api-\u003ebranch(\n    $project_id,\n    $branch_name,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/branches/:branch_name` and returns the decoded/deserialized response body.\n\n## protect\\_branch\n\n```\n$api-\u003eprotect_branch(\n    $project_id,\n    $branch_name,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id/repository/branches/:branch_name/protect`.\n\n## unprotect\\_branch\n\n```\n$api-\u003eunprotect_branch(\n    $project_id,\n    $branch_name,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id/repository/branches/:branch_name/unprotect`.\n\n## create\\_branch\n\n```perl\nmy $branch = $api-\u003ecreate_branch(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/repository/branches` and returns the decoded/deserialized response body.\n\n## delete\\_branch\n\n```\n$api-\u003edelete_branch(\n    $project_id,\n    $branch_name,\n);\n```\n\nSends a `DELETE` request to `/projects/:project_id/repository/branches/:branch_name`.\n\n# BUILD METHODS\n\nSee [http://docs.gitlab.com/ce/api/builds.html](http://docs.gitlab.com/ce/api/builds.html).\n\n## builds\n\n```perl\nmy $builds = $api-\u003ebuilds(\n    $id,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/:id/builds` and returns the decoded/deserialized response body.\n\n## commit\\_builds\n\n```perl\nmy $builds = $api-\u003ecommit_builds(\n    $id,\n    $sha,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/:id/repository/commits/:sha/builds` and returns the decoded/deserialized response body.\n\n## build\n\n```perl\nmy $build = $api-\u003ebuild(\n    $id,\n    $build_id,\n);\n```\n\nSends a `GET` request to `/projects/:id/builds/:build_id` and returns the decoded/deserialized response body.\n\n## build\\_artifacts\n\n```perl\nmy $artifacts = $api-\u003ebuild_artifacts(\n    $id,\n    $build_id,\n);\n```\n\nSends a `GET` request to `/projects/:id/builds/:build_id/artifacts` and returns the decoded/deserialized response body.\n\n## build\\_trace\n\n```perl\nmy $trace = $api-\u003ebuild_trace(\n    $id,\n    $build_id,\n);\n```\n\nSends a `GET` request to `/projects/:id/builds/:build_id/trace` and returns the decoded/deserialized response body.\n\n## cancel\\_build\n\n```perl\nmy $build = $api-\u003ecancel_build(\n    $id,\n    $build_id,\n);\n```\n\nSends a `POST` request to `/projects/:id/builds/:build_id/cancel` and returns the decoded/deserialized response body.\n\n## retry\\_build\n\n```perl\nmy $build = $api-\u003eretry_build(\n    $id,\n    $build_id,\n);\n```\n\nSends a `POST` request to `/projects/:id/builds/:build_id/retry` and returns the decoded/deserialized response body.\n\n## erase\\_build\n\n```perl\nmy $build = $api-\u003eerase_build(\n    $id,\n    $build_id,\n);\n```\n\nSends a `POST` request to `/projects/:id/builds/:build_id/erase` and returns the decoded/deserialized response body.\n\n## keep\\_build\\_artifacts\n\n```perl\nmy $build = $api-\u003ekeep_build_artifacts(\n    $id,\n    $build_id,\n);\n```\n\nSends a `POST` request to `/projects/:id/builds/:build_id/artifacts/keep` and returns the decoded/deserialized response body.\n\n# BUILD TRIGGER METHODS\n\nSee [http://docs.gitlab.com/ce/api/build\\_triggers.html](http://docs.gitlab.com/ce/api/build_triggers.html).\n\n## triggers\n\n```perl\nmy $triggers = $api-\u003etriggers(\n    $id,\n);\n```\n\nSends a `GET` request to `/projects/:id/triggers` and returns the decoded/deserialized response body.\n\n## trigger\n\n```perl\nmy $trigger = $api-\u003etrigger(\n    $id,\n    $token,\n);\n```\n\nSends a `GET` request to `/projects/:id/triggers/:token` and returns the decoded/deserialized response body.\n\n## create\\_trigger\n\n```perl\nmy $trigger = $api-\u003ecreate_trigger(\n    $id,\n);\n```\n\nSends a `POST` request to `/projects/:id/triggers` and returns the decoded/deserialized response body.\n\n## delete\\_trigger\n\n```perl\nmy $trigger = $api-\u003edelete_trigger(\n    $id,\n    $token,\n);\n```\n\nSends a `DELETE` request to `/projects/:id/triggers/:token` and returns the decoded/deserialized response body.\n\n# BUILD VARIABLE METHODS\n\nSee [http://docs.gitlab.com/ce/api/build\\_variables.html](http://docs.gitlab.com/ce/api/build_variables.html).\n\n## variables\n\n```perl\nmy $variables = $api-\u003evariables(\n    $id,\n);\n```\n\nSends a `GET` request to `/projects/:id/variables` and returns the decoded/deserialized response body.\n\n## variable\n\n```perl\nmy $variable = $api-\u003evariable(\n    $id,\n    $key,\n);\n```\n\nSends a `GET` request to `/projects/:id/variables/:key` and returns the decoded/deserialized response body.\n\n## create\\_variable\n\n```perl\nmy $variable = $api-\u003ecreate_variable(\n    $id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:id/variables` and returns the decoded/deserialized response body.\n\n## update\\_variable\n\n```perl\nmy $variable = $api-\u003eupdate_variable(\n    $id,\n    $key,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:id/variables/:key` and returns the decoded/deserialized response body.\n\n## delete\\_variable\n\n```perl\nmy $variable = $api-\u003edelete_variable(\n    $id,\n    $key,\n);\n```\n\nSends a `DELETE` request to `/projects/:id/variables/:key` and returns the decoded/deserialized response body.\n\n# COMMIT METHODS\n\nSee [http://doc.gitlab.com/ce/api/commits.html](http://doc.gitlab.com/ce/api/commits.html).\n\n## commits\n\n```perl\nmy $commits = $api-\u003ecommits(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/commits` and returns the decoded/deserialized response body.\n\n## commit\n\n```perl\nmy $commit = $api-\u003ecommit(\n    $project_id,\n    $commit_sha,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/commits/:commit_sha` and returns the decoded/deserialized response body.\n\n## commit\\_diff\n\n```perl\nmy $diff = $api-\u003ecommit_diff(\n    $project_id,\n    $commit_sha,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/commits/:commit_sha/diff` and returns the decoded/deserialized response body.\n\n## commit\\_comments\n\n```perl\nmy $comments = $api-\u003ecommit_comments(\n    $project_id,\n    $commit_sha,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/commits/:commit_sha/comments` and returns the decoded/deserialized response body.\n\n## add\\_commit\\_comment\n\n```\n$api-\u003eadd_commit_comment(\n    $project_id,\n    $commit_sha,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/repository/commits/:commit_sha/comments`.\n\n# DEPLOY KEY METHODS\n\nSee [http://doc.gitlab.com/ce/api/deploy\\_keys.html](http://doc.gitlab.com/ce/api/deploy_keys.html).\n\n## deploy\\_keys\n\n```perl\nmy $keys = $api-\u003edeploy_keys(\n    $project_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/keys` and returns the decoded/deserialized response body.\n\n## deploy\\_key\n\n```perl\nmy $key = $api-\u003edeploy_key(\n    $project_id,\n    $key_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/keys/:key_id` and returns the decoded/deserialized response body.\n\n## create\\_deploy\\_key\n\n```\n$api-\u003ecreate_deploy_key(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/keys`.\n\n## delete\\_deploy\\_key\n\n```\n$api-\u003edelete_deploy_key(\n    $project_id,\n    $key_id,\n);\n```\n\nSends a `DELETE` request to `/projects/:project_id/keys/:key_id`.\n\n# GROUP METHODS\n\nSee [http://doc.gitlab.com/ce/api/groups.html](http://doc.gitlab.com/ce/api/groups.html).\n\n## groups\n\n```perl\nmy $groups = $api-\u003egroups();\n```\n\nSends a `GET` request to `/groups` and returns the decoded/deserialized response body.\n\n## group\n\n```perl\nmy $group = $api-\u003egroup(\n    $group_id,\n);\n```\n\nSends a `GET` request to `/groups/:group_id` and returns the decoded/deserialized response body.\n\n## create\\_group\n\n```\n$api-\u003ecreate_group(\n    \\%params,\n);\n```\n\nSends a `POST` request to `/groups`.\n\n## transfer\\_project\n\n```\n$api-\u003etransfer_project(\n    $group_id,\n    $project_id,\n);\n```\n\nSends a `POST` request to `/groups/:group_id/projects/:project_id`.\n\n## delete\\_group\n\n```\n$api-\u003edelete_group(\n    $group_id,\n);\n```\n\nSends a `DELETE` request to `/groups/:group_id`.\n\n## search\\_groups\n\n```perl\nmy $groups = $api-\u003esearch_groups(\n    \\%params,\n);\n```\n\nSends a `GET` request to `/groups` and returns the decoded/deserialized response body.\n\n## group\\_members\n\n```perl\nmy $members = $api-\u003egroup_members(\n    $group_id,\n);\n```\n\nSends a `GET` request to `/groups/:group_id/members` and returns the decoded/deserialized response body.\n\n## group\\_projects\n\n```perl\nmy $projects = $api-\u003egroup_projects(\n    $group_id,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/groups/:group_id/projects` and returns the decoded/deserialized response body.\n\n## add\\_group\\_member\n\n```\n$api-\u003eadd_group_member(\n    $group_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/groups/:group_id/members`.\n\n## edit\\_group\\_member\n\n```perl\n$api-\u003eedit_group_member(\n    $group_id,\n    $user_id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/groups/:group_id/members/:user_id`.\n\n## remove\\_group\\_member\n\n```perl\n$api-\u003eremove_group_member(\n    $group_id,\n    $user_id,\n);\n```\n\nSends a `DELETE` request to `/groups/:group_id/members/:user_id`.\n\n# ISSUE METHODS\n\nSee [http://doc.gitlab.com/ce/api/issues.html](http://doc.gitlab.com/ce/api/issues.html).\n\n## all\\_issues\n\n```perl\nmy $issues = $api-\u003eall_issues(\n    \\%params,\n);\n```\n\nSends a `GET` request to `/issues` and returns the decoded/deserialized response body.\n\n## issues\n\n```perl\nmy $issues = $api-\u003eissues(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/issues` and returns the decoded/deserialized response body.\n\n## issue\n\n```perl\nmy $issue = $api-\u003eissue(\n    $project_id,\n    $issue_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/issues/:issue_id` and returns the decoded/deserialized response body.\n\n## create\\_issue\n\n```perl\nmy $issue = $api-\u003ecreate_issue(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/issues` and returns the decoded/deserialized response body.\n\n## edit\\_issue\n\n```perl\nmy $issue = $api-\u003eedit_issue(\n    $project_id,\n    $issue_id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id/issues/:issue_id` and returns the decoded/deserialized response body.\n\n# KEY METHODS\n\nSee [http://docs.gitlab.com/ce/api/keys.html](http://docs.gitlab.com/ce/api/keys.html).\n\n## key\n\n```perl\nmy $key = $api-\u003ekey(\n    $key_id,\n);\n```\n\nSends a `GET` request to `/keys/:key_id` and returns the decoded/deserialized response body.\n\n# LABEL METHODS\n\nSee [http://doc.gitlab.com/ce/api/labels.html](http://doc.gitlab.com/ce/api/labels.html).\n\n## labels\n\n```perl\nmy $labels = $api-\u003elabels(\n    $project_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/labels` and returns the decoded/deserialized response body.\n\n## create\\_label\n\n```perl\nmy $label = $api-\u003ecreate_label(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/labels` and returns the decoded/deserialized response body.\n\n## delete\\_label\n\n```\n$api-\u003edelete_label(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `DELETE` request to `/projects/:project_id/labels`.\n\n## edit\\_label\n\n```perl\nmy $label = $api-\u003eedit_label(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id/labels` and returns the decoded/deserialized response body.\n\n# MERGE REQUEST METHODS\n\nSee [http://doc.gitlab.com/ce/api/merge\\_requests.html](http://doc.gitlab.com/ce/api/merge_requests.html).\n\n## merge\\_requests\n\n```perl\nmy $merge_requests = $api-\u003emerge_requests(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/merge_requests` and returns the decoded/deserialized response body.\n\n## merge\\_request\n\n```perl\nmy $merge_request = $api-\u003emerge_request(\n    $project_id,\n    $merge_request_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/merge_request/:merge_request_id` and returns the decoded/deserialized response body.\n\n## create\\_merge\\_request\n\n```perl\nmy $merge_request = $api-\u003ecreate_merge_request(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/merge_requests` and returns the decoded/deserialized response body.\n\n## edit\\_merge\\_request\n\n```perl\nmy $merge_request = $api-\u003eedit_merge_request(\n    $project_id,\n    $merge_request_id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id/merge_requests/:merge_request_id` and returns the decoded/deserialized response body.\n\n## accept\\_merge\\_request\n\n```\n$api-\u003eaccept_merge_request(\n    $project_id,\n    $merge_request_id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id/merge_requests/:merge_request_id/merge`.\n\n## add\\_merge\\_request\\_comment\n\n```\n$api-\u003eadd_merge_request_comment(\n    $project_id,\n    $merge_request_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/merge_requests/:merge_request_id/comments`.\n\n## merge\\_request\\_comments\n\n```perl\nmy $comments = $api-\u003emerge_request_comments(\n    $project_id,\n    $merge_request_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/merge_requests/:merge_request_id/comments` and returns the decoded/deserialized response body.\n\n# MILESTONE METHODS\n\nSee [http://doc.gitlab.com/ce/api/milestones.html](http://doc.gitlab.com/ce/api/milestones.html).\n\n## milestones\n\n```perl\nmy $milestones = $api-\u003emilestones(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/milestones` and returns the decoded/deserialized response body.\n\n## milestone\n\n```perl\nmy $milestone = $api-\u003emilestone(\n    $project_id,\n    $milestone_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/milestones/:milestone_id` and returns the decoded/deserialized response body.\n\n## create\\_milestone\n\n```\n$api-\u003ecreate_milestone(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/milestones`.\n\n## edit\\_milestone\n\n```\n$api-\u003eedit_milestone(\n    $project_id,\n    $milestone_id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id/milestones/:milestone_id`.\n\n## milestone\\_issues\n\n```perl\nmy $issues = $api-\u003emilestone_issues(\n    $project_id,\n    $milestone_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/milestones/:milestone_id/issues` and returns the decoded/deserialized response body.\n\n# OPEN SOURCE LICENSES METHODS\n\nSee [http://docs.gitlab.com/ce/api/licenses.html](http://docs.gitlab.com/ce/api/licenses.html).\n\n## licenses\n\n```perl\nmy $licenses = $api-\u003elicenses(\n    \\%params,\n);\n```\n\nSends a `GET` request to `/licenses` and returns the decoded/deserialized response body.\n\n## license\n\n```perl\nmy $license = $api-\u003elicense(\n    $license_key,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/licenses/:license_key` and returns the decoded/deserialized response body.\n\n# NAMESPACE METHODS\n\nSee [http://docs.gitlab.com/ce/api/namespaces.html](http://docs.gitlab.com/ce/api/namespaces.html).\n\n## namespaces\n\n```perl\nmy $namespaces = $api-\u003enamespaces(\n    \\%params,\n);\n```\n\nSends a `GET` request to `/namespaces` and returns the decoded/deserialized response body.\n\n# NOTE METHODS\n\nSee [http://doc.gitlab.com/ce/api/notes.html](http://doc.gitlab.com/ce/api/notes.html).\n\n## notes\n\n```perl\nmy $notes = $api-\u003enotes(\n    $project_id,\n    $thing_type,\n    $thing_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/:thing_type/:thing_id/notes` and returns the decoded/deserialized response body.\n\n## note\n\n```perl\nmy $note = $api-\u003enote(\n    $project_id,\n    $thing_type,\n    $thing_id,\n    $note_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/:thing_type/:thing_id/notes/:note_id` and returns the decoded/deserialized response body.\n\n## create\\_note\n\n```\n$api-\u003ecreate_note(\n    $project_id,\n    $thing_type,\n    $thing_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/:thing_type/:thing_id/notes`.\n\n## edit\\_note\n\n```\n$api-\u003eedit_note(\n    $project_id,\n    $thing_type,\n    $thing_id,\n    $note_id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id/:thing_type/:thing_id/notes/:note_id`.\n\n# PROJECT METHODS\n\nSee [http://doc.gitlab.com/ce/api/projects.html](http://doc.gitlab.com/ce/api/projects.html).\n\n## projects\n\n```perl\nmy $projects = $api-\u003eprojects(\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects` and returns the decoded/deserialized response body.\n\n## owned\\_projects\n\n```perl\nmy $projects = $api-\u003eowned_projects(\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/owned` and returns the decoded/deserialized response body.\n\n## all\\_projects\n\n```perl\nmy $projects = $api-\u003eall_projects(\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/all` and returns the decoded/deserialized response body.\n\n## project\n\n```perl\nmy $project = $api-\u003eproject(\n    $project_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id` and returns the decoded/deserialized response body.\n\n## project\\_events\n\n```perl\nmy $events = $api-\u003eproject_events(\n    $project_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/events` and returns the decoded/deserialized response body.\n\n## create\\_project\n\n```perl\nmy $project = $api-\u003ecreate_project(\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects` and returns the decoded/deserialized response body.\n\n## create\\_project\\_for\\_user\n\n```perl\n$api-\u003ecreate_project_for_user(\n    $user_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/user/:user_id`.\n\n## edit\\_project\n\n```perl\nmy $project = $api-\u003eedit_project(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id` and returns the decoded/deserialized response body.\n\n## fork\\_project\n\n```\n$api-\u003efork_project(\n    $project_id,\n);\n```\n\nSends a `POST` request to `/pojects/fork/:project_id`.\n\n## delete\\_project\n\n```\n$api-\u003edelete_project(\n    $project_id,\n);\n```\n\nSends a `DELETE` request to `/projects/:project_id`.\n\n## project\\_members\n\n```perl\nmy $members = $api-\u003eproject_members(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/members` and returns the decoded/deserialized response body.\n\n## project\\_member\n\n```perl\nmy $member = $api-\u003eproject_member(\n    $project_id,\n    $user_id,\n);\n```\n\nSends a `GET` request to `/project/:project_id/members/:user_id` and returns the decoded/deserialized response body.\n\n## add\\_project\\_member\n\n```\n$api-\u003eadd_project_member(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/members`.\n\n## edit\\_project\\_member\n\n```perl\n$api-\u003eedit_project_member(\n    $project_id,\n    $user_id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id/members/:user_id`.\n\n## remove\\_project\\_member\n\n```perl\n$api-\u003eremove_project_member(\n    $project_id,\n    $user_id,\n);\n```\n\nSends a `DELETE` request to `/projects/:project_id/members/:user_id`.\n\n## share\\_project\\_with\\_group\n\n```\n$api-\u003eshare_project_with_group(\n    $id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:id/share`.\n\n## delete\\_shared\\_project\\_link\\_within\\_group\n\n```\n$api-\u003edelete_shared_project_link_within_group(\n    $id,\n    $group_id,\n);\n```\n\nSends a `DELETE` request to `/projects/:id/share/:group_id`.\n\n## project\\_hooks\n\n```perl\nmy $hooks = $api-\u003eproject_hooks(\n    $project_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/hooks` and returns the decoded/deserialized response body.\n\n## project\\_hook\n\n```perl\nmy $hook = $api-\u003eproject_hook(\n    $project_id,\n    $hook_id,\n);\n```\n\nSends a `GET` request to `/project/:project_id/hooks/:hook_id` and returns the decoded/deserialized response body.\n\n## create\\_project\\_hook\n\n```\n$api-\u003ecreate_project_hook(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/hooks`.\n\n## edit\\_project\\_hook\n\n```\n$api-\u003eedit_project_hook(\n    $project_id,\n    $hook_id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id/hooks/:hook_id`.\n\n## delete\\_project\\_hook\n\n```perl\nmy $hook = $api-\u003edelete_project_hook(\n    $project_id,\n    $hook_id,\n);\n```\n\nSends a `DELETE` request to `/projects/:project_id/hooks/:hook_id` and returns the decoded/deserialized response body.\n\n## set\\_project\\_fork\n\n```\n$api-\u003eset_project_fork(\n    $project_id,\n    $forked_from_id,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/fork/:forked_from_id`.\n\n## clear\\_project\\_fork\n\n```\n$api-\u003eclear_project_fork(\n    $project_id,\n);\n```\n\nSends a `DELETE` request to `/projects/:project_id/fork`.\n\n## search\\_projects\\_by\\_name\n\n```perl\nmy $projects = $api-\u003esearch_projects_by_name(\n    $query,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/search/:query` and returns the decoded/deserialized response body.\n\n# PROJECT SNIPPET METHODS\n\nSee [http://doc.gitlab.com/ce/api/project\\_snippets.html](http://doc.gitlab.com/ce/api/project_snippets.html).\n\n## snippets\n\n```perl\nmy $snippets = $api-\u003esnippets(\n    $project_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/snippets` and returns the decoded/deserialized response body.\n\n## snippet\n\n```perl\nmy $snippet = $api-\u003esnippet(\n    $project_id,\n    $snippet_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/snippets/:snippet_id` and returns the decoded/deserialized response body.\n\n## create\\_snippet\n\n```\n$api-\u003ecreate_snippet(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/snippets`.\n\n## edit\\_snippet\n\n```\n$api-\u003eedit_snippet(\n    $project_id,\n    $snippet_id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id/snippets/:snippet_id`.\n\n## delete\\_snippet\n\n```\n$api-\u003edelete_snippet(\n    $project_id,\n    $snippet_id,\n);\n```\n\nSends a `DELETE` request to `/projects/:project_id/snippets/:snippet_id`.\n\n## snippet\\_content\n\n```perl\nmy $content = $api-\u003esnippet_content(\n    $project_id,\n    $snippet_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/snippets/:snippet_id/raw` and returns the decoded/deserialized response body.\n\n# REPOSITORY METHODS\n\nSee [http://doc.gitlab.com/ce/api/repositories.html](http://doc.gitlab.com/ce/api/repositories.html).\n\n## tree\n\n```perl\nmy $tree = $api-\u003etree(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/tree` and returns the decoded/deserialized response body.\n\n## blob\n\n```perl\nmy $blob = $api-\u003eblob(\n    $project_id,\n    $ref,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/blobs/:ref` and returns the decoded/deserialized response body.\n\n## raw\\_blob\n\n```perl\nmy $raw_blob = $api-\u003eraw_blob(\n    $project_id,\n    $blob_sha,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/raw_blobs/:blob_sha` and returns the decoded/deserialized response body.\n\n## archive\n\n```perl\nmy $archive = $api-\u003earchive(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/archive` and returns the decoded/deserialized response body.\n\n## compare\n\n```perl\nmy $comparison = $api-\u003ecompare(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/compare` and returns the decoded/deserialized response body.\n\n## contributors\n\n```perl\nmy $contributors = $api-\u003econtributors(\n    $project_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/contributors` and returns the decoded/deserialized response body.\n\n# FILE METHODS\n\nSee [http://doc.gitlab.com/ce/api/repository\\_files.html](http://doc.gitlab.com/ce/api/repository_files.html).\n\n## file\n\n```perl\nmy $file = $api-\u003efile(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/files` and returns the decoded/deserialized response body.\n\n## create\\_file\n\n```\n$api-\u003ecreate_file(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/repository/files`.\n\n## edit\\_file\n\n```\n$api-\u003eedit_file(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id/repository/files`.\n\n## delete\\_file\n\n```\n$api-\u003edelete_file(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `DELETE` request to `/projects/:project_id/repository/files`.\n\n# RUNNER METHODS\n\nSee [http://docs.gitlab.com/ce/api/runners.html](http://docs.gitlab.com/ce/api/runners.html).\n\n## runners\n\n```perl\nmy $runners = $api-\u003erunners(\n    \\%params,\n);\n```\n\nSends a `GET` request to `/runners` and returns the decoded/deserialized response body.\n\n## all\\_runners\n\n```perl\nmy $runners = $api-\u003eall_runners(\n    \\%params,\n);\n```\n\nSends a `GET` request to `/runners/all` and returns the decoded/deserialized response body.\n\n## runner\n\n```perl\nmy $runner = $api-\u003erunner(\n    $id,\n);\n```\n\nSends a `GET` request to `/runners/:id` and returns the decoded/deserialized response body.\n\n## update\\_runner\n\n```perl\nmy $runner = $api-\u003eupdate_runner(\n    $id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/runners/:id` and returns the decoded/deserialized response body.\n\n## delete\\_runner\n\n```perl\nmy $runner = $api-\u003edelete_runner(\n    $id,\n);\n```\n\nSends a `DELETE` request to `/runners/:id` and returns the decoded/deserialized response body.\n\n## project\\_runners\n\n```perl\nmy $runners = $api-\u003eproject_runners(\n    $id,\n);\n```\n\nSends a `GET` request to `/projects/:id/runners` and returns the decoded/deserialized response body.\n\n## enable\\_project\\_runner\n\n```perl\nmy $runner = $api-\u003eenable_project_runner(\n    $id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:id/runners` and returns the decoded/deserialized response body.\n\n## disable\\_project\\_runner\n\n```perl\nmy $runner = $api-\u003edisable_project_runner(\n    $id,\n    $runner_id,\n);\n```\n\nSends a `DELETE` request to `/projects/:id/runners/:runner_id` and returns the decoded/deserialized response body.\n\n# SERVICE METHODS\n\nSee [http://doc.gitlab.com/ce/api/services.html](http://doc.gitlab.com/ce/api/services.html).\n\n## edit\\_project\\_service\n\n```\n$api-\u003eedit_project_service(\n    $project_id,\n    $service_name,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id/services/:service_name`.\n\n## delete\\_project\\_service\n\n```\n$api-\u003edelete_project_service(\n    $project_id,\n    $service_name,\n);\n```\n\nSends a `DELETE` request to `/projects/:project_id/services/:service_name`.\n\n# SESSION METHODS\n\nSee [http://doc.gitlab.com/ce/api/session.html](http://doc.gitlab.com/ce/api/session.html).\n\n## session\n\n```perl\nmy $session = $api-\u003esession(\n    \\%params,\n);\n```\n\nSends a `POST` request to `/session` and returns the decoded/deserialized response body.\n\n# SETTINGS METHODS\n\nSee [http://docs.gitlab.com/ce/api/settings.html](http://docs.gitlab.com/ce/api/settings.html).\n\n## settings\n\n```perl\nmy $settings = $api-\u003esettings();\n```\n\nSends a `GET` request to `/application/settings` and returns the decoded/deserialized response body.\n\n## update\\_settings\n\n```perl\nmy $settings = $api-\u003eupdate_settings(\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/application/settings` and returns the decoded/deserialized response body.\n\n# SIDEKIQ METHODS\n\nSee [http://docs.gitlab.com/ce/api/sidekiq\\_metrics.html](http://docs.gitlab.com/ce/api/sidekiq_metrics.html).\n\n## queue\\_metrics\n\n```perl\nmy $metrics = $api-\u003equeue_metrics();\n```\n\nSends a `GET` request to `/sidekiq/queue_metrics` and returns the decoded/deserialized response body.\n\n## process\\_metrics\n\n```perl\nmy $metrics = $api-\u003eprocess_metrics();\n```\n\nSends a `GET` request to `/sidekiq/process_metrics` and returns the decoded/deserialized response body.\n\n## job\\_stats\n\n```perl\nmy $stats = $api-\u003ejob_stats();\n```\n\nSends a `GET` request to `/sidekiq/job_stats` and returns the decoded/deserialized response body.\n\n## compound\\_metrics\n\n```perl\nmy $metrics = $api-\u003ecompound_metrics();\n```\n\nSends a `GET` request to `/sidekiq/compound_metrics` and returns the decoded/deserialized response body.\n\n# USER SNIPPET METHODS\n\nSee [http://docs.gitlab.com/ce/api/snippets.html](http://docs.gitlab.com/ce/api/snippets.html).\n\n## user\\_snippets\n\n```perl\nmy $snippets = $api-\u003euser_snippets();\n```\n\nSends a `GET` request to `/snippets` and returns the decoded/deserialized response body.\n\n## user\\_snippet\n\n```perl\nmy $snippet = $api-\u003euser_snippet(\n    $snippet_id,\n);\n```\n\nSends a `GET` request to `/snippets/:snippet_id` and returns the decoded/deserialized response body.\n\n## create\\_user\\_snippet\n\n```perl\n$api-\u003ecreate_user_snippet(\n    \\%params,\n);\n```\n\nSends a `POST` request to `/snippets`.\n\n## edit\\_user\\_snippet\n\n```perl\n$api-\u003eedit_user_snippet(\n    $snippet_id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/snippets/:snippet_id`.\n\n## delete\\_user\\_snippet\n\n```perl\n$api-\u003edelete_user_snippet(\n    $snippet_id,\n);\n```\n\nSends a `DELETE` request to `/snippets/:snippet_id`.\n\n## public\\_snippets\n\n```perl\nmy $snippets = $api-\u003epublic_snippets();\n```\n\nSends a `GET` request to `/snippets/public` and returns the decoded/deserialized response body.\n\n# SYSTEM HOOK METHODS\n\nSee [http://doc.gitlab.com/ce/api/system\\_hooks.html](http://doc.gitlab.com/ce/api/system_hooks.html).\n\n## hooks\n\n```perl\nmy $hooks = $api-\u003ehooks();\n```\n\nSends a `GET` request to `/hooks` and returns the decoded/deserialized response body.\n\n## create\\_hook\n\n```\n$api-\u003ecreate_hook(\n    \\%params,\n);\n```\n\nSends a `POST` request to `/hooks`.\n\n## test\\_hook\n\n```perl\nmy $hook = $api-\u003etest_hook(\n    $hook_id,\n);\n```\n\nSends a `GET` request to `/hooks/:hook_id` and returns the decoded/deserialized response body.\n\n## delete\\_hook\n\n```\n$api-\u003edelete_hook(\n    $hook_id,\n);\n```\n\nSends a `DELETE` request to `/hooks/:hook_id`.\n\n# TAG METHODS\n\nSee [http://docs.gitlab.com/ce/api/tags.html](http://docs.gitlab.com/ce/api/tags.html).\n\n## tags\n\n```perl\nmy $tags = $api-\u003etags(\n    $project_id,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/tags` and returns the decoded/deserialized response body.\n\n## tag\n\n```perl\nmy $tag = $api-\u003etag(\n    $project_id,\n    $tag_name,\n);\n```\n\nSends a `GET` request to `/projects/:project_id/repository/tags/:tag_name` and returns the decoded/deserialized response body.\n\n## create\\_tag\n\n```perl\nmy $tag = $api-\u003ecreate_tag(\n    $project_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/repository/tags` and returns the decoded/deserialized response body.\n\n## delete\\_tag\n\n```\n$api-\u003edelete_tag(\n    $project_id,\n    $tag_name,\n);\n```\n\nSends a `DELETE` request to `/projects/:project_id/repository/tags/:tag_name`.\n\n## create\\_release\n\n```\n$api-\u003ecreate_release(\n    $project_id,\n    $tag_name,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/projects/:project_id/repository/tags/:tag_name/release`.\n\n## update\\_release\n\n```\n$api-\u003eupdate_release(\n    $project_id,\n    $tag_name,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/projects/:project_id/repository/tags/:tag_name/release`.\n\n# USER METHODS\n\nSee [http://doc.gitlab.com/ce/api/users.html](http://doc.gitlab.com/ce/api/users.html).\n\n## users\n\n```perl\nmy $users = $api-\u003eusers(\n    \\%params,\n);\n```\n\nSends a `GET` request to `/users` and returns the decoded/deserialized response body.\n\n## user\n\n```perl\nmy $user = $api-\u003euser(\n    $user_id,\n);\n```\n\nSends a `GET` request to `/users/:user_id` and returns the decoded/deserialized response body.\n\n## create\\_user\n\n```perl\n$api-\u003ecreate_user(\n    \\%params,\n);\n```\n\nSends a `POST` request to `/users`.\n\n## edit\\_user\n\n```perl\n$api-\u003eedit_user(\n    $user_id,\n    \\%params,\n);\n```\n\nSends a `PUT` request to `/users/:user_id`.\n\n## delete\\_user\n\n```perl\nmy $user = $api-\u003edelete_user(\n    $user_id,\n);\n```\n\nSends a `DELETE` request to `/users/:user_id` and returns the decoded/deserialized response body.\n\n## current\\_user\n\n```perl\nmy $user = $api-\u003ecurrent_user();\n```\n\nSends a `GET` request to `/user` and returns the decoded/deserialized response body.\n\n## current\\_user\\_ssh\\_keys\n\n```perl\nmy $keys = $api-\u003ecurrent_user_ssh_keys();\n```\n\nSends a `GET` request to `/user/keys` and returns the decoded/deserialized response body.\n\n## user\\_ssh\\_keys\n\n```perl\nmy $keys = $api-\u003euser_ssh_keys(\n    $user_id,\n);\n```\n\nSends a `GET` request to `/users/:user_id/keys` and returns the decoded/deserialized response body.\n\n## user\\_ssh\\_key\n\n```perl\nmy $key = $api-\u003euser_ssh_key(\n    $key_id,\n);\n```\n\nSends a `GET` request to `/user/keys/:key_id` and returns the decoded/deserialized response body.\n\n## create\\_current\\_user\\_ssh\\_key\n\n```perl\n$api-\u003ecreate_current_user_ssh_key(\n    \\%params,\n);\n```\n\nSends a `POST` request to `/user/keys`.\n\n## create\\_user\\_ssh\\_key\n\n```perl\n$api-\u003ecreate_user_ssh_key(\n    $user_id,\n    \\%params,\n);\n```\n\nSends a `POST` request to `/users/:user_id/keys`.\n\n## delete\\_current\\_user\\_ssh\\_key\n\n```perl\n$api-\u003edelete_current_user_ssh_key(\n    $key_id,\n);\n```\n\nSends a `DELETE` request to `/user/keys/:key_id`.\n\n## delete\\_user\\_ssh\\_key\n\n```perl\n$api-\u003edelete_user_ssh_key(\n    $user_id,\n    $key_id,\n);\n```\n\nSends a `DELETE` request to `/users/:user_id/keys/:key_id`.\n\n# SEE ALSO\n\n[Net::Gitlab](https://metacpan.org/pod/Net%3A%3AGitlab) purports to provide an interface to the GitLab API, but\nit is hard to tell due to a complete lack of documentation via either\nPOD or unit tests.\n\n# SUPPORT\n\nPlease submit bugs and feature requests to the\nGitLab-API-v3 GitHub issue tracker:\n\n[https://github.com/bluefeet/GitLab-API-v3/issues](https://github.com/bluefeet/GitLab-API-v3/issues)\n\nNote that, due to the [\"DEPRECATED\"](#deprecated) nature of this distribution,\nnew features and such may be denied.\n\n# CONTRIBUTING\n\nThis module is auto-generated from a set of YAML files defining the\ninterface of GitLab's API.  If you'd like to contribute to this module\nthen please feel free to make a\n[fork on GitHub](https://github.com/bluefeet/GitLab-API-v3)\nand submit a pull request, just make sure you edit the files in the\n`authors/` directory instead of `lib/GitLab/API/v3.pm` directly.\n\nPlease see\n[https://github.com/bluefeet/GitLab-API-v3/blob/master/author/README.pod](https://github.com/bluefeet/GitLab-API-v3/blob/master/author/README.pod)\nfor more information.\n\nAlternatively, you can\n[open a ticket](https://github.com/bluefeet/GitLab-API-v3/issues).\n\n# AUTHORS\n\n```\nAran Clary Deltac \u003cbluefeet@gmail.com\u003e\nDotan Dimet \u003cdotan@corky.net\u003e\nNigel Gregoire \u003cnigelgregoire@gmail.com\u003e\ntrunov-ms \u003ctrunov.ms@gmail.com\u003e\nMarek R. Sotola \u003cMarek.R.Sotola@nasa.gov\u003e\nJosé Joaquín Atria \u003cjjatria@gmail.com\u003e\nDave Webb \u003cgithub@d5ve.com\u003e\n```\n\n# ACKNOWLEDGEMENTS\n\nThanks to [ZipRecruiter](https://www.ziprecruiter.com/)\nfor encouraging their employees to contribute back to the open\nsource ecosystem.  Without their dedication to quality software\ndevelopment this distribution would not exist.\n\n# LICENSE\n\nThis library is free software; you can redistribute it and/or modify\nit under the same terms as Perl itself.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluefeet%2Fgitlab-api-v3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbluefeet%2Fgitlab-api-v3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluefeet%2Fgitlab-api-v3/lists"}