GitLab::API::v3(3)

NAME
GitLab::API::v3 - A complete GitLab API v3 client. (DEPRECATED)

SYNOPSIS
    use GitLab::API::v3;

    my $api = GitLab::API::v3->new(
        url   => $v3_api_url,
        token => $token,
    );

    my $branches = $api->branches( $project_id );

  DEPRECATED
This module is at the end of it's life as the latest GitLab no longer supports the v3 API. Instead, use GitLab::API::v4.

DESCRIPTION
This module provides a one-to-one interface with the GitLab API v3. Much is not documented here as it would just be duplicating GitLab's own API Documentation <http://doc.gitlab.com/ce/api/README.html>.

Note that this distribution also includes the gitlab-api-v3 command-line interface (CLI).

CREDENTIALS
Authentication credentials may be defined by setting either the "token", the "login" and "password", or the "email" and "password" arguments.

When the object is constructed the "login", "email", and "password" arguments are used to call "session" to generate a token. The token is saved in the "token" attribute, and the login/email/password arguments are discarded.

If no credentials are supplied then the client will be anonymous and greatly limited in what it can do with the API.

  CONSTANTS
Several values in the GitLab API require looking up the numeric value for a meaning (such as "access_level" and "visibility_level"). Instead of doing that, you can use GitLab::API::v3::Constants.

  EXCEPTIONS
The API methods will all throw (hopefully) a useful exception if an unsuccessful response is received from the API. That is except for "GET" requests that return a 404 response - these will return "undef" for methods that return a value.

If you'd like to catch and handle these exceptions consider using Try::Tiny.

  LOGGING
This module uses Log::Any and produces some debug messages here and there, but the most useful bits are the info messages produced just before each API call.

  PROJECT ID
Note that many API calls require a $project_id. This can be specified as either a numeric project "ID", or as a "NAMESPACE_PATH/PROJECT_PATH" in many cases. Perhaps even all cases, but the GitLab documentation on this point is vague.

  RETURN VALUES
Many of this module's methods should return a value but do not currently. This is due to the fact that this module was built as a strict representation of GitLab's own documentation which is often inconsistent.

If you find a method that should provide a return value, but doesn't currently, please verify that GitLab actually does return a value and then submit a pull request or open an issue. See "CONTRIBUTING" for more info.

REQUIRED ARGUMENTS

  url
The URL to your v3 API endpoint. Typically this will be something like "http://git.example.com/api/v3".

OPTIONAL ARGUMENTS

  token
A GitLab API token. If set then neither "login" or "email" may be set. Read more in "CREDENTIALS".

  login
A GitLab user login name. If set then "password" must be set. Read more in "CREDENTIALS".

  email
A GitLab user email. If set then "password" must be set. Read more in "CREDENTIALS".

  password
A GitLab user password. This must be set if either "login" or "email" are set. Read more in "CREDENTIALS".

  rest_client
An instance of GitLab::API::v3::RESTClient. Typically you will not be setting this as it defaults to a new instance and customization should not be necessary.

  retries
The number of times the request should be retried in case it does not succeed. Defaults to 0, meaning that a failed request will not be retried.

UTILITY METHODS

  paginator
    my $paginator = $api->paginator( $method, @method_args );

    my $members = $api->paginator('group_members', $group_id);
    while (my $member = $members->next()) {
        ...
    }

    my $users_pager = $api->paginator('users');
    while (my $users = $users_pager->next_page()) {
        ...
    }

    my $all_open_issues = $api->paginator(
        'issues',
        $project_id,
        { state=>'opened' },
    )->all();

Given a method who supports the "page" and "per_page" parameters, and returns an array ref, this will return a GitLab::API::v3::Paginator object that will allow you to walk the records one page or one record at a time.

AWARD EMOJI METHODS
See <http://docs.gitlab.com/ce/api/award_emoji.html>.

  issue_award_emojis
    my $award_emojis = $api->issue_award_emojis(
        $id,
        $issue_id,
    );

Sends a "GET" request to "/projects/:id/issues/:issue_id/award_emoji" and returns the decoded/deserialized response body.

  merge_request_award_emojis
    my $award_emojis = $api->merge_request_award_emojis(
        $id,
        $merge_request_id,
    );

Sends a "GET" request to "/projects/:id/merge_requests/:merge_request_id/award_emoji" and returns the decoded/deserialized response body.

  issue_award_emoji
    my $award_emoji = $api->issue_award_emoji(
        $id,
        $issue_id,
        $award_id,
    );

Sends a "GET" request to "/projects/:id/issues/:issue_id/award_emoji/:award_id" and returns the decoded/deserialized response body.

  merge_request_award_emoji
    my $award_emoji = $api->merge_request_award_emoji(
        $id,
        $merge_request_id,
        $award_id,
    );

Sends a "GET" request to "/projects/:id/merge_requests/:merge_request_id/award_emoji/:award_id" and returns the decoded/deserialized response body.

  create_issue_award_emoji
    my $award_emoji = $api->create_issue_award_emoji(
        $id,
        $issue_id,
        \%params,
    );

Sends a "POST" request to "/projects/:id/issues/:issue_id/award_emoji" and returns the decoded/deserialized response body.

  create_merge_request_award_emoji
    my $award_emoji = $api->create_merge_request_award_emoji(
        $id,
        $merge_request_id,
        \%params,
    );

Sends a "POST" request to "/projects/:id/merge_requests/:merge_request_id/award_emoji" and returns the decoded/deserialized response body.

  delete_issue_award_emoji
    my $award_emoji = $api->delete_issue_award_emoji(
        $id,
        $issue_id,
        $award_id,
    );

Sends a "DELETE" request to "/projects/:id/issues/:issue_id/award_emoji/:award_id" and returns the decoded/deserialized response body.

  delete_merge_request_award_emoji
    my $award_emoji = $api->delete_merge_request_award_emoji(
        $id,
        $merge_request_id,
        $award_id,
    );

Sends a "DELETE" request to "/projects/:id/merge_requests/:merge_request_id/award_emoji/:award_id" and returns the decoded/deserialized response body.

  issue_note_award_emojis
    my $award_emojis = $api->issue_note_award_emojis(
        $id,
        $issue_id,
        $note_id,
    );

Sends a "GET" request to "/projects/:id/issues/:issue_id/notes/:note_id/award_emoji" and returns the decoded/deserialized response body.

  issue_note_award_emoji
    my $award_emoji = $api->issue_note_award_emoji(
        $id,
        $issue_id,
        $note_id,
        $award_id,
    );

Sends a "GET" request to "/projects/:id/issues/:issue_id/notes/:note_id/award_emoji/:award_id" and returns the decoded/deserialized response body.

  create_issue_note_award_emoji
    my $award_emoji = $api->create_issue_note_award_emoji(
        $id,
        $issue_id,
        $note_id,
        \%params,
    );

Sends a "POST" request to "/projects/:id/issues/:issue_id/notes/:note_id/award_emoji" and returns the decoded/deserialized response body.

  delete_issue_note_award_emoji
    my $award_emoji = $api->delete_issue_note_award_emoji(
        $id,
        $issue_id,
        $note_id,
        $award_id,
    );

Sends a "DELETE" request to "/projects/:id/issues/:issue_id/notes/:note_id/award_emoji/:award_id" and returns the decoded/deserialized response body.

  merge_request_note_award_emojis
    my $award_emojis = $api->merge_request_note_award_emojis(
        $id,
        $merge_request_id,
        $note_id,
    );

Sends a "GET" request to "/projects/:id/merge_requests/:merge_request_id/notes/:note_id/award_emoji" and returns the decoded/deserialized response body.

  merge_request_note_award_emoji
    my $award_emoji = $api->merge_request_note_award_emoji(
        $id,
        $merge_request_id,
        $note_id,
        $award_id,
    );

Sends a "GET" request to "/projects/:id/merge_requests/:merge_request_id/notes/:note_id/award_emoji/:award_id" and returns the decoded/deserialized response body.

  create_merge_request_note_award_emoji
    my $award_emoji = $api->create_merge_request_note_award_emoji(
        $id,
        $merge_request_id,
        $note_id,
        \%params,
    );

Sends a "POST" request to "/projects/:id/merge_requests/:merge_request_id/notes/:note_id/award_emoji" and returns the decoded/deserialized response body.

  delete_merge_request_note_award_emoji
    my $award_emoji = $api->delete_merge_request_note_award_emoji(
        $id,
        $merge_request_id,
        $note_id,
        $award_id,
    );

Sends a "DELETE" request to "/projects/:id/merge_requests/:merge_request_id/notes/:note_id/award_emoji/:award_id" and returns the decoded/deserialized response body.

BRANCH METHODS
See <http://doc.gitlab.com/ce/api/branches.html>.

  branches
    my $branches = $api->branches(
        $project_id,
    );

Sends a "GET" request to "/projects/:project_id/repository/branches" and returns the decoded/deserialized response body.

  branch
    my $branch = $api->branch(
        $project_id,
        $branch_name,
    );

Sends a "GET" request to "/projects/:project_id/repository/branches/:branch_name" and returns the decoded/deserialized response body.

  protect_branch
    $api->protect_branch(
        $project_id,
        $branch_name,
        \%params,
    );

Sends a "PUT" request to "/projects/:project_id/repository/branches/:branch_name/protect".

  unprotect_branch
    $api->unprotect_branch(
        $project_id,
        $branch_name,
    );

Sends a "PUT" request to "/projects/:project_id/repository/branches/:branch_name/unprotect".

  create_branch
    my $branch = $api->create_branch(
        $project_id,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/repository/branches" and returns the decoded/deserialized response body.

  delete_branch
    $api->delete_branch(
        $project_id,
        $branch_name,
    );

Sends a "DELETE" request to "/projects/:project_id/repository/branches/:branch_name".

BUILD METHODS
See <http://docs.gitlab.com/ce/api/builds.html>.

  builds
    my $builds = $api->builds(
        $id,
        \%params,
    );

Sends a "GET" request to "/projects/:id/builds" and returns the decoded/deserialized response body.

  commit_builds
    my $builds = $api->commit_builds(
        $id,
        $sha,
        \%params,
    );

Sends a "GET" request to "/projects/:id/repository/commits/:sha/builds" and returns the decoded/deserialized response body.

  build
    my $build = $api->build(
        $id,
        $build_id,
    );

Sends a "GET" request to "/projects/:id/builds/:build_id" and returns the decoded/deserialized response body.

  build_artifacts
    my $artifacts = $api->build_artifacts(
        $id,
        $build_id,
    );

Sends a "GET" request to "/projects/:id/builds/:build_id/artifacts" and returns the decoded/deserialized response body.

  build_trace
    my $trace = $api->build_trace(
        $id,
        $build_id,
    );

Sends a "GET" request to "/projects/:id/builds/:build_id/trace" and returns the decoded/deserialized response body.

  cancel_build
    my $build = $api->cancel_build(
        $id,
        $build_id,
    );

Sends a "POST" request to "/projects/:id/builds/:build_id/cancel" and returns the decoded/deserialized response body.

  retry_build
    my $build = $api->retry_build(
        $id,
        $build_id,
    );

Sends a "POST" request to "/projects/:id/builds/:build_id/retry" and returns the decoded/deserialized response body.

  erase_build
    my $build = $api->erase_build(
        $id,
        $build_id,
    );

Sends a "POST" request to "/projects/:id/builds/:build_id/erase" and returns the decoded/deserialized response body.

  keep_build_artifacts
    my $build = $api->keep_build_artifacts(
        $id,
        $build_id,
    );

Sends a "POST" request to "/projects/:id/builds/:build_id/artifacts/keep" and returns the decoded/deserialized response body.

BUILD TRIGGER METHODS
See <http://docs.gitlab.com/ce/api/build_triggers.html>.

  triggers
    my $triggers = $api->triggers(
        $id,
    );

Sends a "GET" request to "/projects/:id/triggers" and returns the decoded/deserialized response body.

  trigger
    my $trigger = $api->trigger(
        $id,
        $token,
    );

Sends a "GET" request to "/projects/:id/triggers/:token" and returns the decoded/deserialized response body.

  create_trigger
    my $trigger = $api->create_trigger(
        $id,
    );

Sends a "POST" request to "/projects/:id/triggers" and returns the decoded/deserialized response body.

  delete_trigger
    my $trigger = $api->delete_trigger(
        $id,
        $token,
    );

Sends a "DELETE" request to "/projects/:id/triggers/:token" and returns the decoded/deserialized response body.

BUILD VARIABLE METHODS
See <http://docs.gitlab.com/ce/api/build_variables.html>.

  variables
    my $variables = $api->variables(
        $id,
    );

Sends a "GET" request to "/projects/:id/variables" and returns the decoded/deserialized response body.

  variable
    my $variable = $api->variable(
        $id,
        $key,
    );

Sends a "GET" request to "/projects/:id/variables/:key" and returns the decoded/deserialized response body.

  create_variable
    my $variable = $api->create_variable(
        $id,
        \%params,
    );

Sends a "POST" request to "/projects/:id/variables" and returns the decoded/deserialized response body.

  update_variable
    my $variable = $api->update_variable(
        $id,
        $key,
        \%params,
    );

Sends a "PUT" request to "/projects/:id/variables/:key" and returns the decoded/deserialized response body.

  delete_variable
    my $variable = $api->delete_variable(
        $id,
        $key,
    );

Sends a "DELETE" request to "/projects/:id/variables/:key" and returns the decoded/deserialized response body.

COMMIT METHODS
See <http://doc.gitlab.com/ce/api/commits.html>.

  commits
    my $commits = $api->commits(
        $project_id,
        \%params,
    );

Sends a "GET" request to "/projects/:project_id/repository/commits" and returns the decoded/deserialized response body.

  commit
    my $commit = $api->commit(
        $project_id,
        $commit_sha,
    );

Sends a "GET" request to "/projects/:project_id/repository/commits/:commit_sha" and returns the decoded/deserialized response body.

  commit_diff
    my $diff = $api->commit_diff(
        $project_id,
        $commit_sha,
    );

Sends a "GET" request to "/projects/:project_id/repository/commits/:commit_sha/diff" and returns the decoded/deserialized response body.

  commit_comments
    my $comments = $api->commit_comments(
        $project_id,
        $commit_sha,
    );

Sends a "GET" request to "/projects/:project_id/repository/commits/:commit_sha/comments" and returns the decoded/deserialized response body.

  add_commit_comment
    $api->add_commit_comment(
        $project_id,
        $commit_sha,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/repository/commits/:commit_sha/comments".

DEPLOY KEY METHODS
See <http://doc.gitlab.com/ce/api/deploy_keys.html>.

  deploy_keys
    my $keys = $api->deploy_keys(
        $project_id,
    );

Sends a "GET" request to "/projects/:project_id/keys" and returns the decoded/deserialized response body.

  deploy_key
    my $key = $api->deploy_key(
        $project_id,
        $key_id,
    );

Sends a "GET" request to "/projects/:project_id/keys/:key_id" and returns the decoded/deserialized response body.

  create_deploy_key
    $api->create_deploy_key(
        $project_id,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/keys".

  delete_deploy_key
    $api->delete_deploy_key(
        $project_id,
        $key_id,
    );

Sends a "DELETE" request to "/projects/:project_id/keys/:key_id".

GROUP METHODS
See <http://doc.gitlab.com/ce/api/groups.html>.

  groups
    my $groups = $api->groups();

Sends a "GET" request to "/groups" and returns the decoded/deserialized response body.

  group
    my $group = $api->group(
        $group_id,
    );

Sends a "GET" request to "/groups/:group_id" and returns the decoded/deserialized response body.

  create_group
    $api->create_group(
        \%params,
    );

Sends a "POST" request to "/groups".

  transfer_project
    $api->transfer_project(
        $group_id,
        $project_id,
    );

Sends a "POST" request to "/groups/:group_id/projects/:project_id".

  delete_group
    $api->delete_group(
        $group_id,
    );

Sends a "DELETE" request to "/groups/:group_id".

  search_groups
    my $groups = $api->search_groups(
        \%params,
    );

Sends a "GET" request to "/groups" and returns the decoded/deserialized response body.

  group_members
    my $members = $api->group_members(
        $group_id,
    );

Sends a "GET" request to "/groups/:group_id/members" and returns the decoded/deserialized response body.

  group_projects
    my $projects = $api->group_projects(
        $group_id,
        \%params,
    );

Sends a "GET" request to "/groups/:group_id/projects" and returns the decoded/deserialized response body.

  add_group_member
    $api->add_group_member(
        $group_id,
        \%params,
    );

Sends a "POST" request to "/groups/:group_id/members".

  edit_group_member
    $api->edit_group_member(
        $group_id,
        $user_id,
        \%params,
    );

Sends a "PUT" request to "/groups/:group_id/members/:user_id".

  remove_group_member
    $api->remove_group_member(
        $group_id,
        $user_id,
    );

Sends a "DELETE" request to "/groups/:group_id/members/:user_id".

ISSUE METHODS
See <http://doc.gitlab.com/ce/api/issues.html>.

  all_issues
    my $issues = $api->all_issues(
        \%params,
    );

Sends a "GET" request to "/issues" and returns the decoded/deserialized response body.

  issues
    my $issues = $api->issues(
        $project_id,
        \%params,
    );

Sends a "GET" request to "/projects/:project_id/issues" and returns the decoded/deserialized response body.

  issue
    my $issue = $api->issue(
        $project_id,
        $issue_id,
    );

Sends a "GET" request to "/projects/:project_id/issues/:issue_id" and returns the decoded/deserialized response body.

  create_issue
    my $issue = $api->create_issue(
        $project_id,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/issues" and returns the decoded/deserialized response body.

  edit_issue
    my $issue = $api->edit_issue(
        $project_id,
        $issue_id,
        \%params,
    );

Sends a "PUT" request to "/projects/:project_id/issues/:issue_id" and returns the decoded/deserialized response body.

KEY METHODS
See <http://docs.gitlab.com/ce/api/keys.html>.

  key
    my $key = $api->key(
        $key_id,
    );

Sends a "GET" request to "/keys/:key_id" and returns the decoded/deserialized response body.

LABEL METHODS
See <http://doc.gitlab.com/ce/api/labels.html>.

  labels
    my $labels = $api->labels(
        $project_id,
    );

Sends a "GET" request to "/projects/:project_id/labels" and returns the decoded/deserialized response body.

  create_label
    my $label = $api->create_label(
        $project_id,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/labels" and returns the decoded/deserialized response body.

  delete_label
    $api->delete_label(
        $project_id,
        \%params,
    );

Sends a "DELETE" request to "/projects/:project_id/labels".

  edit_label
    my $label = $api->edit_label(
        $project_id,
        \%params,
    );

Sends a "PUT" request to "/projects/:project_id/labels" and returns the decoded/deserialized response body.

MERGE REQUEST METHODS
See <http://doc.gitlab.com/ce/api/merge_requests.html>.

  merge_requests
    my $merge_requests = $api->merge_requests(
        $project_id,
        \%params,
    );

Sends a "GET" request to "/projects/:project_id/merge_requests" and returns the decoded/deserialized response body.

  merge_request
    my $merge_request = $api->merge_request(
        $project_id,
        $merge_request_id,
    );

Sends a "GET" request to "/projects/:project_id/merge_request/:merge_request_id" and returns the decoded/deserialized response body.

  create_merge_request
    my $merge_request = $api->create_merge_request(
        $project_id,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/merge_requests" and returns the decoded/deserialized response body.

  edit_merge_request
    my $merge_request = $api->edit_merge_request(
        $project_id,
        $merge_request_id,
        \%params,
    );

Sends a "PUT" request to "/projects/:project_id/merge_requests/:merge_request_id" and returns the decoded/deserialized response body.

  accept_merge_request
    $api->accept_merge_request(
        $project_id,
        $merge_request_id,
        \%params,
    );

Sends a "PUT" request to "/projects/:project_id/merge_requests/:merge_request_id/merge".

  add_merge_request_comment
    $api->add_merge_request_comment(
        $project_id,
        $merge_request_id,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/merge_requests/:merge_request_id/comments".

  merge_request_comments
    my $comments = $api->merge_request_comments(
        $project_id,
        $merge_request_id,
    );

Sends a "GET" request to "/projects/:project_id/merge_requests/:merge_request_id/comments" and returns the decoded/deserialized response body.

MILESTONE METHODS
See <http://doc.gitlab.com/ce/api/milestones.html>.

  milestones
    my $milestones = $api->milestones(
        $project_id,
        \%params,
    );

Sends a "GET" request to "/projects/:project_id/milestones" and returns the decoded/deserialized response body.

  milestone
    my $milestone = $api->milestone(
        $project_id,
        $milestone_id,
    );

Sends a "GET" request to "/projects/:project_id/milestones/:milestone_id" and returns the decoded/deserialized response body.

  create_milestone
    $api->create_milestone(
        $project_id,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/milestones".

  edit_milestone
    $api->edit_milestone(
        $project_id,
        $milestone_id,
        \%params,
    );

Sends a "PUT" request to "/projects/:project_id/milestones/:milestone_id".

  milestone_issues
    my $issues = $api->milestone_issues(
        $project_id,
        $milestone_id,
    );

Sends a "GET" request to "/projects/:project_id/milestones/:milestone_id/issues" and returns the decoded/deserialized response body.

OPEN SOURCE LICENSES METHODS
See <http://docs.gitlab.com/ce/api/licenses.html>.

  licenses
    my $licenses = $api->licenses(
        \%params,
    );

Sends a "GET" request to "/licenses" and returns the decoded/deserialized response body.

  license
    my $license = $api->license(
        $license_key,
        \%params,
    );

Sends a "GET" request to "/licenses/:license_key" and returns the decoded/deserialized response body.

NAMESPACE METHODS
See <http://docs.gitlab.com/ce/api/namespaces.html>.

  namespaces
    my $namespaces = $api->namespaces(
        \%params,
    );

Sends a "GET" request to "/namespaces" and returns the decoded/deserialized response body.

NOTE METHODS
See <http://doc.gitlab.com/ce/api/notes.html>.

  notes
    my $notes = $api->notes(
        $project_id,
        $thing_type,
        $thing_id,
    );

Sends a "GET" request to "/projects/:project_id/:thing_type/:thing_id/notes" and returns the decoded/deserialized response body.

  note
    my $note = $api->note(
        $project_id,
        $thing_type,
        $thing_id,
        $note_id,
    );

Sends a "GET" request to "/projects/:project_id/:thing_type/:thing_id/notes/:note_id" and returns the decoded/deserialized response body.

  create_note
    $api->create_note(
        $project_id,
        $thing_type,
        $thing_id,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/:thing_type/:thing_id/notes".

  edit_note
    $api->edit_note(
        $project_id,
        $thing_type,
        $thing_id,
        $note_id,
        \%params,
    );

Sends a "PUT" request to "/projects/:project_id/:thing_type/:thing_id/notes/:note_id".

PROJECT METHODS
See <http://doc.gitlab.com/ce/api/projects.html>.

  projects
    my $projects = $api->projects(
        \%params,
    );

Sends a "GET" request to "/projects" and returns the decoded/deserialized response body.

  owned_projects
    my $projects = $api->owned_projects(
        \%params,
    );

Sends a "GET" request to "/projects/owned" and returns the decoded/deserialized response body.

  all_projects
    my $projects = $api->all_projects(
        \%params,
    );

Sends a "GET" request to "/projects/all" and returns the decoded/deserialized response body.

  project
    my $project = $api->project(
        $project_id,
    );

Sends a "GET" request to "/projects/:project_id" and returns the decoded/deserialized response body.

  project_events
    my $events = $api->project_events(
        $project_id,
    );

Sends a "GET" request to "/projects/:project_id/events" and returns the decoded/deserialized response body.

  create_project
    my $project = $api->create_project(
        \%params,
    );

Sends a "POST" request to "/projects" and returns the decoded/deserialized response body.

  create_project_for_user
    $api->create_project_for_user(
        $user_id,
        \%params,
    );

Sends a "POST" request to "/projects/user/:user_id".

  edit_project
    my $project = $api->edit_project(
        $project_id,
        \%params,
    );

Sends a "PUT" request to "/projects/:project_id" and returns the decoded/deserialized response body.

  fork_project
    $api->fork_project(
        $project_id,
    );

Sends a "POST" request to "/pojects/fork/:project_id".

  delete_project
    $api->delete_project(
        $project_id,
    );

Sends a "DELETE" request to "/projects/:project_id".

  project_members
    my $members = $api->project_members(
        $project_id,
        \%params,
    );

Sends a "GET" request to "/projects/:project_id/members" and returns the decoded/deserialized response body.

  project_member
    my $member = $api->project_member(
        $project_id,
        $user_id,
    );

Sends a "GET" request to "/project/:project_id/members/:user_id" and returns the decoded/deserialized response body.

  add_project_member
    $api->add_project_member(
        $project_id,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/members".

  edit_project_member
    $api->edit_project_member(
        $project_id,
        $user_id,
        \%params,
    );

Sends a "PUT" request to "/projects/:project_id/members/:user_id".

  remove_project_member
    $api->remove_project_member(
        $project_id,
        $user_id,
    );

Sends a "DELETE" request to "/projects/:project_id/members/:user_id".

  share_project_with_group
    $api->share_project_with_group(
        $id,
        \%params,
    );

Sends a "POST" request to "/projects/:id/share".

  delete_shared_project_link_within_group
    $api->delete_shared_project_link_within_group(
        $id,
        $group_id,
    );

Sends a "DELETE" request to "/projects/:id/share/:group_id".

  project_hooks
    my $hooks = $api->project_hooks(
        $project_id,
    );

Sends a "GET" request to "/projects/:project_id/hooks" and returns the decoded/deserialized response body.

  project_hook
    my $hook = $api->project_hook(
        $project_id,
        $hook_id,
    );

Sends a "GET" request to "/project/:project_id/hooks/:hook_id" and returns the decoded/deserialized response body.

  create_project_hook
    $api->create_project_hook(
        $project_id,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/hooks".

  edit_project_hook
    $api->edit_project_hook(
        $project_id,
        $hook_id,
        \%params,
    );

Sends a "PUT" request to "/projects/:project_id/hooks/:hook_id".

  delete_project_hook
    my $hook = $api->delete_project_hook(
        $project_id,
        $hook_id,
    );

Sends a "DELETE" request to "/projects/:project_id/hooks/:hook_id" and returns the decoded/deserialized response body.

  set_project_fork
    $api->set_project_fork(
        $project_id,
        $forked_from_id,
    );

Sends a "POST" request to "/projects/:project_id/fork/:forked_from_id".

  clear_project_fork
    $api->clear_project_fork(
        $project_id,
    );

Sends a "DELETE" request to "/projects/:project_id/fork".

  search_projects_by_name
    my $projects = $api->search_projects_by_name(
        $query,
        \%params,
    );

Sends a "GET" request to "/projects/search/:query" and returns the decoded/deserialized response body.

PROJECT SNIPPET METHODS
See <http://doc.gitlab.com/ce/api/project_snippets.html>.

  snippets
    my $snippets = $api->snippets(
        $project_id,
    );

Sends a "GET" request to "/projects/:project_id/snippets" and returns the decoded/deserialized response body.

  snippet
    my $snippet = $api->snippet(
        $project_id,
        $snippet_id,
    );

Sends a "GET" request to "/projects/:project_id/snippets/:snippet_id" and returns the decoded/deserialized response body.

  create_snippet
    $api->create_snippet(
        $project_id,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/snippets".

  edit_snippet
    $api->edit_snippet(
        $project_id,
        $snippet_id,
        \%params,
    );

Sends a "PUT" request to "/projects/:project_id/snippets/:snippet_id".

  delete_snippet
    $api->delete_snippet(
        $project_id,
        $snippet_id,
    );

Sends a "DELETE" request to "/projects/:project_id/snippets/:snippet_id".

  snippet_content
    my $content = $api->snippet_content(
        $project_id,
        $snippet_id,
    );

Sends a "GET" request to "/projects/:project_id/snippets/:snippet_id/raw" and returns the decoded/deserialized response body.

REPOSITORY METHODS
See <http://doc.gitlab.com/ce/api/repositories.html>.

  tree
    my $tree = $api->tree(
        $project_id,
        \%params,
    );

Sends a "GET" request to "/projects/:project_id/repository/tree" and returns the decoded/deserialized response body.

  blob
    my $blob = $api->blob(
        $project_id,
        $ref,
        \%params,
    );

Sends a "GET" request to "/projects/:project_id/repository/blobs/:ref" and returns the decoded/deserialized response body.

  raw_blob
    my $raw_blob = $api->raw_blob(
        $project_id,
        $blob_sha,
    );

Sends a "GET" request to "/projects/:project_id/repository/raw_blobs/:blob_sha" and returns the decoded/deserialized response body.

  archive
    my $archive = $api->archive(
        $project_id,
        \%params,
    );

Sends a "GET" request to "/projects/:project_id/repository/archive" and returns the decoded/deserialized response body.

  compare
    my $comparison = $api->compare(
        $project_id,
        \%params,
    );

Sends a "GET" request to "/projects/:project_id/repository/compare" and returns the decoded/deserialized response body.

  contributors
    my $contributors = $api->contributors(
        $project_id,
    );

Sends a "GET" request to "/projects/:project_id/repository/contributors" and returns the decoded/deserialized response body.

FILE METHODS
See <http://doc.gitlab.com/ce/api/repository_files.html>.

  file
    my $file = $api->file(
        $project_id,
        \%params,
    );

Sends a "GET" request to "/projects/:project_id/repository/files" and returns the decoded/deserialized response body.

  create_file
    $api->create_file(
        $project_id,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/repository/files".

  edit_file
    $api->edit_file(
        $project_id,
        \%params,
    );

Sends a "PUT" request to "/projects/:project_id/repository/files".

  delete_file
    $api->delete_file(
        $project_id,
        \%params,
    );

Sends a "DELETE" request to "/projects/:project_id/repository/files".

RUNNER METHODS
See <http://docs.gitlab.com/ce/api/runners.html>.

  runners
    my $runners = $api->runners(
        \%params,
    );

Sends a "GET" request to "/runners" and returns the decoded/deserialized response body.

  all_runners
    my $runners = $api->all_runners(
        \%params,
    );

Sends a "GET" request to "/runners/all" and returns the decoded/deserialized response body.

  runner
    my $runner = $api->runner(
        $id,
    );

Sends a "GET" request to "/runners/:id" and returns the decoded/deserialized response body.

  update_runner
    my $runner = $api->update_runner(
        $id,
        \%params,
    );

Sends a "PUT" request to "/runners/:id" and returns the decoded/deserialized response body.

  delete_runner
    my $runner = $api->delete_runner(
        $id,
    );

Sends a "DELETE" request to "/runners/:id" and returns the decoded/deserialized response body.

  project_runners
    my $runners = $api->project_runners(
        $id,
    );

Sends a "GET" request to "/projects/:id/runners" and returns the decoded/deserialized response body.

  enable_project_runner
    my $runner = $api->enable_project_runner(
        $id,
        \%params,
    );

Sends a "POST" request to "/projects/:id/runners" and returns the decoded/deserialized response body.

  disable_project_runner
    my $runner = $api->disable_project_runner(
        $id,
        $runner_id,
    );

Sends a "DELETE" request to "/projects/:id/runners/:runner_id" and returns the decoded/deserialized response body.

SERVICE METHODS
See <http://doc.gitlab.com/ce/api/services.html>.

  edit_project_service
    $api->edit_project_service(
        $project_id,
        $service_name,
        \%params,
    );

Sends a "PUT" request to "/projects/:project_id/services/:service_name".

  delete_project_service
    $api->delete_project_service(
        $project_id,
        $service_name,
    );

Sends a "DELETE" request to "/projects/:project_id/services/:service_name".

SESSION METHODS
See <http://doc.gitlab.com/ce/api/session.html>.

  session
    my $session = $api->session(
        \%params,
    );

Sends a "POST" request to "/session" and returns the decoded/deserialized response body.

SETTINGS METHODS
See <http://docs.gitlab.com/ce/api/settings.html>.

  settings
    my $settings = $api->settings();

Sends a "GET" request to "/application/settings" and returns the decoded/deserialized response body.

  update_settings
    my $settings = $api->update_settings(
        \%params,
    );

Sends a "PUT" request to "/application/settings" and returns the decoded/deserialized response body.

SIDEKIQ METHODS
See <http://docs.gitlab.com/ce/api/sidekiq_metrics.html>.

  queue_metrics
    my $metrics = $api->queue_metrics();

Sends a "GET" request to "/sidekiq/queue_metrics" and returns the decoded/deserialized response body.

  process_metrics
    my $metrics = $api->process_metrics();

Sends a "GET" request to "/sidekiq/process_metrics" and returns the decoded/deserialized response body.

  job_stats
    my $stats = $api->job_stats();

Sends a "GET" request to "/sidekiq/job_stats" and returns the decoded/deserialized response body.

  compound_metrics
    my $metrics = $api->compound_metrics();

Sends a "GET" request to "/sidekiq/compound_metrics" and returns the decoded/deserialized response body.

USER SNIPPET METHODS
See <http://docs.gitlab.com/ce/api/snippets.html>.

  user_snippets
    my $snippets = $api->user_snippets();

Sends a "GET" request to "/snippets" and returns the decoded/deserialized response body.

  user_snippet
    my $snippet = $api->user_snippet(
        $snippet_id,
    );

Sends a "GET" request to "/snippets/:snippet_id" and returns the decoded/deserialized response body.

  create_user_snippet
    $api->create_user_snippet(
        \%params,
    );

Sends a "POST" request to "/snippets".

  edit_user_snippet
    $api->edit_user_snippet(
        $snippet_id,
        \%params,
    );

Sends a "PUT" request to "/snippets/:snippet_id".

  delete_user_snippet
    $api->delete_user_snippet(
        $snippet_id,
    );

Sends a "DELETE" request to "/snippets/:snippet_id".

  public_snippets
    my $snippets = $api->public_snippets();

Sends a "GET" request to "/snippets/public" and returns the decoded/deserialized response body.

SYSTEM HOOK METHODS
See <http://doc.gitlab.com/ce/api/system_hooks.html>.

  hooks
    my $hooks = $api->hooks();

Sends a "GET" request to "/hooks" and returns the decoded/deserialized response body.

  create_hook
    $api->create_hook(
        \%params,
    );

Sends a "POST" request to "/hooks".

  test_hook
    my $hook = $api->test_hook(
        $hook_id,
    );

Sends a "GET" request to "/hooks/:hook_id" and returns the decoded/deserialized response body.

  delete_hook
    $api->delete_hook(
        $hook_id,
    );

Sends a "DELETE" request to "/hooks/:hook_id".

TAG METHODS
See <http://docs.gitlab.com/ce/api/tags.html>.

  tags
    my $tags = $api->tags(
        $project_id,
    );

Sends a "GET" request to "/projects/:project_id/repository/tags" and returns the decoded/deserialized response body.

  tag
    my $tag = $api->tag(
        $project_id,
        $tag_name,
    );

Sends a "GET" request to "/projects/:project_id/repository/tags/:tag_name" and returns the decoded/deserialized response body.

  create_tag
    my $tag = $api->create_tag(
        $project_id,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/repository/tags" and returns the decoded/deserialized response body.

  delete_tag
    $api->delete_tag(
        $project_id,
        $tag_name,
    );

Sends a "DELETE" request to "/projects/:project_id/repository/tags/:tag_name".

  create_release
    $api->create_release(
        $project_id,
        $tag_name,
        \%params,
    );

Sends a "POST" request to "/projects/:project_id/repository/tags/:tag_name/release".

  update_release
    $api->update_release(
        $project_id,
        $tag_name,
        \%params,
    );

Sends a "PUT" request to "/projects/:project_id/repository/tags/:tag_name/release".

USER METHODS
See <http://doc.gitlab.com/ce/api/users.html>.

  users
    my $users = $api->users(
        \%params,
    );

Sends a "GET" request to "/users" and returns the decoded/deserialized response body.

  user
    my $user = $api->user(
        $user_id,
    );

Sends a "GET" request to "/users/:user_id" and returns the decoded/deserialized response body.

  create_user
    $api->create_user(
        \%params,
    );

Sends a "POST" request to "/users".

  edit_user
    $api->edit_user(
        $user_id,
        \%params,
    );

Sends a "PUT" request to "/users/:user_id".

  delete_user
    my $user = $api->delete_user(
        $user_id,
    );

Sends a "DELETE" request to "/users/:user_id" and returns the decoded/deserialized response body.

  current_user
    my $user = $api->current_user();

Sends a "GET" request to "/user" and returns the decoded/deserialized response body.

  current_user_ssh_keys
    my $keys = $api->current_user_ssh_keys();

Sends a "GET" request to "/user/keys" and returns the decoded/deserialized response body.

  user_ssh_keys
    my $keys = $api->user_ssh_keys(
        $user_id,
    );

Sends a "GET" request to "/users/:user_id/keys" and returns the decoded/deserialized response body.

  user_ssh_key
    my $key = $api->user_ssh_key(
        $key_id,
    );

Sends a "GET" request to "/user/keys/:key_id" and returns the decoded/deserialized response body.

  create_current_user_ssh_key
    $api->create_current_user_ssh_key(
        \%params,
    );

Sends a "POST" request to "/user/keys".

  create_user_ssh_key
    $api->create_user_ssh_key(
        $user_id,
        \%params,
    );

Sends a "POST" request to "/users/:user_id/keys".

  delete_current_user_ssh_key
    $api->delete_current_user_ssh_key(
        $key_id,
    );

Sends a "DELETE" request to "/user/keys/:key_id".

  delete_user_ssh_key
    $api->delete_user_ssh_key(
        $user_id,
        $key_id,
    );

Sends a "DELETE" request to "/users/:user_id/keys/:key_id".

SEE ALSO
Net::Gitlab purports to provide an interface to the GitLab API, but it is hard to tell due to a complete lack of documentation via either POD or unit tests.

CONTRIBUTING
This module is auto-generated from a set of YAML files defining the interface of GitLab's API. If you'd like to contribute to this module then please feel free to make a fork on GitHub <https://github.com/bluefeet/GitLab-API-v3> and submit a pull request, just make sure you edit the files in the "authors/" directory instead of "lib/GitLab/API/v3.pm" directly.

Please see <https://github.com/bluefeet/GitLab-API-v3/blob/master/author/README.pod> for more information.

Alternatively, you can open a ticket <https://github.com/bluefeet/GitLab-API-v3/issues>.

AUTHORS
    Aran Clary Deltac <bluefeet@gmail.com>
    Dotan Dimet <dotan@corky.net>
    Nigel Gregoire <nigelgregoire@gmail.com>
    trunov-ms <trunov.ms@gmail.com>
    Marek R. Sotola <Marek.R.Sotola@nasa.gov>
    José Joaquín Atria <jjatria@gmail.com>
    Dave Webb <github@d5ve.com>

ACKNOWLEDGEMENTS
Thanks to ZipRecruiter <https://www.ziprecruiter.com/> for encouraging their employees to contribute back to the open source ecosystem. Without their dedication to quality software development this distribution would not exist.

LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.