The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.

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.

    $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 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.

AUTHOR

Aran Clary Deltac <bluefeet@gmail.com>

CONTRIBUTORS

  • 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 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.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 4036:

Non-ASCII character seen before =encoding in 'José'. Assuming UTF-8