GitLab PHP API Client Documentation

Everything you need to know about using the Tectalic GitLab PHP API Client.

Introduction

The Tectalic Gitlab REST API Client is a package that provides a convenient and straightforward way to interact with the Gitlab API from your PHP application.

You can purchase this package from https://tectalic.com/apis/gitlab.

Installation

System Requirements

  • PHP version 7.2.5 or newer (including PHP 8.0 and 8.1)
  • PHP JSON extension installed if using PHP 7.x. As of PHP 8.0, this extension became a core PHP extension so is always enabled.
  • A PSR-18 compatible HTTP client such as ‘Guzzle’ or the ‘Symfony HTTP Client’.

Composer Installation

To install this package into your PHP project, we recommend using Composer.

Please see the detailed instructions on configuring your project to access the Tectalic Composer repository.

You will need to log into the Tectalic account that purchased the Tectalic Gitlab REST API Client package to access these instructions.

Once you have followed the above instructions, install the package into your project:

composer require tectalic/gitlab

Manual Installation

If you aren’t using Composer in your PHP project, you can choose to Download the latest release and install it into your PHP project manually.

If doing this, you will need to ensure that all dependencies listed in the package’s composer.json file are also installed.

Usage

After installing the Tectalic Gitlab REST API Client package into your project, ensure you also have a compatible PSR-18 HTTP client such as ‘Guzzle’ or the Symfony ‘HTTP Client’.

You can use the following code sample and customize it to suit your application.

// Load your project's composer autoloader (if you aren't already doing so).
require_once(__DIR__ . '/vendor/autoload.php');
use Symfony\Component\HttpClient\Psr18Client;
use Tectalic\Gitlab\Client;
use Tectalic\Gitlab\Manager;
 
// Build a Tectalic Gitlab REST API Client globally.
$httpClient = new Psr18Client();
Manager::build($httpClient);
 
// or
 
// Build a Tectalic Gitlab REST API Client manually.
$httpClient = new Psr18Client();
$client = new Client($httpClient, Manager::BASE_URI);

Client Class

The primary class you will interact with is the Client class (Tectalic\Gitlab\Client).

This Client class also contains the helper methods that let you quickly access the 196 API Handlers.

Please see below for a complete list of supported handlers and methods.

Supported API Handlers and Methods

This package supports 358 API Methods, which are grouped into 196 API Handlers.

See the table below for a full list of API Handlers and Methods.

API Handler Class and Method Name Description API Verb and URL
V3ApplicationSettings::list() Get the current application settings GET /v3/application/settings
V3ApplicationSettings::put() Modify application settings PUT /v3/application/settings
V3CiLint::post() Validation of .gitlab-ci.yml content POST /v3/ci/lint
V3DeployKeys::list() GET /v3/deploy_keys
V3Dockerfiles::get() Get the list of the available template GET /v3/dockerfiles
V3Dockerfiles::getV3DockerfilesName() Get the text for a specific template present in local filesystem GET /v3/dockerfiles/{name}
V3Gitignores::get() Get the list of the available template GET /v3/gitignores
V3Gitignores::getV3GitignoresName() Get the text for a specific template present in local filesystem GET /v3/gitignores/{name}
V3GitlabCiYmls::list() Get the list of the available template GET /v3/gitlab_ci_ymls
V3GitlabCiYmls::getV3GitlabCiYmlsName() Get the text for a specific template present in local filesystem GET /v3/gitlab_ci_ymls/{name}
V3Groups::list() Get a groups list GET /v3/groups
V3Groups::post() Create a group. Available only for users who can create groups. POST /v3/groups
V3Groups::getV3GroupsId() Get a single group, with containing projects. GET /v3/groups/{id}
V3Groups::putV3GroupsId() Update a group. Available only for users who can administrate groups. PUT /v3/groups/{id}
V3Groups::deleteV3GroupsId() Remove a group. DELETE /v3/groups/{id}
V3GroupsAccessRequests::list() Gets a list of access requests for a group. GET /v3/groups/{id}/access_requests
V3GroupsAccessRequests::postV3GroupsId() Requests access for the authenticated user to a group. POST /v3/groups/{id}/access_requests
V3GroupsAccessRequests::deleteV3GroupsIdAccessRequestsUserId() Denies an access request for the given user. DELETE /v3/groups/{id}/access_requests/{user_id}
V3GroupsAccessRequestsApprove::putV3GroupsIdAccessRequestsUserId() Approves an access request for the given user. PUT /v3/groups/{id}/access_requests/{user_id}/approve
V3GroupsIssues::getV3GroupsId() Get a list of group issues GET /v3/groups/{id}/issues
V3GroupsMembers::list() Gets a list of group or project members viewable by the authenticated user. GET /v3/groups/{id}/members
V3GroupsMembers::postV3GroupsId() Adds a member to a group or project. POST /v3/groups/{id}/members
V3GroupsMembers::getV3GroupsIdMembersUserId() Gets a member of a group or project. GET /v3/groups/{id}/members/{user_id}
V3GroupsMembers::putV3GroupsIdMembersUserId() Updates a member of a group or project. PUT /v3/groups/{id}/members/{user_id}
V3GroupsMembers::deleteV3GroupsIdMembersUserId() Removes a user from a group or project. DELETE /v3/groups/{id}/members/{user_id}
V3GroupsNotificationSettings::list() Get group level notification level settings, defaults to Global GET /v3/groups/{id}/notification_settings
V3GroupsNotificationSettings::putV3GroupsId() Update group level notification level settings, defaults to Global PUT /v3/groups/{id}/notification_settings
V3GroupsOwned::get() Get list of owned groups for authenticated user GET /v3/groups/owned
V3GroupsProjects::list() Get a list of projects in this group. GET /v3/groups/{id}/projects
V3GroupsProjects::postV3GroupsIdProjectsProjectId() Transfer a project to the group namespace. Available only for admin. POST /v3/groups/{id}/projects/{project_id}
V3Hooks::list() Get the list of system hooks GET /v3/hooks
V3Hooks::post() Create a new system hook POST /v3/hooks
V3Hooks::getV3HooksId() Test a hook GET /v3/hooks/{id}
V3Hooks::deleteV3HooksId() Delete a hook DELETE /v3/hooks/{id}
V3InternalAllowed::post() POST /v3/internal/allowed
V3InternalBroadcastMessage::get() GET /v3/internal/broadcast_message
V3InternalCheck::get() GET /v3/internal/check
V3InternalDiscover::get() GET /v3/internal/discover
V3InternalLfsAuthenticate::post() POST /v3/internal/lfs_authenticate
V3InternalMergeRequestUrls::list() GET /v3/internal/merge_request_urls
V3InternalTwoFactorRecoveryCodes::post() POST /v3/internal/two_factor_recovery_codes
V3Issues::get() Get currently authenticated user’s issues GET /v3/issues
V3Keys::getV3KeysId() Get single ssh key by id. Only available to admin users GET /v3/keys/{id}
V3Licenses::get() Get the list of the available license template GET /v3/licenses
V3Licenses::getV3LicensesName() Get the text for a specific license GET /v3/licenses/{name}
V3Namespaces::get() Get a namespaces list GET /v3/namespaces
V3NotificationSettings::list() Get global notification level settings and email, defaults to Participate GET /v3/notification_settings
V3NotificationSettings::put() Update global notification level settings and email, defaults to Participate PUT /v3/notification_settings
V3Projects::list() Get a projects list for authenticated user GET /v3/projects
V3Projects::post() Create new project POST /v3/projects
V3Projects::getV3ProjectsId() Get a single project GET /v3/projects/{id}
V3Projects::putV3ProjectsId() Update an existing project PUT /v3/projects/{id}
V3Projects::deleteV3ProjectsId() Remove a project DELETE /v3/projects/{id}
V3ProjectsAccessRequests::list() Gets a list of access requests for a project. GET /v3/projects/{id}/access_requests
V3ProjectsAccessRequests::postV3ProjectsId() Requests access for the authenticated user to a project. POST /v3/projects/{id}/access_requests
V3ProjectsAccessRequests::deleteV3ProjectsIdAccessRequestsUserId() Denies an access request for the given user. DELETE /v3/projects/{id}/access_requests/{user_id}
V3ProjectsAccessRequestsApprove::putV3ProjectsIdAccessRequestsUserId() Approves an access request for the given user. PUT /v3/projects/{id}/access_requests/{user_id}/approve
V3ProjectsAll::get() Get all projects for admin user GET /v3/projects/all
V3ProjectsArchive::postV3ProjectsId() Archive a project POST /v3/projects/{id}/archive
V3ProjectsBoards::list() Get all project boards GET /v3/projects/{id}/boards
V3ProjectsBoardsLists::list() Get the lists of a project board GET /v3/projects/{id}/boards/{board_id}/lists
V3ProjectsBoardsLists::postV3ProjectsIdBoardsBoardId() Create a new board list POST /v3/projects/{id}/boards/{board_id}/lists
V3ProjectsBoardsLists::getV3ProjectsIdBoardsBoardIdListsListId() Get a list of a project board GET /v3/projects/{id}/boards/{board_id}/lists/{list_id}
V3ProjectsBoardsLists::putV3ProjectsIdBoardsBoardIdListsListId() Moves a board list to a new position PUT /v3/projects/{id}/boards/{board_id}/lists/{list_id}
V3ProjectsBoardsLists::deleteV3ProjectsIdBoardsBoardIdListsListId() Delete a board list DELETE /v3/projects/{id}/boards/{board_id}/lists/{list_id}
V3ProjectsBuilds::list() Get a project builds GET /v3/projects/{id}/builds
V3ProjectsBuilds::getV3ProjectsIdBuildsBuildId() Get a specific build of a project GET /v3/projects/{id}/builds/{build_id}
V3ProjectsBuildsArtifacts::list() Download the artifacts file from build GET /v3/projects/{id}/builds/{build_id}/artifacts
V3ProjectsBuildsArtifactsDownload::getV3ProjectsIdBuildsArtifactsRefName() Download the artifacts file from build GET /v3/projects/{id}/builds/artifacts/{ref_name}/download
V3ProjectsBuildsArtifactsKeep::postV3ProjectsIdBuildsBuildIdArtifacts() Keep the artifacts to prevent them from being deleted POST /v3/projects/{id}/builds/{build_id}/artifacts/keep
V3ProjectsBuildsCancel::postV3ProjectsIdBuildsBuildId() Cancel a specific build of a project POST /v3/projects/{id}/builds/{build_id}/cancel
V3ProjectsBuildsErase::postV3ProjectsIdBuildsBuildId() Erase build (remove artifacts and build trace) POST /v3/projects/{id}/builds/{build_id}/erase
V3ProjectsBuildsPlay::postV3ProjectsIdBuildsBuildId() Trigger a manual build POST /v3/projects/{id}/builds/{build_id}/play
V3ProjectsBuildsRetry::postV3ProjectsIdBuildsBuildId() Retry a specific build of a project POST /v3/projects/{id}/builds/{build_id}/retry
V3ProjectsBuildsTrace::getV3ProjectsIdBuildsBuildId() Get a trace of a specific build of a project GET /v3/projects/{id}/builds/{build_id}/trace
V3ProjectsDeployKeys::list() Get a specific project’s deploy keys GET /v3/projects/{id}/deploy_keys
V3ProjectsDeployKeys::postV3ProjectsId() Add new deploy key to currently authenticated user POST /v3/projects/{id}/deploy_keys
V3ProjectsDeployKeys::getV3ProjectsIdDeployKeysKeyId() Get single deploy key GET /v3/projects/{id}/deploy_keys/{key_id}
V3ProjectsDeployKeys::deleteV3ProjectsIdDeployKeysKeyId() Delete deploy key for a project DELETE /v3/projects/{id}/deploy_keys/{key_id}
V3ProjectsDeployKeysDisable::deleteV3ProjectsIdDeployKeysKeyId() Disable a deploy key for a project DELETE /v3/projects/{id}/deploy_keys/{key_id}/disable
V3ProjectsDeployKeysEnable::postV3ProjectsIdDeployKeysKeyId() Enable a deploy key for a project POST /v3/projects/{id}/deploy_keys/{key_id}/enable
V3ProjectsDeployments::list() Get all deployments of the project GET /v3/projects/{id}/deployments
V3ProjectsDeployments::getV3ProjectsIdDeploymentsDeploymentId() Gets a specific deployment GET /v3/projects/{id}/deployments/{deployment_id}
V3ProjectsEnvironments::list() Get all environments of the project GET /v3/projects/{id}/environments
V3ProjectsEnvironments::postV3ProjectsId() Creates a new environment POST /v3/projects/{id}/environments
V3ProjectsEnvironments::putV3ProjectsIdEnvironmentsEnvironmentId() Updates an existing environment PUT /v3/projects/{id}/environments/{environment_id}
V3ProjectsEnvironments::deleteV3ProjectsIdEnvironmentsEnvironmentId() Deletes an existing environment DELETE /v3/projects/{id}/environments/{environment_id}
V3ProjectsEvents::list() Get events for a single project GET /v3/projects/{id}/events
V3ProjectsFork::postV3ProjectsForkId() Fork new project for the current user or provided namespace. POST /v3/projects/fork/{id}
V3ProjectsFork::deleteV3ProjectsId() Remove a forked_from relationship DELETE /v3/projects/{id}/fork
V3ProjectsFork::postV3ProjectsIdForkForkedFromId() Mark this project as forked from another POST /v3/projects/{id}/fork/{forked_from_id}
V3ProjectsHooks::list() Get project hooks GET /v3/projects/{id}/hooks
V3ProjectsHooks::postV3ProjectsId() Add hook to project POST /v3/projects/{id}/hooks
V3ProjectsHooks::getV3ProjectsIdHooksHookId() Get a project hook GET /v3/projects/{id}/hooks/{hook_id}
V3ProjectsHooks::putV3ProjectsIdHooksHookId() Update an existing project hook PUT /v3/projects/{id}/hooks/{hook_id}
V3ProjectsHooks::deleteV3ProjectsIdHooksHookId() Deletes project hook DELETE /v3/projects/{id}/hooks/{hook_id}
V3ProjectsIssues::getV3ProjectsId() Get a list of project issues GET /v3/projects/{id}/issues
V3ProjectsIssues::postV3ProjectsId() Create a new project issue POST /v3/projects/{id}/issues
V3ProjectsIssues::getV3ProjectsIdIssuesIssueId() Get a single project issue GET /v3/projects/{id}/issues/{issue_id}
V3ProjectsIssues::putV3ProjectsIdIssuesIssueId() Update an existing issue PUT /v3/projects/{id}/issues/{issue_id}
V3ProjectsIssues::deleteV3ProjectsIdIssuesIssueId() Delete a project issue DELETE /v3/projects/{id}/issues/{issue_id}
V3ProjectsIssuesAddSpentTime::postV3ProjectsIdIssuesIssueId() Add spent time for a project issue POST /v3/projects/{id}/issues/{issue_id}/add_spent_time
V3ProjectsIssuesAwardEmoji::list() Get a list of project +awardable+ award emoji GET /v3/projects/{id}/issues/{issue_id}/award_emoji
V3ProjectsIssuesAwardEmoji::postV3ProjectsIdIssuesIssueId() Award a new Emoji POST /v3/projects/{id}/issues/{issue_id}/award_emoji
V3ProjectsIssuesAwardEmoji::getV3ProjectsIdIssuesIssueIdAwardEmojiAwardId() Get a specific award emoji GET /v3/projects/{id}/issues/{issue_id}/award_emoji/{award_id}
V3ProjectsIssuesAwardEmoji::deleteV3ProjectsIdIssuesIssueIdAwardEmojiAwardId() Delete a +awardables+ award emoji DELETE /v3/projects/{id}/issues/{issue_id}/award_emoji/{award_id}
V3ProjectsIssuesMove::postV3ProjectsIdIssuesIssueId() Move an existing issue POST /v3/projects/{id}/issues/{issue_id}/move
V3ProjectsIssuesNotes::getV3ProjectsIdIssuesNoteableId() Get a list of project +noteable+ notes GET /v3/projects/{id}/issues/{noteable_id}/notes
V3ProjectsIssuesNotes::postV3ProjectsIdIssuesNoteableId() Create a new +noteable+ note POST /v3/projects/{id}/issues/{noteable_id}/notes
V3ProjectsIssuesNotes::getV3ProjectsIdIssuesNoteableIdNotesNoteId() Get a single +noteable+ note GET /v3/projects/{id}/issues/{noteable_id}/notes/{note_id}
V3ProjectsIssuesNotes::putV3ProjectsIdIssuesNoteableIdNotesNoteId() Update an existing +noteable+ note PUT /v3/projects/{id}/issues/{noteable_id}/notes/{note_id}
V3ProjectsIssuesNotes::deleteV3ProjectsIdIssuesNoteableIdNotesNoteId() Delete a +noteable+ note DELETE /v3/projects/{id}/issues/{noteable_id}/notes/{note_id}
V3ProjectsIssuesNotesAwardEmoji::list() Get a list of project +awardable+ award emoji GET /v3/projects/{id}/issues/{issue_id}/notes/{note_id}/award_emoji
V3ProjectsIssuesNotesAwardEmoji::postV3ProjectsIdIssuesIssueIdNotesNoteId() Award a new Emoji POST /v3/projects/{id}/issues/{issue_id}/notes/{note_id}/award_emoji
V3ProjectsIssuesNotesAwardEmoji::getV3ProjectsIdIssuesIssueIdNotesNoteIdAwardEmojiAwardId() Get a specific award emoji GET /v3/projects/{id}/issues/{issue_id}/notes/{note_id}/award_emoji/{award_id}
V3ProjectsIssuesNotesAwardEmoji::deleteV3ProjectsIdIssuesIssueIdNotesNoteIdAwardEmojiAwardId() Delete a +awardables+ award emoji DELETE /v3/projects/{id}/issues/{issue_id}/notes/{note_id}/award_emoji/{award_id}
V3ProjectsIssuesResetSpentTime::postV3ProjectsIdIssuesIssueId() Reset spent time for a project issue POST /v3/projects/{id}/issues/{issue_id}/reset_spent_time
V3ProjectsIssuesResetTimeEstimate::postV3ProjectsIdIssuesIssueId() Reset the time estimate for a project issue POST /v3/projects/{id}/issues/{issue_id}/reset_time_estimate
V3ProjectsIssuesSubscription::postV3ProjectsIdIssuesSubscribableId() Subscribe to a resource POST /v3/projects/{id}/issues/{subscribable_id}/subscription
V3ProjectsIssuesSubscription::deleteV3ProjectsIdIssuesSubscribableId() Unsubscribe from a resource DELETE /v3/projects/{id}/issues/{subscribable_id}/subscription
V3ProjectsIssuesTimeEstimate::postV3ProjectsIdIssuesIssueId() Set a time estimate for a project issue POST /v3/projects/{id}/issues/{issue_id}/time_estimate
V3ProjectsIssuesTimeStats::list() Show time stats for a project issue GET /v3/projects/{id}/issues/{issue_id}/time_stats
V3ProjectsIssuesTodo::postV3ProjectsIdIssuesIssueId() Create a todo on an issuable POST /v3/projects/{id}/issues/{issue_id}/todo
V3ProjectsKeys::list() Get a specific project’s deploy keys GET /v3/projects/{id}/keys
V3ProjectsKeys::postV3ProjectsId() Add new deploy key to currently authenticated user POST /v3/projects/{id}/keys
V3ProjectsKeys::getV3ProjectsIdKeysKeyId() Get single deploy key GET /v3/projects/{id}/keys/{key_id}
V3ProjectsKeys::deleteV3ProjectsIdKeysKeyId() Delete deploy key for a project DELETE /v3/projects/{id}/keys/{key_id}
V3ProjectsKeysDisable::deleteV3ProjectsIdKeysKeyId() Disable a deploy key for a project DELETE /v3/projects/{id}/keys/{key_id}/disable
V3ProjectsKeysEnable::postV3ProjectsIdKeysKeyId() Enable a deploy key for a project POST /v3/projects/{id}/keys/{key_id}/enable
V3ProjectsLabels::list() Get all labels of the project GET /v3/projects/{id}/labels
V3ProjectsLabels::putV3ProjectsId() Update an existing label. At least one optional parameter is required. PUT /v3/projects/{id}/labels
V3ProjectsLabels::postV3ProjectsId() Create a new label POST /v3/projects/{id}/labels
V3ProjectsLabels::deleteV3ProjectsId() Delete an existing label DELETE /v3/projects/{id}/labels
V3ProjectsLabelsSubscription::postV3ProjectsIdLabelsSubscribableId() Subscribe to a resource POST /v3/projects/{id}/labels/{subscribable_id}/subscription
V3ProjectsLabelsSubscription::deleteV3ProjectsIdLabelsSubscribableId() Unsubscribe from a resource DELETE /v3/projects/{id}/labels/{subscribable_id}/subscription
V3ProjectsMembers::list() Gets a list of group or project members viewable by the authenticated user. GET /v3/projects/{id}/members
V3ProjectsMembers::postV3ProjectsId() Adds a member to a group or project. POST /v3/projects/{id}/members
V3ProjectsMembers::getV3ProjectsIdMembersUserId() Gets a member of a group or project. GET /v3/projects/{id}/members/{user_id}
V3ProjectsMembers::putV3ProjectsIdMembersUserId() Updates a member of a group or project. PUT /v3/projects/{id}/members/{user_id}
V3ProjectsMembers::deleteV3ProjectsIdMembersUserId() Removes a user from a group or project. DELETE /v3/projects/{id}/members/{user_id}
V3ProjectsMergeRequest::getV3ProjectsIdMergeRequestMergeRequestId() Get a single merge request GET /v3/projects/{id}/merge_request/{merge_request_id}
V3ProjectsMergeRequest::putV3ProjectsIdMergeRequestMergeRequestId() Update a merge request PUT /v3/projects/{id}/merge_request/{merge_request_id}
V3ProjectsMergeRequestCancelMergeWhenBuildSucceeds::postV3ProjectsIdMergeRequestMergeRequestId() Cancel merge if “Merge When Pipeline Succeeds” is enabled POST /v3/projects/{id}/merge_request/{merge_request_id}/cancel_merge_when_build_succeeds
V3ProjectsMergeRequestChanges::getV3ProjectsIdMergeRequestMergeRequestId() Show the merge request changes GET /v3/projects/{id}/merge_request/{merge_request_id}/changes
V3ProjectsMergeRequestClosesIssues::getV3ProjectsIdMergeRequestMergeRequestId() List issues that will be closed on merge GET /v3/projects/{id}/merge_request/{merge_request_id}/closes_issues
V3ProjectsMergeRequestComments::list() Get the comments of a merge request GET /v3/projects/{id}/merge_request/{merge_request_id}/comments
V3ProjectsMergeRequestComments::postV3ProjectsIdMergeRequestMergeRequestId() Post a comment to a merge request POST /v3/projects/{id}/merge_request/{merge_request_id}/comments
V3ProjectsMergeRequestCommits::list() Get the commits of a merge request GET /v3/projects/{id}/merge_request/{merge_request_id}/commits
V3ProjectsMergeRequestMerge::putV3ProjectsIdMergeRequestMergeRequestId() Merge a merge request PUT /v3/projects/{id}/merge_request/{merge_request_id}/merge
V3ProjectsMergeRequestSubscription::postV3ProjectsIdMergeRequestSubscribableId() Subscribe to a resource POST /v3/projects/{id}/merge_request/{subscribable_id}/subscription
V3ProjectsMergeRequestSubscription::deleteV3ProjectsIdMergeRequestSubscribableId() Unsubscribe from a resource DELETE /v3/projects/{id}/merge_request/{subscribable_id}/subscription
V3ProjectsMergeRequests::list() List merge requests GET /v3/projects/{id}/merge_requests
V3ProjectsMergeRequests::postV3ProjectsId() Create a merge request POST /v3/projects/{id}/merge_requests
V3ProjectsMergeRequests::getV3ProjectsIdMergeRequestsMergeRequestId() Get a single merge request GET /v3/projects/{id}/merge_requests/{merge_request_id}
V3ProjectsMergeRequests::putV3ProjectsIdMergeRequestsMergeRequestId() Update a merge request PUT /v3/projects/{id}/merge_requests/{merge_request_id}
V3ProjectsMergeRequests::deleteV3ProjectsIdMergeRequestsMergeRequestId() Delete a merge request DELETE /v3/projects/{id}/merge_requests/{merge_request_id}
V3ProjectsMergeRequestsAddSpentTime::postV3ProjectsIdMergeRequestsMergeRequestId() Add spent time for a project merge_request POST /v3/projects/{id}/merge_requests/{merge_request_id}/add_spent_time
V3ProjectsMergeRequestsAwardEmoji::list() Get a list of project +awardable+ award emoji GET /v3/projects/{id}/merge_requests/{merge_request_id}/award_emoji
V3ProjectsMergeRequestsAwardEmoji::postV3ProjectsIdMergeRequestsMergeRequestId() Award a new Emoji POST /v3/projects/{id}/merge_requests/{merge_request_id}/award_emoji
V3ProjectsMergeRequestsAwardEmoji::getV3ProjectsIdMergeRequestsMergeRequestIdAwardEmojiAwardId() Get a specific award emoji GET /v3/projects/{id}/merge_requests/{merge_request_id}/award_emoji/{award_id}
V3ProjectsMergeRequestsAwardEmoji::deleteV3ProjectsIdMergeRequestsMergeRequestIdAwardEmojiAwardId() Delete a +awardables+ award emoji DELETE /v3/projects/{id}/merge_requests/{merge_request_id}/award_emoji/{award_id}
V3ProjectsMergeRequestsCancelMergeWhenBuildSucceeds::postV3ProjectsIdMergeRequestsMergeRequestId() Cancel merge if “Merge When Pipeline Succeeds” is enabled POST /v3/projects/{id}/merge_requests/{merge_request_id}/cancel_merge_when_build_succeeds
V3ProjectsMergeRequestsChanges::getV3ProjectsIdMergeRequestsMergeRequestId() Show the merge request changes GET /v3/projects/{id}/merge_requests/{merge_request_id}/changes
V3ProjectsMergeRequestsClosesIssues::getV3ProjectsIdMergeRequestsMergeRequestId() List issues that will be closed on merge GET /v3/projects/{id}/merge_requests/{merge_request_id}/closes_issues
V3ProjectsMergeRequestsComments::list() Get the comments of a merge request GET /v3/projects/{id}/merge_requests/{merge_request_id}/comments
V3ProjectsMergeRequestsComments::postV3ProjectsIdMergeRequestsMergeRequestId() Post a comment to a merge request POST /v3/projects/{id}/merge_requests/{merge_request_id}/comments
V3ProjectsMergeRequestsCommits::list() Get the commits of a merge request GET /v3/projects/{id}/merge_requests/{merge_request_id}/commits
V3ProjectsMergeRequestsMerge::putV3ProjectsIdMergeRequestsMergeRequestId() Merge a merge request PUT /v3/projects/{id}/merge_requests/{merge_request_id}/merge
V3ProjectsMergeRequestsNotes::getV3ProjectsIdMergeRequestsNoteableId() Get a list of project +noteable+ notes GET /v3/projects/{id}/merge_requests/{noteable_id}/notes
V3ProjectsMergeRequestsNotes::postV3ProjectsIdMergeRequestsNoteableId() Create a new +noteable+ note POST /v3/projects/{id}/merge_requests/{noteable_id}/notes
V3ProjectsMergeRequestsNotes::getV3ProjectsIdMergeRequestsNoteableIdNotesNoteId() Get a single +noteable+ note GET /v3/projects/{id}/merge_requests/{noteable_id}/notes/{note_id}
V3ProjectsMergeRequestsNotes::putV3ProjectsIdMergeRequestsNoteableIdNotesNoteId() Update an existing +noteable+ note PUT /v3/projects/{id}/merge_requests/{noteable_id}/notes/{note_id}
V3ProjectsMergeRequestsNotes::deleteV3ProjectsIdMergeRequestsNoteableIdNotesNoteId() Delete a +noteable+ note DELETE /v3/projects/{id}/merge_requests/{noteable_id}/notes/{note_id}
V3ProjectsMergeRequestsNotesAwardEmoji::list() Get a list of project +awardable+ award emoji GET /v3/projects/{id}/merge_requests/{merge_request_id}/notes/{note_id}/award_emoji
V3ProjectsMergeRequestsNotesAwardEmoji::postV3ProjectsIdMergeRequestsMergeRequestIdNotesNoteId() Award a new Emoji POST /v3/projects/{id}/merge_requests/{merge_request_id}/notes/{note_id}/award_emoji
V3ProjectsMergeRequestsNotesAwardEmoji::getV3ProjectsIdMergeRequestsMergeRequestIdNotesNoteIdAwardEmojiAwardId() Get a specific award emoji GET /v3/projects/{id}/merge_requests/{merge_request_id}/notes/{note_id}/award_emoji/{award_id}
V3ProjectsMergeRequestsNotesAwardEmoji::deleteV3ProjectsIdMergeRequestsMergeRequestIdNotesNoteIdAwardEmojiAwardId() Delete a +awardables+ award emoji DELETE /v3/projects/{id}/merge_requests/{merge_request_id}/notes/{note_id}/award_emoji/{award_id}
V3ProjectsMergeRequestsResetSpentTime::postV3ProjectsIdMergeRequestsMergeRequestId() Reset spent time for a project merge_request POST /v3/projects/{id}/merge_requests/{merge_request_id}/reset_spent_time
V3ProjectsMergeRequestsResetTimeEstimate::postV3ProjectsIdMergeRequestsMergeRequestId() Reset the time estimate for a project merge_request POST /v3/projects/{id}/merge_requests/{merge_request_id}/reset_time_estimate
V3ProjectsMergeRequestsSubscription::postV3ProjectsIdMergeRequestsSubscribableId() Subscribe to a resource POST /v3/projects/{id}/merge_requests/{subscribable_id}/subscription
V3ProjectsMergeRequestsSubscription::deleteV3ProjectsIdMergeRequestsSubscribableId() Unsubscribe from a resource DELETE /v3/projects/{id}/merge_requests/{subscribable_id}/subscription
V3ProjectsMergeRequestsTimeEstimate::postV3ProjectsIdMergeRequestsMergeRequestId() Set a time estimate for a project merge_request POST /v3/projects/{id}/merge_requests/{merge_request_id}/time_estimate
V3ProjectsMergeRequestsTimeStats::list() Show time stats for a project merge_request GET /v3/projects/{id}/merge_requests/{merge_request_id}/time_stats
V3ProjectsMergeRequestsTodo::postV3ProjectsIdMergeRequestsMergeRequestId() Create a todo on an issuable POST /v3/projects/{id}/merge_requests/{merge_request_id}/todo
V3ProjectsMergeRequestsVersions::list() Get a list of merge request diff versions GET /v3/projects/{id}/merge_requests/{merge_request_id}/versions
V3ProjectsMergeRequestsVersions::getV3ProjectsIdMergeRequestsMergeRequestIdVersionsVersionId() Get a single merge request diff version GET /v3/projects/{id}/merge_requests/{merge_request_id}/versions/{version_id}
V3ProjectsMilestones::getV3ProjectsId() Get a list of project milestones GET /v3/projects/{id}/milestones
V3ProjectsMilestones::postV3ProjectsId() Create a new project milestone POST /v3/projects/{id}/milestones
V3ProjectsMilestones::getV3ProjectsIdMilestonesMilestoneId() Get a single project milestone GET /v3/projects/{id}/milestones/{milestone_id}
V3ProjectsMilestones::putV3ProjectsIdMilestonesMilestoneId() Update an existing project milestone PUT /v3/projects/{id}/milestones/{milestone_id}
V3ProjectsMilestonesIssues::getV3ProjectsIdMilestonesMilestoneId() Get all issues for a single project milestone GET /v3/projects/{id}/milestones/{milestone_id}/issues
V3ProjectsNotificationSettings::list() Get project level notification level settings, defaults to Global GET /v3/projects/{id}/notification_settings
V3ProjectsNotificationSettings::putV3ProjectsId() Update project level notification level settings, defaults to Global PUT /v3/projects/{id}/notification_settings
V3ProjectsOwned::get() Get an owned projects list for authenticated user GET /v3/projects/owned
V3ProjectsPipeline::postV3ProjectsId() Create a new pipeline POST /v3/projects/{id}/pipeline
V3ProjectsPipelines::getV3ProjectsId() Get all Pipelines of the project GET /v3/projects/{id}/pipelines
V3ProjectsPipelines::getV3ProjectsIdPipelinesPipelineId() Gets a specific pipeline for the project GET /v3/projects/{id}/pipelines/{pipeline_id}
V3ProjectsPipelinesCancel::postV3ProjectsIdPipelinesPipelineId() Cancel all builds in the pipeline POST /v3/projects/{id}/pipelines/{pipeline_id}/cancel
V3ProjectsPipelinesRetry::postV3ProjectsIdPipelinesPipelineId() Retry failed builds in the pipeline POST /v3/projects/{id}/pipelines/{pipeline_id}/retry
V3ProjectsRefTriggerBuilds::postV3ProjectsIdRefRefTrigger() Trigger a GitLab project build POST /v3/projects/{id}/(ref/{ref}/)trigger/builds
V3ProjectsRepositoryArchive::getV3ProjectsIdRepository() Get an archive of the repository GET /v3/projects/{id}/repository/archive
V3ProjectsRepositoryBlobs::getV3ProjectsIdRepositoryBlobsSha() Get a raw file contents GET /v3/projects/{id}/repository/blobs/{sha}
V3ProjectsRepositoryBranches::list() Get a project repository branches GET /v3/projects/{id}/repository/branches
V3ProjectsRepositoryBranches::postV3ProjectsIdRepository() Create branch POST /v3/projects/{id}/repository/branches
V3ProjectsRepositoryBranches::getV3ProjectsIdRepositoryBranchesBranch() Get a single branch GET /v3/projects/{id}/repository/branches/{branch}
V3ProjectsRepositoryBranches::deleteV3ProjectsIdRepositoryBranchesBranch() Delete a branch DELETE /v3/projects/{id}/repository/branches/{branch}
V3ProjectsRepositoryBranchesProtect::putV3ProjectsIdRepositoryBranchesBranch() Protect a single branch PUT /v3/projects/{id}/repository/branches/{branch}/protect
V3ProjectsRepositoryBranchesUnprotect::putV3ProjectsIdRepositoryBranchesBranch() Unprotect a single branch PUT /v3/projects/{id}/repository/branches/{branch}/unprotect
V3ProjectsRepositoryCommits::list() Get a project repository commits GET /v3/projects/{id}/repository/commits
V3ProjectsRepositoryCommits::postV3ProjectsIdRepository() Commit multiple file changes as one commit POST /v3/projects/{id}/repository/commits
V3ProjectsRepositoryCommits::getV3ProjectsIdRepositoryCommitsSha() Get a specific commit of a project GET /v3/projects/{id}/repository/commits/{sha}
V3ProjectsRepositoryCommitsBlob::getV3ProjectsIdRepositoryCommitsSha() Get a raw file contents GET /v3/projects/{id}/repository/commits/{sha}/blob
V3ProjectsRepositoryCommitsBuilds::list() Get builds for a specific commit of a project GET /v3/projects/{id}/repository/commits/{sha}/builds
V3ProjectsRepositoryCommitsCherryPick::postV3ProjectsIdRepositoryCommitsSha() Cherry pick commit into a branch POST /v3/projects/{id}/repository/commits/{sha}/cherry_pick
V3ProjectsRepositoryCommitsComments::list() Get a commit’s comments GET /v3/projects/{id}/repository/commits/{sha}/comments
V3ProjectsRepositoryCommitsComments::postV3ProjectsIdRepositoryCommitsSha() Post comment to commit POST /v3/projects/{id}/repository/commits/{sha}/comments
V3ProjectsRepositoryCommitsDiff::getV3ProjectsIdRepositoryCommitsSha() Get the diff for a specific commit of a project GET /v3/projects/{id}/repository/commits/{sha}/diff
V3ProjectsRepositoryCommitsStatuses::getV3ProjectsIdRepositoryCommitsSha() Get a commit’s statuses GET /v3/projects/{id}/repository/commits/{sha}/statuses
V3ProjectsRepositoryCompare::getV3ProjectsIdRepository() Compare two branches, tags, or commits GET /v3/projects/{id}/repository/compare
V3ProjectsRepositoryContributors::list() Get repository contributors GET /v3/projects/{id}/repository/contributors
V3ProjectsRepositoryFiles::getV3ProjectsIdRepository() Get a file from repository GET /v3/projects/{id}/repository/files
V3ProjectsRepositoryFiles::putV3ProjectsIdRepository() Update existing file in repository PUT /v3/projects/{id}/repository/files
V3ProjectsRepositoryFiles::postV3ProjectsIdRepository() Create new file in repository POST /v3/projects/{id}/repository/files
V3ProjectsRepositoryFiles::deleteV3ProjectsIdRepository() Delete an existing file in repository DELETE /v3/projects/{id}/repository/files
V3ProjectsRepositoryMergedBranches::deleteV3ProjectsIdRepository() DELETE /v3/projects/{id}/repository/merged_branches
V3ProjectsRepositoryRawBlobs::getV3ProjectsIdRepositoryRawBlobsSha() Get a raw blob contents by blob sha GET /v3/projects/{id}/repository/raw_blobs/{sha}
V3ProjectsRepositoryTags::list() Get a project repository tags GET /v3/projects/{id}/repository/tags
V3ProjectsRepositoryTags::postV3ProjectsIdRepository() Create a new repository tag POST /v3/projects/{id}/repository/tags
V3ProjectsRepositoryTags::getV3ProjectsIdRepositoryTagsTagName() Get a single repository tag GET /v3/projects/{id}/repository/tags/{tag_name}
V3ProjectsRepositoryTags::deleteV3ProjectsIdRepositoryTagsTagName() Delete a repository tag DELETE /v3/projects/{id}/repository/tags/{tag_name}
V3ProjectsRepositoryTagsRelease::putV3ProjectsIdRepositoryTagsTagName() Update a tag’s release note PUT /v3/projects/{id}/repository/tags/{tag_name}/release
V3ProjectsRepositoryTagsRelease::postV3ProjectsIdRepositoryTagsTagName() Add a release note to a tag POST /v3/projects/{id}/repository/tags/{tag_name}/release
V3ProjectsRepositoryTree::getV3ProjectsIdRepository() Get a project repository tree GET /v3/projects/{id}/repository/tree
V3ProjectsRunners::list() Get runners available for project GET /v3/projects/{id}/runners
V3ProjectsRunners::postV3ProjectsId() Enable a runner for a project POST /v3/projects/{id}/runners
V3ProjectsRunners::deleteV3ProjectsIdRunnersRunnerId() Disable project’s runner DELETE /v3/projects/{id}/runners/{runner_id}
V3ProjectsSearch::getV3ProjectsSearchQuery() Search for projects the current user has access to GET /v3/projects/search/{query}
V3ProjectsServices::getV3ProjectsIdServicesServiceSlug() Get the service settings for project GET /v3/projects/{id}/services/{service_slug}
V3ProjectsServices::deleteV3ProjectsIdServicesServiceSlug() Delete a service for project DELETE /v3/projects/{id}/services/{service_slug}
V3ProjectsServicesAsana::putV3ProjectsIdServices() Set asana service for project PUT /v3/projects/{id}/services/asana
V3ProjectsServicesAssembla::putV3ProjectsIdServices() Set assembla service for project PUT /v3/projects/{id}/services/assembla
V3ProjectsServicesBamboo::putV3ProjectsIdServices() Set bamboo service for project PUT /v3/projects/{id}/services/bamboo
V3ProjectsServicesBugzilla::putV3ProjectsIdServices() Set bugzilla service for project PUT /v3/projects/{id}/services/bugzilla
V3ProjectsServicesBuildkite::putV3ProjectsIdServices() Set buildkite service for project PUT /v3/projects/{id}/services/buildkite
V3ProjectsServicesBuildsEmail::putV3ProjectsIdServices() Set builds-email service for project PUT /v3/projects/{id}/services/builds-email
V3ProjectsServicesCampfire::putV3ProjectsIdServices() Set campfire service for project PUT /v3/projects/{id}/services/campfire
V3ProjectsServicesCustomIssueTracker::putV3ProjectsIdServices() Set custom-issue-tracker service for project PUT /v3/projects/{id}/services/custom-issue-tracker
V3ProjectsServicesDroneCi::putV3ProjectsIdServices() Set drone-ci service for project PUT /v3/projects/{id}/services/drone-ci
V3ProjectsServicesEmailsOnPush::putV3ProjectsIdServices() Set emails-on-push service for project PUT /v3/projects/{id}/services/emails-on-push
V3ProjectsServicesExternalWiki::putV3ProjectsIdServices() Set external-wiki service for project PUT /v3/projects/{id}/services/external-wiki
V3ProjectsServicesFlowdock::putV3ProjectsIdServices() Set flowdock service for project PUT /v3/projects/{id}/services/flowdock
V3ProjectsServicesGemnasium::putV3ProjectsIdServices() Set gemnasium service for project PUT /v3/projects/{id}/services/gemnasium
V3ProjectsServicesHipchat::putV3ProjectsIdServices() Set hipchat service for project PUT /v3/projects/{id}/services/hipchat
V3ProjectsServicesIrker::putV3ProjectsIdServices() Set irker service for project PUT /v3/projects/{id}/services/irker
V3ProjectsServicesJira::putV3ProjectsIdServices() Set jira service for project PUT /v3/projects/{id}/services/jira
V3ProjectsServicesKubernetes::putV3ProjectsIdServices() Set kubernetes service for project PUT /v3/projects/{id}/services/kubernetes
V3ProjectsServicesMattermost::putV3ProjectsIdServices() Set mattermost service for project PUT /v3/projects/{id}/services/mattermost
V3ProjectsServicesMattermostSlashCommands::putV3ProjectsIdServices() Set mattermost-slash-commands service for project PUT /v3/projects/{id}/services/mattermost-slash-commands
V3ProjectsServicesMattermostSlashCommandsTrigger::postV3ProjectsIdServicesMattermostSlashCommands() Trigger a slash command for mattermost-slash-commands POST /v3/projects/{id}/services/mattermost_slash_commands/trigger
V3ProjectsServicesPipelinesEmail::putV3ProjectsIdServices() Set pipelines-email service for project PUT /v3/projects/{id}/services/pipelines-email
V3ProjectsServicesPivotaltracker::putV3ProjectsIdServices() Set pivotaltracker service for project PUT /v3/projects/{id}/services/pivotaltracker
V3ProjectsServicesPushover::putV3ProjectsIdServices() Set pushover service for project PUT /v3/projects/{id}/services/pushover
V3ProjectsServicesRedmine::putV3ProjectsIdServices() Set redmine service for project PUT /v3/projects/{id}/services/redmine
V3ProjectsServicesSlack::putV3ProjectsIdServices() Set slack service for project PUT /v3/projects/{id}/services/slack
V3ProjectsServicesSlackSlashCommands::putV3ProjectsIdServices() Set slack-slash-commands service for project PUT /v3/projects/{id}/services/slack-slash-commands
V3ProjectsServicesSlackSlashCommandsTrigger::postV3ProjectsIdServicesSlackSlashCommands() Trigger a slash command for slack-slash-commands POST /v3/projects/{id}/services/slack_slash_commands/trigger
V3ProjectsServicesTeamcity::putV3ProjectsIdServices() Set teamcity service for project PUT /v3/projects/{id}/services/teamcity
V3ProjectsShare::postV3ProjectsId() Share the project with a group POST /v3/projects/{id}/share
V3ProjectsShare::deleteV3ProjectsIdShareGroupId() DELETE /v3/projects/{id}/share/{group_id}
V3ProjectsSnippets::list() Get all project snippets GET /v3/projects/{id}/snippets
V3ProjectsSnippets::postV3ProjectsId() Create a new project snippet POST /v3/projects/{id}/snippets
V3ProjectsSnippets::getV3ProjectsIdSnippetsSnippetId() Get a single project snippet GET /v3/projects/{id}/snippets/{snippet_id}
V3ProjectsSnippets::putV3ProjectsIdSnippetsSnippetId() Update an existing project snippet PUT /v3/projects/{id}/snippets/{snippet_id}
V3ProjectsSnippets::deleteV3ProjectsIdSnippetsSnippetId() Delete a project snippet DELETE /v3/projects/{id}/snippets/{snippet_id}
V3ProjectsSnippetsAwardEmoji::list() Get a list of project +awardable+ award emoji GET /v3/projects/{id}/snippets/{snippet_id}/award_emoji
V3ProjectsSnippetsAwardEmoji::postV3ProjectsIdSnippetsSnippetId() Award a new Emoji POST /v3/projects/{id}/snippets/{snippet_id}/award_emoji
V3ProjectsSnippetsAwardEmoji::getV3ProjectsIdSnippetsSnippetIdAwardEmojiAwardId() Get a specific award emoji GET /v3/projects/{id}/snippets/{snippet_id}/award_emoji/{award_id}
V3ProjectsSnippetsAwardEmoji::deleteV3ProjectsIdSnippetsSnippetIdAwardEmojiAwardId() Delete a +awardables+ award emoji DELETE /v3/projects/{id}/snippets/{snippet_id}/award_emoji/{award_id}
V3ProjectsSnippetsNotes::getV3ProjectsIdSnippetsNoteableId() Get a list of project +noteable+ notes GET /v3/projects/{id}/snippets/{noteable_id}/notes
V3ProjectsSnippetsNotes::postV3ProjectsIdSnippetsNoteableId() Create a new +noteable+ note POST /v3/projects/{id}/snippets/{noteable_id}/notes
V3ProjectsSnippetsNotes::getV3ProjectsIdSnippetsNoteableIdNotesNoteId() Get a single +noteable+ note GET /v3/projects/{id}/snippets/{noteable_id}/notes/{note_id}
V3ProjectsSnippetsNotes::putV3ProjectsIdSnippetsNoteableIdNotesNoteId() Update an existing +noteable+ note PUT /v3/projects/{id}/snippets/{noteable_id}/notes/{note_id}
V3ProjectsSnippetsNotes::deleteV3ProjectsIdSnippetsNoteableIdNotesNoteId() Delete a +noteable+ note DELETE /v3/projects/{id}/snippets/{noteable_id}/notes/{note_id}
V3ProjectsSnippetsNotesAwardEmoji::list() Get a list of project +awardable+ award emoji GET /v3/projects/{id}/snippets/{snippet_id}/notes/{note_id}/award_emoji
V3ProjectsSnippetsNotesAwardEmoji::postV3ProjectsIdSnippetsSnippetIdNotesNoteId() Award a new Emoji POST /v3/projects/{id}/snippets/{snippet_id}/notes/{note_id}/award_emoji
V3ProjectsSnippetsNotesAwardEmoji::getV3ProjectsIdSnippetsSnippetIdNotesNoteIdAwardEmojiAwardId() Get a specific award emoji GET /v3/projects/{id}/snippets/{snippet_id}/notes/{note_id}/award_emoji/{award_id}
V3ProjectsSnippetsNotesAwardEmoji::deleteV3ProjectsIdSnippetsSnippetIdNotesNoteIdAwardEmojiAwardId() Delete a +awardables+ award emoji DELETE /v3/projects/{id}/snippets/{snippet_id}/notes/{note_id}/award_emoji/{award_id}
V3ProjectsSnippetsRaw::getV3ProjectsIdSnippetsSnippetId() Get a raw project snippet GET /v3/projects/{id}/snippets/{snippet_id}/raw
V3ProjectsStar::postV3ProjectsId() Star a project POST /v3/projects/{id}/star
V3ProjectsStar::deleteV3ProjectsId() Unstar a project DELETE /v3/projects/{id}/star
V3ProjectsStarred::get() Gets starred project for the authenticated user GET /v3/projects/starred
V3ProjectsStatuses::postV3ProjectsIdStatusesSha() Post status to a commit POST /v3/projects/{id}/statuses/{sha}
V3ProjectsTriggers::list() Get triggers list GET /v3/projects/{id}/triggers
V3ProjectsTriggers::postV3ProjectsId() Create a trigger POST /v3/projects/{id}/triggers
V3ProjectsTriggers::getV3ProjectsIdTriggersToken() Get specific trigger of a project GET /v3/projects/{id}/triggers/{token}
V3ProjectsTriggers::deleteV3ProjectsIdTriggersToken() Delete a trigger DELETE /v3/projects/{id}/triggers/{token}
V3ProjectsUnarchive::postV3ProjectsId() Unarchive a project POST /v3/projects/{id}/unarchive
V3ProjectsUploads::postV3ProjectsId() Upload a file POST /v3/projects/{id}/uploads
V3ProjectsUser::postV3ProjectsUserUserId() Create new project for a specified user. Only available to admin users. POST /v3/projects/user/{user_id}
V3ProjectsUsers::list() Get the users list of a project GET /v3/projects/{id}/users
V3ProjectsVariables::getV3ProjectsId() Get project variables GET /v3/projects/{id}/variables
V3ProjectsVariables::postV3ProjectsId() Create a new variable in a project POST /v3/projects/{id}/variables
V3ProjectsVariables::getV3ProjectsIdVariablesKey() Get a specific variable from a project GET /v3/projects/{id}/variables/{key}
V3ProjectsVariables::putV3ProjectsIdVariablesKey() Update an existing variable from a project PUT /v3/projects/{id}/variables/{key}
V3ProjectsVariables::deleteV3ProjectsIdVariablesKey() Delete an existing variable from a project DELETE /v3/projects/{id}/variables/{key}
V3ProjectsVisible::get() Get a list of visible projects for authenticated user GET /v3/projects/visible
V3Runners::list() Get runners available for user GET /v3/runners
V3Runners::getV3RunnersId() Get runner’s details GET /v3/runners/{id}
V3Runners::putV3RunnersId() Update runner’s details PUT /v3/runners/{id}
V3Runners::deleteV3RunnersId() Remove a runner DELETE /v3/runners/{id}
V3RunnersAll::get() Get all runners - shared and specific GET /v3/runners/all
V3Session::post() Login to get token POST /v3/session
V3SidekiqCompoundMetrics::list() Get the Sidekiq Compound metrics. Includes queue, process, and job statistics GET /v3/sidekiq/compound_metrics
V3SidekiqJobStats::list() Get the Sidekiq job statistics GET /v3/sidekiq/job_stats
V3SidekiqProcessMetrics::list() Get the Sidekiq process metrics GET /v3/sidekiq/process_metrics
V3SidekiqQueueMetrics::list() Get the Sidekiq queue metrics GET /v3/sidekiq/queue_metrics
V3Snippets::list() Get a snippets list for authenticated user GET /v3/snippets
V3Snippets::post() Create new snippet POST /v3/snippets
V3Snippets::getV3SnippetsId() Get a single snippet GET /v3/snippets/{id}
V3Snippets::putV3SnippetsId() Update an existing snippet PUT /v3/snippets/{id}
V3Snippets::deleteV3SnippetsId() Remove snippet DELETE /v3/snippets/{id}
V3SnippetsPublic::get() List all public snippets current_user has access to GET /v3/snippets/public
V3SnippetsRaw::getV3SnippetsId() Get a raw snippet GET /v3/snippets/{id}/raw
V3TemplatesDockerfiles::get() Get the list of the available template GET /v3/templates/dockerfiles
V3TemplatesDockerfiles::getV3TemplatesDockerfilesName() Get the text for a specific template present in local filesystem GET /v3/templates/dockerfiles/{name}
V3TemplatesGitignores::get() Get the list of the available template GET /v3/templates/gitignores
V3TemplatesGitignores::getV3TemplatesGitignoresName() Get the text for a specific template present in local filesystem GET /v3/templates/gitignores/{name}
V3TemplatesGitlabCiYmls::list() Get the list of the available template GET /v3/templates/gitlab_ci_ymls
V3TemplatesGitlabCiYmls::getV3TemplatesGitlabCiYmlsName() Get the text for a specific template present in local filesystem GET /v3/templates/gitlab_ci_ymls/{name}
V3TemplatesLicenses::get() Get the list of the available license template GET /v3/templates/licenses
V3TemplatesLicenses::getV3TemplatesLicensesName() Get the text for a specific license GET /v3/templates/licenses/{name}
V3Todos::list() Get a todo list GET /v3/todos
V3Todos::delete() Mark all todos as done DELETE /v3/todos
V3Todos::deleteV3TodosId() Mark a todo as done DELETE /v3/todos/{id}
V3User::get() Get the currently authenticated user GET /v3/user
V3UserEmails::list() Get the currently authenticated user’s email addresses GET /v3/user/emails
V3UserEmails::post() Add new email address to the currently authenticated user POST /v3/user/emails
V3UserEmails::getV3UserEmailsEmailId() Get a single email address owned by the currently authenticated user GET /v3/user/emails/{email_id}
V3UserEmails::deleteV3UserEmailsEmailId() Delete an email address from the currently authenticated user DELETE /v3/user/emails/{email_id}
V3UserKeys::list() Get the currently authenticated user’s SSH keys GET /v3/user/keys
V3UserKeys::post() Add a new SSH key to the currently authenticated user POST /v3/user/keys
V3UserKeys::getV3UserKeysKeyId() Get a single key owned by currently authenticated user GET /v3/user/keys/{key_id}
V3UserKeys::deleteV3UserKeysKeyId() Delete an SSH key from the currently authenticated user DELETE /v3/user/keys/{key_id}
V3Users::list() Get the list of users GET /v3/users
V3Users::post() Create a user. Available only for admins. POST /v3/users
V3Users::getV3UsersId() Get a single user GET /v3/users/{id}
V3Users::putV3UsersId() Update a user. Available only for admins. PUT /v3/users/{id}
V3Users::deleteV3UsersId() Delete a user. Available only for admins. DELETE /v3/users/{id}
V3UsersBlock::putV3UsersId() Block a user. Available only for admins. PUT /v3/users/{id}/block
V3UsersEmails::list() Get the emails addresses of a specified user. Available only for admins. GET /v3/users/{id}/emails
V3UsersEmails::postV3UsersId() Add an email address to a specified user. Available only for admins. POST /v3/users/{id}/emails
V3UsersEmails::deleteV3UsersIdEmailsEmailId() Delete an email address of a specified user. Available only for admins. DELETE /v3/users/{id}/emails/{email_id}
V3UsersEvents::list() Get the contribution events of a specified user GET /v3/users/{id}/events
V3UsersKeys::list() Get the SSH keys of a specified user. Available only for admins. GET /v3/users/{id}/keys
V3UsersKeys::postV3UsersId() Add an SSH key to a specified user. Available only for admins. POST /v3/users/{id}/keys
V3UsersKeys::deleteV3UsersIdKeysKeyId() Delete an existing SSH key from a specified user. Available only for admins. DELETE /v3/users/{id}/keys/{key_id}
V3UsersUnblock::putV3UsersId() Unblock a user. Available only for admins. PUT /v3/users/{id}/unblock
V3Version::get() Get the version information of the GitLab instance. GET /v3/version

Making a Request

There are two ways to make a request to the nominated API Handler and API Method:

If you built the client to be accessible globally, you can use the relevant API Handler Class directly:

use Tectalic\Gitlab\Handlers\V3ApplicationSettings;
 
(new V3ApplicationSettings())->list();

Alternatively, you can access all API Handlers from the client class using the Client class:

$client->v3ApplicationSettings()->list();

Retrieving the Response

Once you have made a request using one of the two methods outlined above, the next step is to access the response.

You can access the response in different ways. Please choose your preferred one.

Model Responses

Model responses are Data Transfer Object (DTO) style PHP classes, with public properties for each API property.

They offer a structured way of retrieving the response from an API request.

All Response Models are an instance of \Spatie\DataTransferObject\DataTransferObject or \Spatie\DataTransferObject\DataTransferObjectCollection.

After performing the request, use the ->toModel() fluent method to the API Method:

use Tectalic\Gitlab\Handlers\V3ApplicationSettings;
 
$model = (new V3ApplicationSettings())->list()->toModel();

Each API Method’s toModel() call will return the appropriate Model class type for the API Method you have just called.

Associative Array Responses

After performing the request, use the ->toArray() fluent method to the API Method:

use Tectalic\Gitlab\Handlers\V3ApplicationSettings;
 
$array = (new V3ApplicationSettings())->list()->toArray();

In the resulting associative array, the array keys will match the names of the public properties in the relevant Model class.

PSR 7 Response Objects

If you need to access the raw response or inspect the HTTP headers, use the ->getResponse() fluent method to the API Method. It will return a Psr\Http\Message\ResponseInterface:

use Tectalic\Gitlab\Handlers\V3ApplicationSettings;
 
$response = (new V3ApplicationSettings())->list()->getResponse();

Errors

When performing requests with Tectalic Gitlab REST API Client, specific scenarios will cause a Tectalic\Gitlab\Exception\ClientException to be thrown. Please see below for details.

Invalid Usage of the Manager Class

A \LogicException will be thrown if the Manager::build() function is called multiple times, or if Manager::access() is called before calling Manager::build().

Unsuccessful HTTP Response Codes

The Tectalic Gitlab REST API Client depends on a PSR-18 compatible HTTP client, and that HTTP client should not throw an exception for unsuccessful HTTP response codes.

An unsuccessful response code is classified as one that is not in the range 200-299 (inclusive). Examples of unsuccessful response codes include:

  • Informational responses (100-199)
  • Redirection responses (300-399)
  • Client error responses (400-499)
  • Server error responses (500-599)

If an unsuccessful response code does occur:

  • your HTTP Client will not throw an Exception.
  • the API Handler’s toModel() method will throw a ClientException.
  • the API Handler’s toArray() method will return the response body and not throw a ClientException.
  • The API Handler’s getResponse() method will return the raw response and not throw a ClientException.

Below is an example of how you may wish to use a try/catch block when performing a request so that you can detect and handle unexpected errors.

use Tectalic\Gitlab\Client;
use Tectalic\Gitlab\ClientException;
use Tectalic\Gitlab\Manager;
 
// Build a Tectalic Gitlab REST API Client globally.
 
Manager::build($httpClient, $auth);
$handler = new V3ApplicationSettings();
 
// Perform a request
try {
$model = $handler->list()->toModel();
// Do something with the response model...
} catch (ClientException $e) {
// Error response received. Retrieve the HTTP response code and response body.
$responseBody = $handler->toArray();
$rawResponse = $handler->getResponse()->getResponse();
$responseCode = $handler->getResponse()->getStatusCode();
// Handle the error...
}

HTTP Client Exceptions

If your HTTP client of choice throws an exception other than ClientException, the Tectalic Gitlab REST API Client Client and its API Handler classes will let these exceptions bubble up.

Consult your HTTP client’s documentation for more details on exception handling.

Tests

The Tectalic Gitlab REST API Client package includes several types of automated PHPUnit tests to verify the correct operation:

  • Unit Tests
  • Integration Tests

To run these tests, you will need to have installed the Tectalic Gitlab REST API Client package with its dev dependencies (i.e. not using the --no-dev flag when running composer).

Unit Tests

These PHPUnit tests are designed to:

  • confirm that each API Method assembles a valid request that matches the Gitlab API OpenAPI specification.
  • verify the behaviour of other parts of the package, such as the Client and Manager classes.

The unit tests can be run using the following command, which needs to be run from this package’s root directory.

composer test:unit

Unit tests do not perform any real requests against the Gitlab API.

Unit tests are located in the tests/Unit directory.

Integration Tests

Integration tests are located in the tests/Integration directory.

These PHPUnit tests are designed to confirm that each API Method parses a valid response, according to the Gitlab API OpenAPI specification. Out of the box the integration tests are designed to work with the Prism Mock Server.

Using Prism as the Target

Make sure Prism is installed. Please see the Prism documentation for details on how to install Prism.

Once Prism is installed, you can run prism and the integration tests side by side in separate terminal windows, or using the following command, which need to be run from this package’s root directory.

echo "> Starting Prism server"
prism mock tests/openapi.json >/dev/null 2>&1 &
PRISM_PID=$!
sleep 2
echo " => Started"
composer test:integration
kill $PRISM_PID

Those commands will start the Prism mock server, then run the integration tests, and then stop the Prism mock server when the tests are completed.

In this case the integration tests do not perform any real requests against the Gitlab API.

Using a Different Target

By setting the GITLAB_CLIENT_TEST_BASE_URI environment variable, you can set a different API endpoint target for the integration tests.

For example, instead of using Prism, you can use a different mocking/staging/test server of your choice, or you can use the Gitlab API’s live endpoints.

After your setup is complete simply run the following command.

composer test:integration

We do not recommend running integration tests against the live Gitlab API endpoints. This is because the tests will send example data to all endpoints, which can result in new data being created, or existing data being deleted.

Support

If you have any questions or feedback, you can submit a support request to the Tectalic developers by going to https://tectalic.com/support/gitlab.

License

This software is copyright (c) Tectalic.

For the full copyright and license information, please view the ‘LICENSE’ file distributed with the source code.

Last updated 27 Oct 2022

Tectalic GitLab PHP API Client