{"id":15017462,"url":"https://github.com/bluefeet/gitlab-api-v4","last_synced_at":"2026-03-12T17:25:20.619Z","repository":{"id":20656794,"uuid":"90537320","full_name":"bluefeet/GitLab-API-v4","owner":"bluefeet","description":"A complete GitLab API v4 client.","archived":false,"fork":false,"pushed_at":"2024-05-15T00:00:35.000Z","size":908,"stargazers_count":20,"open_issues_count":9,"forks_count":23,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-23T21:45:42.330Z","etag":null,"topics":["cpan","perl5"],"latest_commit_sha":null,"homepage":"https://metacpan.org/pod/GitLab::API::v4","language":"Perl","has_issues":true,"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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-07T14:11:47.000Z","updated_at":"2024-10-28T20:10:42.000Z","dependencies_parsed_at":"2024-06-18T21:28:05.571Z","dependency_job_id":"47abceab-7988-4264-a7d1-ab66faf00dec","html_url":"https://github.com/bluefeet/GitLab-API-v4","commit_stats":{"total_commits":251,"total_committers":20,"mean_commits":12.55,"dds":"0.14741035856573703","last_synced_commit":"4f31181771706c5c680f2b91aa66992898899c85"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluefeet%2FGitLab-API-v4","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluefeet%2FGitLab-API-v4/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluefeet%2FGitLab-API-v4/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluefeet%2FGitLab-API-v4/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bluefeet","download_url":"https://codeload.github.com/bluefeet/GitLab-API-v4/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248101184,"owners_count":21047919,"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","perl5"],"created_at":"2024-09-24T19:50:30.117Z","updated_at":"2026-03-12T17:25:20.555Z","avatar_url":"https://github.com/bluefeet.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NAME\n\nGitLab::API::v4 - A complete GitLab API v4 client.\n\n# SYNOPSIS\n\n```perl\nuse GitLab::API::v4;\n\nmy $api = GitLab::API::v4-\u003enew(\n    url           =\u003e $v4_api_url,\n    private_token =\u003e $token,\n);\n\nmy $branches = $api-\u003ebranches( $project_id );\n```\n\n# DESCRIPTION\n\nThis module provides a one-to-one interface with the GitLab\nAPI v4.  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-v4](https://metacpan.org/pod/gitlab-api-v4) command-line\ninterface (CLI).\n\n## Upgrading\n\nIf you are upgrading from [GitLab::API::v3](https://metacpan.org/pod/GitLab%3A%3AAPI%3A%3Av3) make sure you read:\n\n[https://docs.gitlab.com/ce/api/v3\\_to\\_v4.html](https://docs.gitlab.com/ce/api/v3_to_v4.html)\n\nAlso, review the `Changes` file included in the distribution as it outlines\nthe changes made to convert the v3 module to v4:\n\n[https://github.com/bluefeet/GitLab-API-v4/blob/master/Changes](https://github.com/bluefeet/GitLab-API-v4/blob/master/Changes)\n\nFinally, be aware that many methods were added, removed, renamed, and/or altered.\nIf you want to review exactly what was changed you can use GitHub's compare tool:\n\n[https://github.com/bluefeet/GitLab-API-v4/compare/72e384775c9570f60f8ef68dee3a1eecd347fb69...master](https://github.com/bluefeet/GitLab-API-v4/compare/72e384775c9570f60f8ef68dee3a1eecd347fb69...master)\n\nOr clone the repo and run this command:\n\n`git diff 72e384775c9570f60f8ef68dee3a1eecd347fb69..HEAD -- author/sections/`\n\n## Credentials\n\nAuthentication credentials may be defined by setting either the [\"access\\_token\"](#access_token)\nor [\"private\\_token\"](#private_token) arguments.\n\nIf no credentials are supplied then the client will be anonymous and greatly\nlimited in what it can do with the API.\n\nExtra care has been taken to hide the token arguments behind closures.  This way,\nif you dump your api object, your tokens won't accidentally leak into places you\ndon't want them to.\n\n## Constants\n\nThe GitLab API, in rare cases, uses a hard-coded value to represent a state.\nTo make life easier the [GitLab::API::v4::Constants](https://metacpan.org/pod/GitLab%3A%3AAPI%3A%3Av4%3A%3AConstants) module exposes\nthese states as named variables.\n\n## Exceptions\n\nThe API methods will all throw 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 a numeric project `ID` or, in many cases, maybe all cases,\nas a `NAMESPACE_PATH/PROJECT_PATH` string.  The GitLab documentation on\nthis point is vague.\n\n# REQUIRED ARGUMENTS\n\n## url\n\nThe URL to your v4 API endpoint.  Typically this will be something\nlike `https://git.example.com/api/v4`.\n\n# OPTIONAL ARGUMENTS\n\n## access\\_token\n\nA GitLab API OAuth2 token.  If set then [\"private\\_token\"](#private_token) may not be set.\n\nSee [https://docs.gitlab.com/ce/api/#oauth2-tokens](https://docs.gitlab.com/ce/api/#oauth2-tokens).\n\n## private\\_token\n\nA GitLab API personal token.  If set then [\"access\\_token\"](#access_token) may not be set.\n\nSee [https://docs.gitlab.com/ce/api/#personal-access-tokens](https://docs.gitlab.com/ce/api/#personal-access-tokens).\n\n## retries\n\nThe number of times the request should be retried in case it fails (5XX HTTP\nresponse code).  Defaults to `0` (false), meaning that a failed request will\nnot be retried.\n\n## sudo\\_user\n\nThe user to execute API calls as.  You may find it more useful to use the\n[\"sudo\"](#sudo) method instead.\n\nSee [https://docs.gitlab.com/ce/api/#sudo](https://docs.gitlab.com/ce/api/#sudo).\n\n## rest\\_client\n\nAn instance of [GitLab::API::v4::RESTClient](https://metacpan.org/pod/GitLab%3A%3AAPI%3A%3Av4%3A%3ARESTClient) (or whatever [\"rest\\_client\\_class\"](#rest_client_class)\nis set to).  Typically you will not be setting this as it defaults to a new\ninstance and customization should not be necessary.\n\n## rest\\_client\\_class\n\nThe class to use when constructing the [\"rest\\_client\"](#rest_client).\nDefaults to [GitLab::API::v4::RESTClient](https://metacpan.org/pod/GitLab%3A%3AAPI%3A%3Av4%3A%3ARESTClient).\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::v4::Paginator](https://metacpan.org/pod/GitLab%3A%3AAPI%3A%3Av4%3A%3APaginator)\nobject that will allow you to walk the records one page or one record\nat a time.\n\n## sudo\n\n```\n$api-\u003esudo('fred')-\u003ecreate_issue(...);\n```\n\nReturns a new instance of [GitLab::API::v4](https://metacpan.org/pod/GitLab%3A%3AAPI%3A%3Av4) with the [\"sudo\\_user\"](#sudo_user) argument\nset.\n\nSee [https://docs.gitlab.com/ce/api/#sudo](https://docs.gitlab.com/ce/api/#sudo).\n\n# API METHODS\n\n## Award Emoji\n\nSee [https://docs.gitlab.com/ce/api/award\\_emoji.html](https://docs.gitlab.com/ce/api/award_emoji.html).\n\n- issue\\_award\\_emojis\n\n    ```perl\n    my $award_emojis = $api-\u003eissue_award_emojis(\n        $project_id,\n        $issue_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues/:issue_iid/award_emoji` and returns the decoded response content.\n\n- merge\\_request\\_award\\_emojis\n\n    ```perl\n    my $award_emojis = $api-\u003emerge_request_award_emojis(\n        $project_id,\n        $merge_request_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/award_emoji` and returns the decoded response content.\n\n- snippet\\_award\\_emojis\n\n    ```perl\n    my $award_emojis = $api-\u003esnippet_award_emojis(\n        $project_id,\n        $merge_request_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_id/award_emoji` and returns the decoded response content.\n\n- issue\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003eissue_award_emoji(\n        $project_id,\n        $issue_iid,\n        $award_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues/:issue_iid/award_emoji/:award_id` and returns the decoded response content.\n\n- merge\\_request\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003emerge_request_award_emoji(\n        $project_id,\n        $merge_request_iid,\n        $award_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/award_emoji/:award_id` and returns the decoded response content.\n\n- snippet\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003esnippet_award_emoji(\n        $project_id,\n        $snippet_id,\n        $award_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/snippets/:snippet_id/award_emoji/:award_id` and returns the decoded response content.\n\n- create\\_issue\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003ecreate_issue_award_emoji(\n        $project_id,\n        $issue_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/issues/:issue_iid/award_emoji` and returns the decoded response content.\n\n- create\\_merge\\_request\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003ecreate_merge_request_award_emoji(\n        $project_id,\n        $merge_request_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests/:merge_request_iid/award_emoji` and returns the decoded response content.\n\n- create\\_snippet\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003ecreate_snippet_award_emoji(\n        $project_id,\n        $snippet_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/snippets/:snippet_id/award_emoji` and returns the decoded response content.\n\n- delete\\_issue\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003edelete_issue_award_emoji(\n        $project_id,\n        $issue_id,\n        $award_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/issues/:issue_id/award_emoji/:award_id` and returns the decoded response content.\n\n- delete\\_merge\\_request\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003edelete_merge_request_award_emoji(\n        $project_id,\n        $merge_request_id,\n        $award_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/merge_requests/:merge_request_id/award_emoji/:award_id` and returns the decoded response content.\n\n- delete\\_snippet\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003edelete_snippet_award_emoji(\n        $project_id,\n        $snippet_id,\n        $award_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/snippets/:snippet_id/award_emoji/:award_id` and returns the decoded response content.\n\n- issue\\_note\\_award\\_emojis\n\n    ```perl\n    my $award_emojis = $api-\u003eissue_note_award_emojis(\n        $project_id,\n        $issue_iid,\n        $note_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues/:issue_iid/notes/:note_id/award_emoji` and returns the decoded response content.\n\n- issue\\_note\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003eissue_note_award_emoji(\n        $project_id,\n        $issue_iid,\n        $note_id,\n        $award_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues/:issue_iid/notes/:note_id/award_emoji/:award_id` and returns the decoded response content.\n\n- create\\_issue\\_note\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003ecreate_issue_note_award_emoji(\n        $project_id,\n        $issue_iid,\n        $note_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/issues/:issue_iid/notes/:note_id/award_emoji` and returns the decoded response content.\n\n- delete\\_issue\\_note\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003edelete_issue_note_award_emoji(\n        $project_id,\n        $issue_iid,\n        $note_id,\n        $award_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/issues/:issue_iid/notes/:note_id/award_emoji/:award_id` and returns the decoded response content.\n\n- merge\\_request\\_note\\_award\\_emojis\n\n    ```perl\n    my $award_emojis = $api-\u003emerge_request_note_award_emojis(\n        $project_id,\n        $merge_request_iid,\n        $note_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/notes/:note_id/award_emoji` and returns the decoded response content.\n\n- merge\\_request\\_note\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003emerge_request_note_award_emoji(\n        $project_id,\n        $merge_request_iid,\n        $note_id,\n        $award_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/notes/:note_id/award_emoji/:award_id` and returns the decoded response content.\n\n- create\\_merge\\_request\\_note\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003ecreate_merge_request_note_award_emoji(\n        $project_id,\n        $merge_request_iid,\n        $note_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests/:merge_request_iid/notes/:note_id/award_emoji` and returns the decoded response content.\n\n- delete\\_merge\\_request\\_note\\_award\\_emoji\n\n    ```perl\n    my $award_emoji = $api-\u003edelete_merge_request_note_award_emoji(\n        $project_id,\n        $merge_request_iid,\n        $note_id,\n        $award_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/merge_requests/:merge_request_iid/notes/:note_id/award_emoji/:award_id` and returns the decoded response content.\n\n## Branches\n\nSee [https://docs.gitlab.com/ce/api/branches.html](https://docs.gitlab.com/ce/api/branches.html).\n\n- branches\n\n    ```perl\n    my $branches = $api-\u003ebranches(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/repository/branches` and returns the decoded response content.\n\n- branch\n\n    ```perl\n    my $branch = $api-\u003ebranch(\n        $project_id,\n        $branch_name,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/repository/branches/:branch_name` and returns the decoded response content.\n\n- create\\_branch\n\n    ```perl\n    my $branch = $api-\u003ecreate_branch(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/repository/branches` and returns the decoded response content.\n\n- delete\\_branch\n\n    ```\n    $api-\u003edelete_branch(\n        $project_id,\n        $branch_name,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/repository/branches/:branch_name`.\n\n- delete\\_merged\\_branches\n\n    ```\n    $api-\u003edelete_merged_branches(\n        $project_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/repository/merged_branches`.\n\n## Broadcast Messages\n\nSee [https://docs.gitlab.com/ce/api/broadcast\\_messages.html](https://docs.gitlab.com/ce/api/broadcast_messages.html).\n\n- broadcast\\_messages\n\n    ```perl\n    my $messages = $api-\u003ebroadcast_messages(\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `broadcast_messages` and returns the decoded response content.\n\n- broadcast\\_message\n\n    ```perl\n    my $message = $api-\u003ebroadcast_message(\n        $message_id,\n    );\n    ```\n\n    Sends a `GET` request to `broadcast_messages/:message_id` and returns the decoded response content.\n\n- create\\_broadcast\\_message\n\n    ```perl\n    my $message = $api-\u003ecreate_broadcast_message(\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `broadcast_messages` and returns the decoded response content.\n\n- edit\\_broadcast\\_message\n\n    ```perl\n    my $message = $api-\u003eedit_broadcast_message(\n        $message_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `broadcast_messages/:message_id` and returns the decoded response content.\n\n- delete\\_broadcast\\_message\n\n    ```\n    $api-\u003edelete_broadcast_message(\n        $message_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `broadcast_messages/:message_id`.\n\n## Project-level Variables\n\nSee [https://docs.gitlab.com/ce/api/project\\_level\\_variables.html](https://docs.gitlab.com/ce/api/project_level_variables.html).\n\n- project\\_variables\n\n    ```perl\n    my $variables = $api-\u003eproject_variables(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/variables` and returns the decoded response content.\n\n- project\\_variable\n\n    ```perl\n    my $variable = $api-\u003eproject_variable(\n        $project_id,\n        $variable_key,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/variables/:variable_key` and returns the decoded response content.\n\n- create\\_project\\_variable\n\n    ```perl\n    my $variable = $api-\u003ecreate_project_variable(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/variables` and returns the decoded response content.\n\n- edit\\_project\\_variable\n\n    ```perl\n    my $variable = $api-\u003eedit_project_variable(\n        $project_id,\n        $variable_key,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/variables/:variable_key` and returns the decoded response content.\n\n- delete\\_project\\_variable\n\n    ```\n    $api-\u003edelete_project_variable(\n        $project_id,\n        $variable_key,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/variables/:variable_key`.\n\n## Group-level Variables\n\nSee [https://docs.gitlab.com/ce/api/group\\_level\\_variables.html](https://docs.gitlab.com/ce/api/group_level_variables.html).\n\n- group\\_variables\n\n    ```perl\n    my $variables = $api-\u003egroup_variables(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/variables` and returns the decoded response content.\n\n- group\\_variable\n\n    ```perl\n    my $variable = $api-\u003egroup_variable(\n        $group_id,\n        $variable_key,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/variables/:variable_key` and returns the decoded response content.\n\n- create\\_group\\_variable\n\n    ```perl\n    my $variable = $api-\u003ecreate_group_variable(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `groups/:group_id/variables` and returns the decoded response content.\n\n- edit\\_group\\_variable\n\n    ```perl\n    my $variable = $api-\u003eedit_group_variable(\n        $group_id,\n        $variable_key,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `groups/:group_id/variables/:variable_key` and returns the decoded response content.\n\n- delete\\_group\\_variable\n\n    ```\n    $api-\u003edelete_group_variable(\n        $group_id,\n        $variable_key,\n    );\n    ```\n\n    Sends a `DELETE` request to `groups/:group_id/variables/:variable_key`.\n\n## Snippets\n\nSee [https://docs.gitlab.com/ce/api/snippets.html](https://docs.gitlab.com/ce/api/snippets.html).\n\n- snippets\n\n    ```perl\n    my $snippets = $api-\u003esnippets();\n    ```\n\n    Sends a `GET` request to `snippets` and returns the decoded response content.\n\n- snippet\n\n    ```perl\n    my $snippet = $api-\u003esnippet(\n        $snippet_id,\n    );\n    ```\n\n    Sends a `GET` request to `snippets/:snippet_id` and returns the decoded response content.\n\n- create\\_snippet\n\n    ```perl\n    my $snippet = $api-\u003ecreate_snippet(\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `snippets` and returns the decoded response content.\n\n- edit\\_snippet\n\n    ```perl\n    my $snippet = $api-\u003eedit_snippet(\n        $snippet_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `snippets/:snippet_id` and returns the decoded response content.\n\n- delete\\_snippet\n\n    ```\n    $api-\u003edelete_snippet(\n        $snippet_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `snippets/:snippet_id`.\n\n- public\\_snippets\n\n    ```perl\n    my $snippets = $api-\u003epublic_snippets(\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `snippets/public` and returns the decoded response content.\n\n- snippet\\_user\\_agent\\_detail\n\n    ```perl\n    my $user_agent = $api-\u003esnippet_user_agent_detail(\n        $snippet_id,\n    );\n    ```\n\n    Sends a `GET` request to `snippets/:snippet_id/user_agent_detail` and returns the decoded response content.\n\n## Commits\n\nSee [https://docs.gitlab.com/ce/api/commits.html](https://docs.gitlab.com/ce/api/commits.html).\n\n- commits\n\n    ```perl\n    my $commits = $api-\u003ecommits(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/repository/commits` and returns the decoded response content.\n\n- create\\_commit\n\n    ```perl\n    my $commit = $api-\u003ecreate_commit(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/repository/commits` and returns the decoded response content.\n\n- commit\n\n    ```perl\n    my $commit = $api-\u003ecommit(\n        $project_id,\n        $commit_sha,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/repository/commits/:commit_sha` and returns the decoded response content.\n\n- commit\\_refs\n\n    ```perl\n    my $refs = $api-\u003ecommit_refs(\n        $project_id,\n        $commit_sha,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/repository/commits/:commit_sha/refs` and returns the decoded response content.\n\n- cherry\\_pick\\_commit\n\n    ```perl\n    my $commit = $api-\u003echerry_pick_commit(\n        $project_id,\n        $commit_sha,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/repository/commits/:commit_sha/cherry_pick` and returns the decoded response content.\n\n- commit\\_diff\n\n    ```perl\n    my $diff = $api-\u003ecommit_diff(\n        $project_id,\n        $commit_sha,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/repository/commits/:commit_sha/diff` and returns the decoded response content.\n\n- commit\\_comments\n\n    ```perl\n    my $comments = $api-\u003ecommit_comments(\n        $project_id,\n        $commit_sha,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/repository/commits/:commit_sha/comments` and returns the decoded response content.\n\n- create\\_commit\\_comment\n\n    ```\n    $api-\u003ecreate_commit_comment(\n        $project_id,\n        $commit_sha,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/repository/commits/:commit_sha/comments`.\n\n- commit\\_statuses\n\n    ```perl\n    my $build_statuses = $api-\u003ecommit_statuses(\n        $project_id,\n        $commit_sha,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/repository/commits/:commit_sha/statuses` and returns the decoded response content.\n\n- create\\_commit\\_status\n\n    ```perl\n    my $build_status = $api-\u003ecreate_commit_status(\n        $project_id,\n        $commit_sha,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/statuses/:commit_sha` and returns the decoded response content.\n\n## Container Registry\n\nSee [https://docs.gitlab.com/ce/api/container\\_registry.html](https://docs.gitlab.com/ce/api/container_registry.html).\n\n- registry\\_repositories\\_in\\_project\n\n    ```perl\n    my $registry_repositories = $api-\u003eregistry_repositories_in_project(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/registry/repositories` and returns the decoded response content.\n\n- registry\\_repositories\\_in\\_group\n\n    ```perl\n    my $registry_repositories = $api-\u003eregistry_repositories_in_group(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/registry/repositories` and returns the decoded response content.\n\n- delete\\_registry\\_repository\n\n    ```\n    $api-\u003edelete_registry_repository(\n        $project_id,\n        $repository_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/registry/repositories/:repository_id`.\n\n- registry\\_repository\\_tags\n\n    ```perl\n    my $tags = $api-\u003eregistry_repository_tags(\n        $project_id,\n        $repository_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/registry/repositories/:repository_id/tags` and returns the decoded response content.\n\n- registry\\_repository\\_tag\n\n    ```perl\n    my $tag = $api-\u003eregistry_repository_tag(\n        $project_id,\n        $repository_id,\n        $tag_name,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/registry/repositories/:repository_id/tags/:tag_name` and returns the decoded response content.\n\n- delete\\_registry\\_repository\\_tag\n\n    ```\n    $api-\u003edelete_registry_repository_tag(\n        $project_id,\n        $repository_id,\n        $tag_name,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/registry/repositories/:repository_id/tags/:tag_name`.\n\n- bulk\\_delete\\_registry\\_repository\\_tags\n\n    ```\n    $api-\u003ebulk_delete_registry_repository_tags(\n        $project_id,\n        $repository_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/registry/repositories/:repository_id/tags`.\n\n## Custom Attributes\n\nSee [https://docs.gitlab.com/ce/api/custom\\_attributes.html](https://docs.gitlab.com/ce/api/custom_attributes.html).\n\n- custom\\_user\\_attributes\n\n    ```perl\n    my $attributes = $api-\u003ecustom_user_attributes(\n        $user_id,\n    );\n    ```\n\n    Sends a `GET` request to `users/:user_id/custom_attributes` and returns the decoded response content.\n\n- custom\\_group\\_attributes\n\n    ```perl\n    my $attributes = $api-\u003ecustom_group_attributes(\n        $group_id,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/custom_attributes` and returns the decoded response content.\n\n- custom\\_project\\_attributes\n\n    ```perl\n    my $attributes = $api-\u003ecustom_project_attributes(\n        $project_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/custom_attributes` and returns the decoded response content.\n\n- custom\\_user\\_attribute\n\n    ```perl\n    my $attribute = $api-\u003ecustom_user_attribute(\n        $user_id,\n        $attribute_key,\n    );\n    ```\n\n    Sends a `GET` request to `users/:user_id/custom_attributes/:attribute_key` and returns the decoded response content.\n\n- custom\\_group\\_attribute\n\n    ```perl\n    my $attribute = $api-\u003ecustom_group_attribute(\n        $group_id,\n        $attribute_key,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/custom_attributes/:attribute_key` and returns the decoded response content.\n\n- custom\\_project\\_attribute\n\n    ```perl\n    my $attribute = $api-\u003ecustom_project_attribute(\n        $project_id,\n        $attribute_key,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/custom_attributes/:attribute_key` and returns the decoded response content.\n\n- set\\_custom\\_user\\_attribute\n\n    ```perl\n    my $attribute = $api-\u003eset_custom_user_attribute(\n        $user_id,\n        $attribute_key,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `users/:user_id/custom_attributes/:attribute_key` and returns the decoded response content.\n\n- set\\_custom\\_group\\_attribute\n\n    ```perl\n    my $attribute = $api-\u003eset_custom_group_attribute(\n        $group_id,\n        $attribute_key,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `groups/:group_id/custom_attributes/:attribute_key` and returns the decoded response content.\n\n- set\\_custom\\_project\\_attribute\n\n    ```perl\n    my $attribute = $api-\u003eset_custom_project_attribute(\n        $project_id,\n        $attribute_key,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/custom_attributes/:attribute_key` and returns the decoded response content.\n\n- delete\\_custom\\_user\\_attribute\n\n    ```perl\n    $api-\u003edelete_custom_user_attribute(\n        $user_id,\n        $attribute_key,\n    );\n    ```\n\n    Sends a `DELETE` request to `users/:user_id/custom_attributes/:attribute_key`.\n\n- delete\\_custom\\_group\\_attribute\n\n    ```\n    $api-\u003edelete_custom_group_attribute(\n        $group_id,\n        $attribute_key,\n    );\n    ```\n\n    Sends a `DELETE` request to `groups/:group_id/custom_attributes/:attribute_key`.\n\n- delete\\_custom\\_project\\_attribute\n\n    ```\n    $api-\u003edelete_custom_project_attribute(\n        $project_id,\n        $attribute_key,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/custom_attributes/:attribute_key`.\n\n## Deployments\n\nSee [https://docs.gitlab.com/ce/api/deployments.html](https://docs.gitlab.com/ce/api/deployments.html).\n\n- deployments\n\n    ```perl\n    my $deployments = $api-\u003edeployments(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/deployments` and returns the decoded response content.\n\n- deployment\n\n    ```perl\n    my $deployment = $api-\u003edeployment(\n        $project_id,\n        $deployment_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/deployments/:deployment_id` and returns the decoded response content.\n\n## Deploy Keys\n\nSee [https://docs.gitlab.com/ce/api/deploy\\_keys.html](https://docs.gitlab.com/ce/api/deploy_keys.html).\n\n- all\\_deploy\\_keys\n\n    ```perl\n    my $keys = $api-\u003eall_deploy_keys(\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `deploy_keys` and returns the decoded response content.\n\n- deploy\\_keys\n\n    ```perl\n    my $keys = $api-\u003edeploy_keys(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/deploy_keys` and returns the decoded response content.\n\n- deploy\\_key\n\n    ```perl\n    my $key = $api-\u003edeploy_key(\n        $project_id,\n        $key_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/deploy_keys/:key_id` and returns the decoded response content.\n\n- create\\_deploy\\_key\n\n    ```perl\n    my $key = $api-\u003ecreate_deploy_key(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/deploy_keys` and returns the decoded response content.\n\n- delete\\_deploy\\_key\n\n    ```\n    $api-\u003edelete_deploy_key(\n        $project_id,\n        $key_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/deploy_keys/:key_id`.\n\n- enable\\_deploy\\_key\n\n    ```perl\n    my $key = $api-\u003eenable_deploy_key(\n        $project_id,\n        $key_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/deploy_keys/:key_id/enable` and returns the decoded response content.\n\n## Environments\n\nSee [https://docs.gitlab.com/ce/api/environments.html](https://docs.gitlab.com/ce/api/environments.html).\n\n- environments\n\n    ```perl\n    my $environments = $api-\u003eenvironments(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/environments` and returns the decoded response content.\n\n- create\\_environment\n\n    ```perl\n    my $environment = $api-\u003ecreate_environment(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/environments` and returns the decoded response content.\n\n- edit\\_environment\n\n    ```perl\n    my $environment = $api-\u003eedit_environment(\n        $project_id,\n        $environments_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/environments/:environments_id` and returns the decoded response content.\n\n- delete\\_environment\n\n    ```\n    $api-\u003edelete_environment(\n        $project_id,\n        $environment_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/environments/:environment_id`.\n\n- stop\\_environment\n\n    ```perl\n    my $environment = $api-\u003estop_environment(\n        $project_id,\n        $environment_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/environments/:environment_id/stop` and returns the decoded response content.\n\n## Events\n\nSee [https://docs.gitlab.com/ce/api/events.html](https://docs.gitlab.com/ce/api/events.html).\n\n- all\\_events\n\n    ```perl\n    my $events = $api-\u003eall_events(\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `events` and returns the decoded response content.\n\n- user\\_events\n\n    ```perl\n    my $events = $api-\u003euser_events(\n        $user_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `users/:user_id/events` and returns the decoded response content.\n\n- project\\_events\n\n    ```perl\n    my $events = $api-\u003eproject_events(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/events` and returns the decoded response content.\n\n## Feature flags\n\nSee [https://docs.gitlab.com/ce/api/features.html](https://docs.gitlab.com/ce/api/features.html).\n\n- features\n\n    ```perl\n    my $features = $api-\u003efeatures();\n    ```\n\n    Sends a `GET` request to `features` and returns the decoded response content.\n\n- set\\_feature\n\n    ```perl\n    my $feature = $api-\u003eset_feature(\n        $name,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `features/:name` and returns the decoded response content.\n\n## Gitignores\n\nSee [https://docs.gitlab.com/ce/api/templates/gitignores.html](https://docs.gitlab.com/ce/api/templates/gitignores.html).\n\n- gitignores\\_templates\n\n    ```perl\n    my $templates = $api-\u003egitignores_templates(\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `templates/gitignores` and returns the decoded response content.\n\n- gitignores\\_template\n\n    ```perl\n    my $template = $api-\u003egitignores_template(\n        $template_key,\n    );\n    ```\n\n    Sends a `GET` request to `templates/gitignores/:template_key` and returns the decoded response content.\n\n## GitLab CI YMLs\n\nSee [https://docs.gitlab.com/ce/api/templates/gitlab\\_ci\\_ymls.html](https://docs.gitlab.com/ce/api/templates/gitlab_ci_ymls.html).\n\n- gitlab\\_ci\\_ymls\\_templates\n\n    ```perl\n    my $templates = $api-\u003egitlab_ci_ymls_templates(\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `templates/gitlab_ci_ymls` and returns the decoded response content.\n\n- gitlab\\_ci\\_ymls\\_template\n\n    ```perl\n    my $template = $api-\u003egitlab_ci_ymls_template(\n        $template_key,\n    );\n    ```\n\n    Sends a `GET` request to `templates/gitlab_ci_ymls/:template_key` and returns the decoded response content.\n\n## Groups\n\nSee [https://docs.gitlab.com/ce/api/groups.html](https://docs.gitlab.com/ce/api/groups.html).\n\n- groups\n\n    ```perl\n    my $groups = $api-\u003egroups(\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `groups` and returns the decoded response content.\n\n- group\\_subgroups\n\n    ```perl\n    my $subgroups = $api-\u003egroup_subgroups(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/subgroups` and returns the decoded response content.\n\n- group\\_projects\n\n    ```perl\n    my $projects = $api-\u003egroup_projects(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/projects` and returns the decoded response content.\n\n- group\n\n    ```perl\n    my $group = $api-\u003egroup(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id` and returns the decoded response content.\n\n- create\\_group\n\n    ```\n    $api-\u003ecreate_group(\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `groups`.\n\n- transfer\\_project\\_to\\_group\n\n    ```\n    $api-\u003etransfer_project_to_group(\n        $group_id,\n        $project_id,\n    );\n    ```\n\n    Sends a `POST` request to `groups/:group_id/projects/:project_id`.\n\n- edit\\_group\n\n    ```perl\n    my $group = $api-\u003eedit_group(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `groups/:group_id` and returns the decoded response content.\n\n- delete\\_group\n\n    ```\n    $api-\u003edelete_group(\n        $group_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `groups/:group_id`.\n\n- sync\\_group\\_with\\_ldap\n\n    ```\n    $api-\u003esync_group_with_ldap(\n        $group_id,\n    );\n    ```\n\n    Sends a `POST` request to `groups/:group_id/ldap_sync`.\n\n- create\\_ldap\\_group\\_link\n\n    ```\n    $api-\u003ecreate_ldap_group_link(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `groups/:group_id/ldap_group_links`.\n\n- delete\\_ldap\\_group\\_link\n\n    ```\n    $api-\u003edelete_ldap_group_link(\n        $group_id,\n        $cn,\n    );\n    ```\n\n    Sends a `DELETE` request to `groups/:group_id/ldap_group_links/:cn`.\n\n- delete\\_ldap\\_provider\\_group\\_link\n\n    ```\n    $api-\u003edelete_ldap_provider_group_link(\n        $group_id,\n        $provider,\n        $cn,\n    );\n    ```\n\n    Sends a `DELETE` request to `groups/:group_id/ldap_group_links/:provider/:cn`.\n\n- share\\_group\\_with\\_group\n\n    ```\n    $api-\u003eshare_group_with_group(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `groups/:group_id/share`.\n\n- unshare\\_group\\_with\\_group\n\n    ```\n    $api-\u003eunshare_group_with_group(\n        $group_id,\n        $shared_with_group_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `groups/:group_id/share/:shared_with_group_id`.\n\n## Group access requests\n\nSee [https://docs.gitlab.com/ce/api/access\\_requests.html](https://docs.gitlab.com/ce/api/access_requests.html).\n\n- group\\_access\\_requests\n\n    ```perl\n    my $requests = $api-\u003egroup_access_requests(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/access_requests` and returns the decoded response content.\n\n- request\\_group\\_access\n\n    ```perl\n    my $request = $api-\u003erequest_group_access(\n        $group_id,\n    );\n    ```\n\n    Sends a `POST` request to `groups/:group_id/access_requests` and returns the decoded response content.\n\n- approve\\_group\\_access\n\n    ```perl\n    my $request = $api-\u003eapprove_group_access(\n        $group_id,\n        $user_id,\n    );\n    ```\n\n    Sends a `PUT` request to `groups/:group_id/access_requests/:user_id/approve` and returns the decoded response content.\n\n- deny\\_group\\_access\n\n    ```perl\n    $api-\u003edeny_group_access(\n        $group_id,\n        $user_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `groups/:group_id/access_requests/:user_id`.\n\n## Group badges\n\nSee [https://docs.gitlab.com/ce/api/group\\_badges.html](https://docs.gitlab.com/ce/api/group_badges.html).\n\n- group\\_badges\n\n    ```perl\n    my $badges = $api-\u003egroup_badges(\n        $group_id,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/badges` and returns the decoded response content.\n\n- group\\_badge\n\n    ```perl\n    my $badge = $api-\u003egroup_badge(\n        $group_id,\n        $badge_id,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/badges/:badge_id` and returns the decoded response content.\n\n- create\\_group\\_badge\n\n    ```perl\n    my $badge = $api-\u003ecreate_group_badge(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `groups/:group_id/badges` and returns the decoded response content.\n\n- edit\\_group\\_badge\n\n    ```perl\n    my $badge = $api-\u003eedit_group_badge(\n        $group_id,\n        $badge_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `groups/:group_id/badges/:badge_id` and returns the decoded response content.\n\n- delete\\_group\\_badge\n\n    ```\n    $api-\u003edelete_group_badge(\n        $group_id,\n        $badge_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `groups/:group_id/badges/:badge_id`.\n\n- preview\\_group\\_badge\n\n    ```perl\n    my $preview = $api-\u003epreview_group_badge(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/badges/render` and returns the decoded response content.\n\n## Group members\n\nSee [https://docs.gitlab.com/ce/api/members.html](https://docs.gitlab.com/ce/api/members.html).\n\n- group\\_members\n\n    ```perl\n    my $members = $api-\u003egroup_members(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/members` and returns the decoded response content.\n\n- all\\_group\\_members\n\n    ```perl\n    my $members = $api-\u003eall_group_members(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/members/all` and returns the decoded response content.\n\n- group\\_member\n\n    ```perl\n    my $member = $api-\u003egroup_member(\n        $project_id,\n        $user_id,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:project_id/members/:user_id` and returns the decoded response content.\n\n- add\\_group\\_member\n\n    ```perl\n    my $member = $api-\u003eadd_group_member(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `groups/:group_id/members` and returns the decoded response content.\n\n- update\\_group\\_member\n\n    ```perl\n    my $member = $api-\u003eupdate_group_member(\n        $group_id,\n        $user_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `groups/:group_id/members/:user_id` and returns the decoded response content.\n\n- remove\\_group\\_member\n\n    ```perl\n    $api-\u003eremove_group_member(\n        $group_id,\n        $user_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `groups/:group_id/members/:user_id`.\n\n## Issues\n\nSee [https://docs.gitlab.com/ce/api/issues.html](https://docs.gitlab.com/ce/api/issues.html).\n\n- global\\_issues\n\n    ```perl\n    my $issues = $api-\u003eglobal_issues(\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `issues` and returns the decoded response content.\n\n- group\\_issues\n\n    ```perl\n    my $issues = $api-\u003egroup_issues(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/issues` and returns the decoded response content.\n\n- issues\n\n    ```perl\n    my $issues = $api-\u003eissues(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues` and returns the decoded response content.\n\n- issue\n\n    ```perl\n    my $issue = $api-\u003eissue(\n        $project_id,\n        $issue_iid,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues/:issue_iid` and returns the decoded response content.\n\n- create\\_issue\n\n    ```perl\n    my $issue = $api-\u003ecreate_issue(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/issues` and returns the decoded response content.\n\n- edit\\_issue\n\n    ```perl\n    my $issue = $api-\u003eedit_issue(\n        $project_id,\n        $issue_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/issues/:issue_iid` and returns the decoded response content.\n\n- delete\\_issue\n\n    ```\n    $api-\u003edelete_issue(\n        $project_id,\n        $issue_iid,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/issues/:issue_iid`.\n\n- move\\_issue\n\n    ```perl\n    my $issue = $api-\u003emove_issue(\n        $project_id,\n        $issue_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/issues/:issue_iid/move` and returns the decoded response content.\n\n- subscribe\\_to\\_issue\n\n    ```perl\n    my $issue = $api-\u003esubscribe_to_issue(\n        $project_id,\n        $issue_iid,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/issues/:issue_iid/subscribe` and returns the decoded response content.\n\n- unsubscribe\\_from\\_issue\n\n    ```perl\n    my $issue = $api-\u003eunsubscribe_from_issue(\n        $project_id,\n        $issue_iid,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/issues/:issue_iid/unsubscribe` and returns the decoded response content.\n\n- create\\_issue\\_todo\n\n    ```perl\n    my $todo = $api-\u003ecreate_issue_todo(\n        $project_id,\n        $issue_iid,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/issues/:issue_iid/todo` and returns the decoded response content.\n\n- set\\_issue\\_time\\_estimate\n\n    ```perl\n    my $tracking = $api-\u003eset_issue_time_estimate(\n        $project_id,\n        $issue_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/issues/:issue_iid/time_estimate` and returns the decoded response content.\n\n- reset\\_issue\\_time\\_estimate\n\n    ```perl\n    my $tracking = $api-\u003ereset_issue_time_estimate(\n        $project_id,\n        $issue_iid,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/issues/:issue_iid/reset_time_estimate` and returns the decoded response content.\n\n- add\\_issue\\_spent\\_time\n\n    ```perl\n    my $tracking = $api-\u003eadd_issue_spent_time(\n        $project_id,\n        $issue_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/issues/:issue_iid/add_spent_time` and returns the decoded response content.\n\n- reset\\_issue\\_spent\\_time\n\n    ```perl\n    my $tracking = $api-\u003ereset_issue_spent_time(\n        $project_id,\n        $issue_iid,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/issues/:issue_iid/reset_spent_time` and returns the decoded response content.\n\n- issue\\_time\\_stats\n\n    ```perl\n    my $tracking = $api-\u003eissue_time_stats(\n        $project_id,\n        $issue_iid,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues/:issue_iid/time_stats` and returns the decoded response content.\n\n- issue\\_closed\\_by\n\n    ```perl\n    my $merge_requests = $api-\u003eissue_closed_by(\n        $project_id,\n        $issue_iid,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues/:issue_iid/closed_by` and returns the decoded response content.\n\n- issue\\_user\\_agent\\_detail\n\n    ```perl\n    my $user_agent = $api-\u003eissue_user_agent_detail(\n        $project_id,\n        $issue_iid,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues/:issue_iid/user_agent_detail` and returns the decoded response content.\n\n## Issue Boards\n\nSee [https://docs.gitlab.com/ce/api/boards.html](https://docs.gitlab.com/ce/api/boards.html).\n\n- project\\_boards\n\n    ```perl\n    my $boards = $api-\u003eproject_boards(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/boards` and returns the decoded response content.\n\n- project\\_board\\_lists\n\n    ```perl\n    my $lists = $api-\u003eproject_board_lists(\n        $project_id,\n        $board_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/boards/:board_id/lists` and returns the decoded response content.\n\n- project\\_board\\_list\n\n    ```perl\n    my $list = $api-\u003eproject_board_list(\n        $project_id,\n        $board_id,\n        $list_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/boards/:board_id/lists/:list_id` and returns the decoded response content.\n\n- create\\_project\\_board\\_list\n\n    ```perl\n    my $list = $api-\u003ecreate_project_board_list(\n        $project_id,\n        $board_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/boards/:board_id/lists` and returns the decoded response content.\n\n- edit\\_project\\_board\\_list\n\n    ```perl\n    my $list = $api-\u003eedit_project_board_list(\n        $project_id,\n        $board_id,\n        $list_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/boards/:board_id/lists/:list_id` and returns the decoded response content.\n\n- delete\\_project\\_board\\_list\n\n    ```\n    $api-\u003edelete_project_board_list(\n        $project_id,\n        $board_id,\n        $list_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/boards/:board_id/lists/:list_id`.\n\n## Group Issue Boards\n\nSee [https://docs.gitlab.com/ce/api/group\\_boards.html](https://docs.gitlab.com/ce/api/group_boards.html).\n\n- group\\_boards\n\n    ```perl\n    my $boards = $api-\u003egroup_boards(\n        $group_id,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/boards` and returns the decoded response content.\n\n- group\\_board\n\n    ```perl\n    my $board = $api-\u003egroup_board(\n        $group_id,\n        $board_id,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/boards/:board_id` and returns the decoded response content.\n\n- group\\_board\\_lists\n\n    ```perl\n    my $lists = $api-\u003egroup_board_lists(\n        $group_id,\n        $board_id,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/boards/:board_id/lists` and returns the decoded response content.\n\n- group\\_board\\_list\n\n    ```perl\n    my $list = $api-\u003egroup_board_list(\n        $group_id,\n        $board_id,\n        $list_id,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/boards/:board_id/lists/:list_id` and returns the decoded response content.\n\n- create\\_group\\_board\\_list\n\n    ```perl\n    my $list = $api-\u003ecreate_group_board_list(\n        $group_id,\n        $board_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `groups/:group_id/boards/:board_id/lists` and returns the decoded response content.\n\n- edit\\_group\\_board\\_list\n\n    ```perl\n    my $list = $api-\u003eedit_group_board_list(\n        $group_id,\n        $board_id,\n        $list_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `groups/:group_id/boards/:board_id/lists/:list_id` and returns the decoded response content.\n\n- delete\\_group\\_board\\_list\n\n    ```\n    $api-\u003edelete_group_board_list(\n        $group_id,\n        $board_id,\n        $list_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `groups/:group_id/boards/:board_id/lists/:list_id`.\n\n## Jobs\n\nSee [https://docs.gitlab.com/ce/api/jobs.html](https://docs.gitlab.com/ce/api/jobs.html).\n\n- jobs\n\n    ```perl\n    my $jobs = $api-\u003ejobs(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/jobs` and returns the decoded response content.\n\n- pipeline\\_jobs\n\n    ```perl\n    my $jobs = $api-\u003epipeline_jobs(\n        $project_id,\n        $pipeline_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/pipelines/:pipeline_id/jobs` and returns the decoded response content.\n\n- job\n\n    ```perl\n    my $job = $api-\u003ejob(\n        $project_id,\n        $job_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/jobs/:job_id` and returns the decoded response content.\n\n- job\\_artifacts\n\n    ```perl\n    my $artifacts = $api-\u003ejob_artifacts(\n        $project_id,\n        $job_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/jobs/:job_id/artifacts` and returns the decoded response content.\n\n- job\\_artifacts\\_archive\n\n    ```perl\n    my $archive = $api-\u003ejob_artifacts_archive(\n        $project_id,\n        $ref_name,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/jobs/artifacts/:ref_name/download` and returns the decoded response content.\n\n- job\\_artifacts\\_file\n\n    ```perl\n    my $file = $api-\u003ejob_artifacts_file(\n        $project_id,\n        $job_id,\n        $artifact_path,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/jobs/:job_id/artifacts/:artifact_path` and returns the decoded response content.\n\n- job\\_trace\\_file\n\n    ```perl\n    my $file = $api-\u003ejob_trace_file(\n        $project_id,\n        $job_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/jobs/:job_id/trace` and returns the decoded response content.\n\n- cancel\\_job\n\n    ```perl\n    my $job = $api-\u003ecancel_job(\n        $project_id,\n        $job_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/jobs/:job_id/cancel` and returns the decoded response content.\n\n- retry\\_job\n\n    ```perl\n    my $job = $api-\u003eretry_job(\n        $project_id,\n        $job_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/jobs/:job_id/retry` and returns the decoded response content.\n\n- erase\\_job\n\n    ```perl\n    my $job = $api-\u003eerase_job(\n        $project_id,\n        $job_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/jobs/:job_id/erase` and returns the decoded response content.\n\n- keep\\_job\\_artifacts\n\n    ```perl\n    my $job = $api-\u003ekeep_job_artifacts(\n        $project_id,\n        $job_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/jobs/:job_id/artifacts/keep` and returns the decoded response content.\n\n- play\\_job\n\n    ```perl\n    my $job = $api-\u003eplay_job(\n        $project_id,\n        $job_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/jobs/:job_id/play` and returns the decoded response content.\n\n## Keys\n\nSee [https://docs.gitlab.com/ce/api/keys.html](https://docs.gitlab.com/ce/api/keys.html).\n\n- key\n\n    ```perl\n    my $key = $api-\u003ekey(\n        $key_id,\n    );\n    ```\n\n    Sends a `GET` request to `keys/:key_id` and returns the decoded response content.\n\n## Labels\n\nSee [https://docs.gitlab.com/ce/api/labels.html](https://docs.gitlab.com/ce/api/labels.html).\n\n- labels\n\n    ```perl\n    my $labels = $api-\u003elabels(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/labels` and returns the decoded response content.\n\n- create\\_label\n\n    ```perl\n    my $label = $api-\u003ecreate_label(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/labels` and returns the decoded response content.\n\n- delete\\_label\n\n    ```\n    $api-\u003edelete_label(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/labels`.\n\n- edit\\_label\n\n    ```perl\n    my $label = $api-\u003eedit_label(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/labels` and returns the decoded response content.\n\n- subscribe\\_to\\_label\n\n    ```perl\n    my $label = $api-\u003esubscribe_to_label(\n        $project_id,\n        $label_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/labels/:label_id/subscribe` and returns the decoded response content.\n\n- unsubscribe\\_from\\_label\n\n    ```perl\n    $api-\u003eunsubscribe_from_label(\n        $project_id,\n        $label_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/labels/:label_id/unsubscribe`.\n\n## Markdown\n\nSee [https://docs.gitlab.com/ce/api/markdown.html](https://docs.gitlab.com/ce/api/markdown.html).\n\n- markdown\n\n    ```perl\n    my $html = $api-\u003emarkdown(\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `markdown` and returns the decoded response content.\n\n## Merge requests\n\nSee [https://docs.gitlab.com/ce/api/merge\\_requests.html](https://docs.gitlab.com/ce/api/merge_requests.html).\n\n- global\\_merge\\_requests\n\n    ```perl\n    my $merge_requests = $api-\u003eglobal_merge_requests(\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `merge_requests` and returns the decoded response content.\n\n- merge\\_requests\n\n    ```perl\n    my $merge_requests = $api-\u003emerge_requests(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests` and returns the decoded response content.\n\n- merge\\_request\n\n    ```perl\n    my $merge_request = $api-\u003emerge_request(\n        $project_id,\n        $merge_request_iid,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid` and returns the decoded response content.\n\n- merge\\_request\\_commits\n\n    ```perl\n    my $commits = $api-\u003emerge_request_commits(\n        $project_id,\n        $merge_request_iid,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/commits` and returns the decoded response content.\n\n- merge\\_request\\_with\\_changes\n\n    ```perl\n    my $merge_request = $api-\u003emerge_request_with_changes(\n        $project_id,\n        $merge_request_iid,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/changes` and returns the decoded response content.\n\n- create\\_merge\\_request\n\n    ```perl\n    my $merge_request = $api-\u003ecreate_merge_request(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests` and returns the decoded response content.\n\n- edit\\_merge\\_request\n\n    ```perl\n    my $merge_request = $api-\u003eedit_merge_request(\n        $project_id,\n        $merge_request_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/merge_requests/:merge_request_iid` and returns the decoded response content.\n\n- delete\\_merge\\_request\n\n    ```\n    $api-\u003edelete_merge_request(\n        $project_id,\n        $merge_request_iid,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/merge_requests/:merge_request_iid`.\n\n- accept\\_merge\\_request\n\n    ```perl\n    my $merge_request = $api-\u003eaccept_merge_request(\n        $project_id,\n        $merge_request_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/merge_requests/:merge_request_iid/merge` and returns the decoded response content.\n\n- approve\\_merge\\_request\n\n    ```perl\n    my $merge_request = $api-\u003eapprove_merge_request(\n        $project_id,\n        $merge_request_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests/:merge_request_iid/approve` and returns the decoded response content.\n\n- unapprove\\_merge\\_request\n\n    ```perl\n    my $merge_request = $api-\u003eunapprove_merge_request(\n        $project_id,\n        $merge_request_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests/:merge_request_iid/unapprove` and returns the decoded response content.\n\n- cancel\\_merge\\_when\\_pipeline\\_succeeds\n\n    ```perl\n    my $merge_request = $api-\u003ecancel_merge_when_pipeline_succeeds(\n        $project_id,\n        $merge_request_iid,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds` and returns the decoded response content.\n\n- merge\\_request\\_closes\\_issues\n\n    ```perl\n    my $issues = $api-\u003emerge_request_closes_issues(\n        $project_id,\n        $merge_request_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/closes_issues` and returns the decoded response content.\n\n- subscribe\\_to\\_merge\\_request\n\n    ```perl\n    my $merge_request = $api-\u003esubscribe_to_merge_request(\n        $project_id,\n        $merge_request_iid,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests/:merge_request_iid/subscribe` and returns the decoded response content.\n\n- unsubscribe\\_from\\_merge\\_request\n\n    ```perl\n    my $merge_request = $api-\u003eunsubscribe_from_merge_request(\n        $project_id,\n        $merge_request_iid,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests/:merge_request_iid/unsubscribe` and returns the decoded response content.\n\n- create\\_merge\\_request\\_todo\n\n    ```perl\n    my $todo = $api-\u003ecreate_merge_request_todo(\n        $project_id,\n        $merge_request_iid,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests/:merge_request_iid/todo` and returns the decoded response content.\n\n- merge\\_request\\_diff\\_versions\n\n    ```perl\n    my $versions = $api-\u003emerge_request_diff_versions(\n        $project_id,\n        $merge_request_iid,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/versions` and returns the decoded response content.\n\n- merge\\_request\\_diff\\_version\n\n    ```perl\n    my $version = $api-\u003emerge_request_diff_version(\n        $project_id,\n        $merge_request_iid,\n        $version_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/versions/:version_id` and returns the decoded response content.\n\n- set\\_merge\\_request\\_time\\_estimate\n\n    ```perl\n    my $tracking = $api-\u003eset_merge_request_time_estimate(\n        $project_id,\n        $merge_request_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests/:merge_request_iid/time_estimate` and returns the decoded response content.\n\n- reset\\_merge\\_request\\_time\\_estimate\n\n    ```perl\n    my $tracking = $api-\u003ereset_merge_request_time_estimate(\n        $project_id,\n        $merge_request_iid,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests/:merge_request_iid/reset_time_estimate` and returns the decoded response content.\n\n- add\\_merge\\_request\\_spent\\_time\n\n    ```perl\n    my $tracking = $api-\u003eadd_merge_request_spent_time(\n        $project_id,\n        $merge_request_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests/:merge_request_iid/add_spent_time` and returns the decoded response content.\n\n- reset\\_merge\\_request\\_spent\\_time\n\n    ```perl\n    my $tracking = $api-\u003ereset_merge_request_spent_time(\n        $project_id,\n        $merge_request_iid,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests/:merge_request_iid/reset_spent_time` and returns the decoded response content.\n\n- merge\\_request\\_time\\_stats\n\n    ```perl\n    my $tracking = $api-\u003emerge_request_time_stats(\n        $project_id,\n        $merge_request_iid,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/time_stats` and returns the decoded response content.\n\n## Milestones\n\nSee [https://docs.gitlab.com/ce/api/milestones.html](https://docs.gitlab.com/ce/api/milestones.html).\n\n- project\\_milestones\n\n    ```perl\n    my $milestones = $api-\u003eproject_milestones(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/milestones` and returns the decoded response content.\n\n- project\\_milestone\n\n    ```perl\n    my $milestone = $api-\u003eproject_milestone(\n        $project_id,\n        $milestone_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/milestones/:milestone_id` and returns the decoded response content.\n\n- create\\_project\\_milestone\n\n    ```perl\n    my $milestone = $api-\u003ecreate_project_milestone(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/milestones` and returns the decoded response content.\n\n- edit\\_project\\_milestone\n\n    ```perl\n    my $milestone = $api-\u003eedit_project_milestone(\n        $project_id,\n        $milestone_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/milestones/:milestone_id` and returns the decoded response content.\n\n- project\\_milestone\\_issues\n\n    ```perl\n    my $issues = $api-\u003eproject_milestone_issues(\n        $project_id,\n        $milestone_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/milestones/:milestone_id/issues` and returns the decoded response content.\n\n- project\\_milestone\\_merge\\_requests\n\n    ```perl\n    my $merge_requests = $api-\u003eproject_milestone_merge_requests(\n        $project_id,\n        $milestone_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/milestones/:milestone_id/merge_requests` and returns the decoded response content.\n\n## Group milestones\n\nSee [https://docs.gitlab.com/ce/api/group\\_milestones.html](https://docs.gitlab.com/ce/api/group_milestones.html).\n\n- group\\_milestones\n\n    ```perl\n    my $milestones = $api-\u003egroup_milestones(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/milestones` and returns the decoded response content.\n\n- group\\_milestone\n\n    ```perl\n    my $milestone = $api-\u003egroup_milestone(\n        $group_id,\n        $milestone_id,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/milestones/:milestone_id` and returns the decoded response content.\n\n- create\\_group\\_milestone\n\n    ```perl\n    my $milestone = $api-\u003ecreate_group_milestone(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `groups/:group_id/milestones` and returns the decoded response content.\n\n- edit\\_group\\_milestone\n\n    ```perl\n    my $milestone = $api-\u003eedit_group_milestone(\n        $group_id,\n        $milestone_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `groups/:group_id/milestones/:milestone_id` and returns the decoded response content.\n\n- group\\_milestone\\_issues\n\n    ```perl\n    my $issues = $api-\u003egroup_milestone_issues(\n        $group_id,\n        $milestone_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/milestones/:milestone_id/issues` and returns the decoded response content.\n\n- group\\_milestone\\_merge\\_requests\n\n    ```perl\n    my $merge_requests = $api-\u003egroup_milestone_merge_requests(\n        $group_id,\n        $milestone_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/milestones/:milestone_id/merge_requests` and returns the decoded response content.\n\n## Namespaces\n\nSee [https://docs.gitlab.com/ce/api/namespaces.html](https://docs.gitlab.com/ce/api/namespaces.html).\n\n- namespaces\n\n    ```perl\n    my $namespaces = $api-\u003enamespaces(\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `namespaces` and returns the decoded response content.\n\n- namespace\n\n    ```perl\n    my $namespace = $api-\u003enamespace(\n        $namespace_id,\n    );\n    ```\n\n    Sends a `GET` request to `namespaces/:namespace_id` and returns the decoded response content.\n\n## Notes\n\nSee [https://docs.gitlab.com/ce/api/notes.html](https://docs.gitlab.com/ce/api/notes.html).\n\n- issue\\_notes\n\n    ```perl\n    my $notes = $api-\u003eissue_notes(\n        $project_id,\n        $issue_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues/:issue_iid/notes` and returns the decoded response content.\n\n- issue\\_note\n\n    ```perl\n    my $note = $api-\u003eissue_note(\n        $project_id,\n        $issue_iid,\n        $note_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues/:issue_iid/notes/:note_id` and returns the decoded response content.\n\n- create\\_issue\\_note\n\n    ```perl\n    my $note = $api-\u003ecreate_issue_note(\n        $project_id,\n        $issue_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/issues/:issue_iid/notes` and returns the decoded response content.\n\n- edit\\_issue\\_note\n\n    ```\n    $api-\u003eedit_issue_note(\n        $project_id,\n        $issue_iid,\n        $note_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/issues/:issue_iid/notes/:note_id`.\n\n- delete\\_issue\\_note\n\n    ```\n    $api-\u003edelete_issue_note(\n        $project_id,\n        $issue_iid,\n        $note_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/issues/:issue_iid/notes/:note_id`.\n\n- snippet\\_notes\n\n    ```perl\n    my $notes = $api-\u003esnippet_notes(\n        $project_id,\n        $snippet_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/snippets/:snippet_id/notes` and returns the decoded response content.\n\n- snippet\\_note\n\n    ```perl\n    my $note = $api-\u003esnippet_note(\n        $project_id,\n        $snippet_id,\n        $note_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/snippets/:snippet_id/notes/:note_id` and returns the decoded response content.\n\n- create\\_snippet\\_note\n\n    ```perl\n    my $note = $api-\u003ecreate_snippet_note(\n        $project_id,\n        $snippet_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/snippets/:snippet_id/notes` and returns the decoded response content.\n\n- edit\\_snippet\\_note\n\n    ```\n    $api-\u003eedit_snippet_note(\n        $project_id,\n        $snippet_id,\n        $note_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/snippets/:snippet_id/notes/:note_id`.\n\n- delete\\_snippet\\_note\n\n    ```\n    $api-\u003edelete_snippet_note(\n        $project_id,\n        $snippet_id,\n        $note_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/snippets/:snippet_id/notes/:note_id`.\n\n- merge\\_request\\_notes\n\n    ```perl\n    my $notes = $api-\u003emerge_request_notes(\n        $project_id,\n        $merge_request_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/notes` and returns the decoded response content.\n\n- merge\\_request\\_note\n\n    ```perl\n    my $note = $api-\u003emerge_request_note(\n        $project_id,\n        $merge_request_iid,\n        $note_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/notes/:note_id` and returns the decoded response content.\n\n- create\\_merge\\_request\\_note\n\n    ```perl\n    my $note = $api-\u003ecreate_merge_request_note(\n        $project_id,\n        $merge_request_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests/:merge_request_iid/notes` and returns the decoded response content.\n\n- edit\\_merge\\_request\\_note\n\n    ```\n    $api-\u003eedit_merge_request_note(\n        $project_id,\n        $merge_request_iid,\n        $note_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/merge_requests/:merge_request_iid/notes/:note_id`.\n\n- delete\\_merge\\_request\\_note\n\n    ```\n    $api-\u003edelete_merge_request_note(\n        $project_id,\n        $merge_request_iid,\n        $note_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/merge_requests/:merge_request_iid/notes/:note_id`.\n\n## Discussions\n\nSee [https://docs.gitlab.com/ce/api/discussions.html](https://docs.gitlab.com/ce/api/discussions.html).\n\n- issue\\_discussions\n\n    ```perl\n    my $discussions = $api-\u003eissue_discussions(\n        $project_id,\n        $issue_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues/:issue_iid/discussions` and returns the decoded response content.\n\n- issue\\_discussion\n\n    ```perl\n    my $discussion = $api-\u003eissue_discussion(\n        $project_id,\n        $issue_iid,\n        $discussion_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues/:issue_iid/discussions/:discussion_id` and returns the decoded response content.\n\n- create\\_issue\\_discussion\n\n    ```perl\n    my $discussion = $api-\u003ecreate_issue_discussion(\n        $project_id,\n        $issue_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/issues/:issue_iid/discussions` and returns the decoded response content.\n\n- create\\_issue\\_discussion\\_note\n\n    ```\n    $api-\u003ecreate_issue_discussion_note(\n        $project_id,\n        $issue_iid,\n        $discussion_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/issues/:issue_iid/discussions/:discussion_id/notes`.\n\n- edit\\_issue\\_discussion\\_note\n\n    ```\n    $api-\u003eedit_issue_discussion_note(\n        $project_id,\n        $issue_iid,\n        $discussion_id,\n        $note_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/issues/:issue_iid/discussions/:discussion_id/notes/:note_id`.\n\n- delete\\_issue\\_discussion\\_note\n\n    ```\n    $api-\u003edelete_issue_discussion_note(\n        $project_id,\n        $issue_iid,\n        $discussion_id,\n        $note_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/issues/:issue_iid/discussions/:discussion_id/notes/:note_id`.\n\n- project\\_snippet\\_discussions\n\n    ```perl\n    my $discussions = $api-\u003eproject_snippet_discussions(\n        $project_id,\n        $snippet_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/snippets/:snippet_id/discussions` and returns the decoded response content.\n\n- project\\_snippet\\_discussion\n\n    ```perl\n    my $discussion = $api-\u003eproject_snippet_discussion(\n        $project_id,\n        $snippet_id,\n        $discussion_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/snippets/:snippet_id/discussions/:discussion_id` and returns the decoded response content.\n\n- create\\_project\\_snippet\\_discussion\n\n    ```perl\n    my $discussion = $api-\u003ecreate_project_snippet_discussion(\n        $project_id,\n        $snippet_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/snippets/:snippet_id/discussions` and returns the decoded response content.\n\n- create\\_project\\_snippet\\_discussion\\_note\n\n    ```\n    $api-\u003ecreate_project_snippet_discussion_note(\n        $project_id,\n        $snippet_id,\n        $discussion_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/snippets/:snippet_id/discussions/:discussion_id/notes`.\n\n- edit\\_project\\_snippet\\_discussion\\_note\n\n    ```\n    $api-\u003eedit_project_snippet_discussion_note(\n        $project_id,\n        $snippet_id,\n        $discussion_id,\n        $note_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/snippets/:snippet_id/discussions/:discussion_id/notes/:note_id`.\n\n- delete\\_project\\_snippet\\_discussion\\_note\n\n    ```\n    $api-\u003edelete_project_snippet_discussion_note(\n        $project_id,\n        $snippet_id,\n        $discussion_id,\n        $note_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/snippets/:snippet_id/discussions/:discussion_id/notes/:note_id`.\n\n- merge\\_request\\_discussions\n\n    ```perl\n    my $discussions = $api-\u003emerge_request_discussions(\n        $project_id,\n        $merge_request_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/discussions` and returns the decoded response content.\n\n- merge\\_request\\_discussion\n\n    ```perl\n    my $discussion = $api-\u003emerge_request_discussion(\n        $project_id,\n        $merge_request_iid,\n        $discussion_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/discussions/:discussion_id` and returns the decoded response content.\n\n- create\\_merge\\_request\\_discussion\n\n    ```perl\n    my $discussion = $api-\u003ecreate_merge_request_discussion(\n        $project_id,\n        $merge_request_iid,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests/:merge_request_iid/discussions` and returns the decoded response content.\n\n- resolve\\_merge\\_request\\_discussion\n\n    ```\n    $api-\u003eresolve_merge_request_discussion(\n        $project_id,\n        $merge_request_iid,\n        $discussion_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/merge_requests/:merge_request_iid/discussions/:discussion_id`.\n\n- create\\_merge\\_request\\_discussion\\_note\n\n    ```\n    $api-\u003ecreate_merge_request_discussion_note(\n        $project_id,\n        $merge_request_iid,\n        $discussion_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/merge_requests/:merge_request_iid/discussions/:discussion_id/notes`.\n\n- edit\\_merge\\_request\\_discussion\\_note\n\n    ```\n    $api-\u003eedit_merge_request_discussion_note(\n        $project_id,\n        $merge_request_iid,\n        $discussion_id,\n        $note_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/merge_requests/:merge_request_iid/discussions/:discussion_id/notes/:note_id`.\n\n- delete\\_merge\\_request\\_discussion\\_note\n\n    ```\n    $api-\u003edelete_merge_request_discussion_note(\n        $project_id,\n        $merge_request_iid,\n        $discussion_id,\n        $note_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/merge_requests/:merge_request_iid/discussions/:discussion_id/notes/:note_id`.\n\n- commit\\_discussions\n\n    ```perl\n    my $discussions = $api-\u003ecommit_discussions(\n        $project_id,\n        $commit_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/commits/:commit_id/discussions` and returns the decoded response content.\n\n- commit\\_discussion\n\n    ```perl\n    my $discussion = $api-\u003ecommit_discussion(\n        $project_id,\n        $commit_id,\n        $discussion_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/commits/:commit_id/discussions/:discussion_id` and returns the decoded response content.\n\n- create\\_commit\\_discussion\n\n    ```perl\n    my $discussion = $api-\u003ecreate_commit_discussion(\n        $project_id,\n        $commit_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/commits/:commit_id/discussions` and returns the decoded response content.\n\n- create\\_commit\\_discussion\\_note\n\n    ```\n    $api-\u003ecreate_commit_discussion_note(\n        $project_id,\n        $commit_id,\n        $discussion_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/commits/:commit_id/discussions/:discussion_id/notes`.\n\n- edit\\_commit\\_discussion\\_note\n\n    ```\n    $api-\u003eedit_commit_discussion_note(\n        $project_id,\n        $commit_id,\n        $discussion_id,\n        $note_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/commits/:commit_id/discussions/:discussion_id/notes/:note_id`.\n\n- delete\\_commit\\_discussion\\_note\n\n    ```\n    $api-\u003edelete_commit_discussion_note(\n        $project_id,\n        $commit_id,\n        $discussion_id,\n        $note_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/commits/:commit_id/discussions/:discussion_id/notes/:note_id`.\n\n## Resource label events\n\nSee [https://docs.gitlab.com/ce/api/resource\\_label\\_events.html](https://docs.gitlab.com/ce/api/resource_label_events.html).\n\n- issue\\_resource\\_label\\_events\n\n    ```perl\n    my $events = $api-\u003eissue_resource_label_events(\n        $project_id,\n        $issue_iid,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues/:issue_iid/resource_label_events` and returns the decoded response content.\n\n- issue\\_resource\\_label\\_event\n\n    ```perl\n    my $event = $api-\u003eissue_resource_label_event(\n        $project_id,\n        $issue_iid,\n        $resource_label_event_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/issues/:issue_iid/resource_label_events/:resource_label_event_id` and returns the decoded response content.\n\n- merge\\_request\\_resource\\_label\\_events\n\n    ```perl\n    my $events = $api-\u003emerge_request_resource_label_events(\n        $project_id,\n        $merge_request_iid,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/resource_label_events` and returns the decoded response content.\n\n- merge\\_request\\_resource\\_label\\_event\n\n    ```perl\n    my $event = $api-\u003emerge_request_resource_label_event(\n        $project_id,\n        $merge_request_iid,\n        $resource_label_event_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/merge_requests/:merge_request_iid/resource_label_events/:resource_label_event_id` and returns the decoded response content.\n\n## Notification settings\n\nSee [https://docs.gitlab.com/ce/api/notification\\_settings.html](https://docs.gitlab.com/ce/api/notification_settings.html).\n\n- global\\_notification\\_settings\n\n    ```perl\n    my $settings = $api-\u003eglobal_notification_settings();\n    ```\n\n    Sends a `GET` request to `notification_settings` and returns the decoded response content.\n\n- set\\_global\\_notification\\_settings\n\n    ```perl\n    my $settings = $api-\u003eset_global_notification_settings(\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `notification_settings` and returns the decoded response content.\n\n- group\\_notification\\_settings\n\n    ```perl\n    my $settings = $api-\u003egroup_notification_settings(\n        $group_id,\n    );\n    ```\n\n    Sends a `GET` request to `groups/:group_id/notification_settings` and returns the decoded response content.\n\n- project\\_notification\\_settings\n\n    ```perl\n    my $settings = $api-\u003eproject_notification_settings(\n        $project_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/notification_settings` and returns the decoded response content.\n\n- set\\_group\\_notification\\_settings\n\n    ```perl\n    my $settings = $api-\u003eset_group_notification_settings(\n        $group_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `groups/:group_id/notification_settings` and returns the decoded response content.\n\n- set\\_project\\_notification\\_settings\n\n    ```perl\n    my $settings = $api-\u003eset_project_notification_settings(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/notification_settings` and returns the decoded response content.\n\n## Licenses\n\nSee [https://docs.gitlab.com/ce/api/templates/licenses.html](https://docs.gitlab.com/ce/api/templates/licenses.html).\n\n- license\\_templates\n\n    ```perl\n    my $templates = $api-\u003elicense_templates(\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `templates/licenses` and returns the decoded response content.\n\n- license\\_template\n\n    ```perl\n    my $template = $api-\u003elicense_template(\n        $template_key,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `templates/licenses/:template_key` and returns the decoded response content.\n\n## Pages domains\n\nSee [https://docs.gitlab.com/ce/api/pages\\_domains.html](https://docs.gitlab.com/ce/api/pages_domains.html).\n\n- global\\_pages\\_domains\n\n    ```perl\n    my $domains = $api-\u003eglobal_pages_domains(\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `pages/domains` and returns the decoded response content.\n\n- pages\\_domains\n\n    ```perl\n    my $domains = $api-\u003epages_domains(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/pages/domains` and returns the decoded response content.\n\n- pages\\_domain\n\n    ```perl\n    my $domain = $api-\u003epages_domain(\n        $project_id,\n        $domain,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/pages/domains/:domain` and returns the decoded response content.\n\n- create\\_pages\\_domain\n\n    ```perl\n    my $domain = $api-\u003ecreate_pages_domain(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/pages/domains` and returns the decoded response content.\n\n- edit\\_pages\\_domain\n\n    ```perl\n    my $domain = $api-\u003eedit_pages_domain(\n        $project_id,\n        $domain,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/pages/domains/:domain` and returns the decoded response content.\n\n- delete\\_pages\\_domain\n\n    ```\n    $api-\u003edelete_pages_domain(\n        $project_id,\n        $domain,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/pages/domains/:domain`.\n\n## Pipelines\n\nSee [https://docs.gitlab.com/ce/api/pipelines.html](https://docs.gitlab.com/ce/api/pipelines.html).\n\n- pipelines\n\n    ```perl\n    my $pipelines = $api-\u003epipelines(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/pipelines` and returns the decoded response content.\n\n- pipeline\n\n    ```perl\n    my $pipeline = $api-\u003epipeline(\n        $project_id,\n        $pipeline_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/pipelines/:pipeline_id` and returns the decoded response content.\n\n- create\\_pipeline\n\n    ```perl\n    my $pipeline = $api-\u003ecreate_pipeline(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/pipeline` and returns the decoded response content.\n\n    Git ref (branch or tag) name must be specified in the `ref` field of the\n    `%params` hash. It's also possible to pass variables to a pipeline in\n    the `variables` field like in the following example:\n\n    ```perl\n    my $pipeline = $api-\u003ecreate_pipeline(\n        $project_id,\n        {\n            'ref'     =\u003e 'master',\n            variables =\u003e [\n                { 'key' =\u003e 'VARIABLE1', 'value' =\u003e 'VALUE1' },\n                { 'key' =\u003e 'VARIABLE2', 'value' =\u003e 'VALUE2' },\n            ],\n        },\n    );\n    ```\n\n- retry\\_pipeline\\_jobs\n\n    ```perl\n    my $pipeline = $api-\u003eretry_pipeline_jobs(\n        $project_id,\n        $pipeline_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/pipelines/:pipeline_id/retry` and returns the decoded response content.\n\n- cancel\\_pipeline\\_jobs\n\n    ```perl\n    my $pipeline = $api-\u003ecancel_pipeline_jobs(\n        $project_id,\n        $pipeline_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/pipelines/:pipeline_id/cancel` and returns the decoded response content.\n\n- delete\\_pipeline\n\n    ```\n    $api-\u003edelete_pipeline(\n        $project_id,\n        $pipeline_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/pipelines/:pipeline_id`.\n\n## Pipeline triggers\n\nSee [https://docs.gitlab.com/ce/api/pipeline\\_triggers.html](https://docs.gitlab.com/ce/api/pipeline_triggers.html).\n\n- triggers\n\n    ```perl\n    my $triggers = $api-\u003etriggers(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/triggers` and returns the decoded response content.\n\n- trigger\n\n    ```perl\n    my $trigger = $api-\u003etrigger(\n        $project_id,\n        $trigger_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/triggers/:trigger_id` and returns the decoded response content.\n\n- create\\_trigger\n\n    ```perl\n    my $trigger = $api-\u003ecreate_trigger(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/triggers` and returns the decoded response content.\n\n- edit\\_trigger\n\n    ```perl\n    my $trigger = $api-\u003eedit_trigger(\n        $project_id,\n        $trigger_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/triggers/:trigger_id` and returns the decoded response content.\n\n- take\\_ownership\\_of\\_trigger\n\n    ```perl\n    my $trigger = $api-\u003etake_ownership_of_trigger(\n        $project_id,\n        $trigger_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/triggers/:trigger_id/take_ownership` and returns the decoded response content.\n\n- delete\\_trigger\n\n    ```\n    $api-\u003edelete_trigger(\n        $project_id,\n        $trigger_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/triggers/:trigger_id`.\n\n- trigger\\_pipeline\n\n    ```perl\n    my $pipeline = $api-\u003etrigger_pipeline(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/trigger/pipeline` and returns the decoded response content.\n\n    The API authentication token ([\"private\\_token\"](#private_token) or [\"access\\_token\"](#access_token)\n    parameters in a constructor) is not needed when using this method, however\n    You must pass trigger token (generated at the trigger creation) as `token`\n    field and git ref name as `ref` field in the `%params` hash. You can also\n    pass variables to be set in a pipeline in the `variables` field. Example:\n\n    ```perl\n    my $pipeline = $api-\u003etrigger_pipeline(\n        $project_id,\n        {\n            token =\u003e 'd69dba9162ab6ac72fa0993496286ada',\n            'ref' =\u003e 'master',\n            variables =\u003e {\n                variable1 =\u003e 'value1',\n                variable2 =\u003e 'value2',\n            },\n        },\n    );\n    ```\n\n    Read more at [https://docs.gitlab.com/ce/ci/triggers/#triggering-a-pipeline](https://docs.gitlab.com/ce/ci/triggers/#triggering-a-pipeline).\n\n## Pipeline schedules\n\nSee [https://docs.gitlab.com/ce/api/pipeline\\_schedules.html](https://docs.gitlab.com/ce/api/pipeline_schedules.html).\n\n- pipeline\\_schedules\n\n    ```perl\n    my $schedules = $api-\u003epipeline_schedules(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/pipeline_schedules` and returns the decoded response content.\n\n- pipeline\\_schedule\n\n    ```perl\n    my $schedule = $api-\u003epipeline_schedule(\n        $project_id,\n        $pipeline_schedule_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/pipeline_schedules/:pipeline_schedule_id` and returns the decoded response content.\n\n- create\\_pipeline\\_schedule\n\n    ```perl\n    my $schedule = $api-\u003ecreate_pipeline_schedule(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/pipeline_schedules` and returns the decoded response content.\n\n- edit\\_pipeline\\_schedule\n\n    ```perl\n    my $schedule = $api-\u003eedit_pipeline_schedule(\n        $project_id,\n        $pipeline_schedule_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/pipeline_schedules/:pipeline_schedule_id` and returns the decoded response content.\n\n- take\\_ownership\\_of\\_pipeline\\_schedule\n\n    ```perl\n    my $schedule = $api-\u003etake_ownership_of_pipeline_schedule(\n        $project_id,\n        $pipeline_schedule_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/pipeline_schedules/:pipeline_schedule_id/take_ownership` and returns the decoded response content.\n\n- run\\_pipeline\\_schedule\n\n    ```perl\n    my $variable = $api-\u003erun_pipeline_schedule(\n        $project_id,\n        $pipeline_schedule_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/pipeline_schedules/:pipeline_schedule_id/play` and returns the decoded response content.\n\n- delete\\_pipeline\\_schedule\n\n    ```perl\n    my $schedule = $api-\u003edelete_pipeline_schedule(\n        $project_id,\n        $pipeline_schedule_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/pipeline_schedules/:pipeline_schedule_id` and returns the decoded response content.\n\n- create\\_pipeline\\_schedule\\_variable\n\n    ```perl\n    my $variable = $api-\u003ecreate_pipeline_schedule_variable(\n        $project_id,\n        $pipeline_schedule_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/pipeline_schedules/:pipeline_schedule_id/variables` and returns the decoded response content.\n\n- edit\\_pipeline\\_schedule\\_variable\n\n    ```perl\n    my $variable = $api-\u003eedit_pipeline_schedule_variable(\n        $project_id,\n        $pipeline_schedule_id,\n        $variable_key,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/pipeline_schedules/:pipeline_schedule_id/variables/:variable_key` and returns the decoded response content.\n\n- delete\\_pipeline\\_schedule\\_variable\n\n    ```perl\n    my $variable = $api-\u003edelete_pipeline_schedule_variable(\n        $project_id,\n        $pipeline_schedule_id,\n        $variable_key,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/pipeline_schedules/:pipeline_schedule_id/variables/:variable_key` and returns the decoded response content.\n\n## Projects\n\nSee [https://docs.gitlab.com/ce/api/projects.html](https://docs.gitlab.com/ce/api/projects.html).\n\n- projects\n\n    ```perl\n    my $projects = $api-\u003eprojects(\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects` and returns the decoded response content.\n\n- user\\_projects\n\n    ```perl\n    my $projects = $api-\u003euser_projects(\n        $user_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `users/:user_id/projects` and returns the decoded response content.\n\n- project\n\n    ```perl\n    my $project = $api-\u003eproject(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id` and returns the decoded response content.\n\n- project\\_users\n\n    ```perl\n    my $users = $api-\u003eproject_users(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/users` and returns the decoded response content.\n\n- create\\_project\n\n    ```perl\n    my $project = $api-\u003ecreate_project(\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects` and returns the decoded response content.\n\n- create\\_project\\_for\\_user\n\n    ```perl\n    $api-\u003ecreate_project_for_user(\n        $user_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/user/:user_id`.\n\n- edit\\_project\n\n    ```\n    $api-\u003eedit_project(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id`.\n\n- fork\\_project\n\n    ```\n    $api-\u003efork_project(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/fork`.\n\n- project\\_forks\n\n    ```perl\n    my $forks = $api-\u003eproject_forks(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/forks` and returns the decoded response content.\n\n- start\\_project\n\n    ```perl\n    my $project = $api-\u003estart_project(\n        $project_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/star` and returns the decoded response content.\n\n- unstar\\_project\n\n    ```perl\n    my $project = $api-\u003eunstar_project(\n        $project_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/unstar` and returns the decoded response content.\n\n- project\\_languages\n\n    ```perl\n    my $languages = $api-\u003eproject_languages(\n        $project_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/languages` and returns the decoded response content.\n\n- archive\\_project\n\n    ```perl\n    my $project = $api-\u003earchive_project(\n        $project_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/archive` and returns the decoded response content.\n\n- unarchive\\_project\n\n    ```perl\n    my $project = $api-\u003eunarchive_project(\n        $project_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/unarchive` and returns the decoded response content.\n\n- delete\\_project\n\n    ```\n    $api-\u003edelete_project(\n        $project_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id`.\n\n- upload\\_file\\_to\\_project\n\n    ```perl\n    my $upload = $api-\u003eupload_file_to_project(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/uploads` and returns the decoded response content.\n\n    The `file` parameter must point to a readable file on the local filesystem.\n\n- share\\_project\\_with\\_group\n\n    ```\n    $api-\u003eshare_project_with_group(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/share`.\n\n- unshare\\_project\\_with\\_group\n\n    ```\n    $api-\u003eunshare_project_with_group(\n        $project_id,\n        $group_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/share/:group_id`.\n\n- project\\_hooks\n\n    ```perl\n    my $hooks = $api-\u003eproject_hooks(\n        $project_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/hooks` and returns the decoded response content.\n\n- project\\_hook\n\n    ```perl\n    my $hook = $api-\u003eproject_hook(\n        $project_id,\n        $hook_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/hooks/:hook_id` and returns the decoded response content.\n\n- create\\_project\\_hook\n\n    ```perl\n    my $hook = $api-\u003ecreate_project_hook(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/hooks` and returns the decoded response content.\n\n- edit\\_project\\_hook\n\n    ```perl\n    my $hook = $api-\u003eedit_project_hook(\n        $project_id,\n        $hook_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/hooks/:hook_id` and returns the decoded response content.\n\n- delete\\_project\\_hook\n\n    ```\n    $api-\u003edelete_project_hook(\n        $project_id,\n        $hook_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/hooks/:hook_id`.\n\n- set\\_project\\_fork\n\n    ```\n    $api-\u003eset_project_fork(\n        $project_id,\n        $from_project_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/fork/:from_project_id`.\n\n- clear\\_project\\_fork\n\n    ```\n    $api-\u003eclear_project_fork(\n        $project_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/fork`.\n\n- start\\_housekeeping\n\n    ```perl\n    $api-\u003estart_housekeeping(\n        $project_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/housekeeping`.\n\n- transfer\\_project\\_to\\_namespace\n\n    ```\n    $api-\u003etransfer_project_to_namespace(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/transfer`.\n\n## Project access requests\n\nSee [https://docs.gitlab.com/ce/api/access\\_requests.html](https://docs.gitlab.com/ce/api/access_requests.html).\n\n- project\\_access\\_requests\n\n    ```perl\n    my $requests = $api-\u003eproject_access_requests(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/access_requests` and returns the decoded response content.\n\n- request\\_project\\_access\n\n    ```perl\n    my $request = $api-\u003erequest_project_access(\n        $project_id,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/access_requests` and returns the decoded response content.\n\n- approve\\_project\\_access\n\n    ```perl\n    my $request = $api-\u003eapprove_project_access(\n        $project_id,\n        $user_id,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/access_requests/:user_id/approve` and returns the decoded response content.\n\n- deny\\_project\\_access\n\n    ```perl\n    $api-\u003edeny_project_access(\n        $project_id,\n        $user_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/access_requests/:user_id`.\n\n## Project badges\n\nSee [https://docs.gitlab.com/ce/api/project\\_badges.html](https://docs.gitlab.com/ce/api/project_badges.html).\n\n- project\\_badges\n\n    ```perl\n    my $badges = $api-\u003eproject_badges(\n        $project_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/badges` and returns the decoded response content.\n\n- project\\_badge\n\n    ```perl\n    my $badge = $api-\u003eproject_badge(\n        $project_id,\n        $badge_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/badges/:badge_id` and returns the decoded response content.\n\n- create\\_project\\_badge\n\n    ```perl\n    my $badge = $api-\u003ecreate_project_badge(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/badges` and returns the decoded response content.\n\n- edit\\_project\\_badge\n\n    ```perl\n    my $badge = $api-\u003eedit_project_badge(\n        $project_id,\n        $badge_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/badges/:badge_id` and returns the decoded response content.\n\n- delete\\_project\\_badge\n\n    ```\n    $api-\u003edelete_project_badge(\n        $project_id,\n        $badge_id,\n    );\n    ```\n\n    Sends a `DELETE` request to `projects/:project_id/badges/:badge_id`.\n\n- preview\\_project\\_badge\n\n    ```perl\n    my $preview = $api-\u003epreview_project_badge(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/badges/render` and returns the decoded response content.\n\n## Project import/export\n\nSee [https://docs.gitlab.com/ce/api/project\\_import\\_export.html](https://docs.gitlab.com/ce/api/project_import_export.html).\n\n- schedule\\_project\\_export\n\n    ```\n    $api-\u003eschedule_project_export(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/export`.\n\n- project\\_export\\_status\n\n    ```perl\n    my $status = $api-\u003eproject_export_status(\n        $project_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/export` and returns the decoded response content.\n\n- download\\_project\\_export\n\n    ```perl\n    my $download = $api-\u003edownload_project_export(\n        $project_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/export/download` and returns the decoded response content.\n\n- schedule\\_project\\_import\n\n    ```\n    $api-\u003eschedule_project_import(\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/import`.\n\n- project\\_import\\_status\n\n    ```perl\n    my $status = $api-\u003eproject_import_status(\n        $project_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/import` and returns the decoded response content.\n\n## Project members\n\nSee [https://docs.gitlab.com/ce/api/members.html](https://docs.gitlab.com/ce/api/members.html).\n\n- project\\_members\n\n    ```perl\n    my $members = $api-\u003eproject_members(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/members` and returns the decoded response content.\n\n- all\\_project\\_members\n\n    ```perl\n    my $members = $api-\u003eall_project_members(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/members/all` and returns the decoded response content.\n\n- project\\_member\n\n    ```perl\n    my $member = $api-\u003eproject_member(\n        $project_id,\n        $user_id,\n    );\n    ```\n\n    Sends a `GET` request to `projects/:project_id/members/:user_id` and returns the decoded response content.\n\n- add\\_project\\_member\n\n    ```perl\n    my $member = $api-\u003eadd_project_member(\n        $project_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `POST` request to `projects/:project_id/members` and returns the decoded response content.\n\n- update\\_project\\_member\n\n    ```perl\n    my $member = $api-\u003eupdate_project_member(\n        $project_id,\n        $user_id,\n        \\%params,\n    );\n    ```\n\n    Sends a `PUT` request to `projects/:project_id/members/:user_id` and returns the decoded response content.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluefeet%2Fgitlab-api-v4","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbluefeet%2Fgitlab-api-v4","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluefeet%2Fgitlab-api-v4/lists"}