Skip to content

Reference

GitLab

Connect GitLab to Alter Vault for secure API access

Use GitLab credentials to make authenticated API calls through Alter Vault without exposing API keys in code.

PropertyValue
Provider IDgitlab
CategoryDeveloper Tools
Credential TypeAPI Key

Log in to GitLab

Log in to GitLab at gitlab.com.

Go to User Settings → Access Tokens

Go to User Settings → Access Tokens at gitlab.com/-/user_settings/personal_access_tokens.

Generate a token

From the Generate token dropdown choose Legacy token (classic scopes across all your groups and projects) or Fine-grained token (limited to the groups, projects and permissions you pick), then set the name, expiration, and scopes.

Copy your token

Copy the generated token.

Enter hostname if self-hosted

If using a self-hosted instance, enter the hostname in the GitLab Hostname field.

Open the Developer Portal

Go to portal.alterauth.com and navigate to the application.

Add GitLab

Go to Managed Secrets > Add Provider > GitLab.

Enter credentials

Paste your Personal Access Token into the credential field. If using a self-hosted instance, also enter your GitLab hostname in the GitLab Hostname field.

Save

Click Save. You’ll receive a grant_id to use with the SDK.

response = await alter_app.request(
HttpMethod.GET,
"https://YOUR_GITLAB_HOST/api/v4/projects",
grant_id="YOUR_GRANT_ID", # Use gitlab.com for cloud or your self-hosted hostname
)

Alter policy rules can target these attested operations and families for operation-level and parameter-aware controls.

Rules saved with the former V3-prefixed operation IDs continue to match as compatibility aliases. New rules and audit filters should use the canonical GitLab ApiV4 IDs below.

Operation IDFamiliesMethodProvider pathNotes
getApiV4ProjectsreadGET/api/v4/projectsalso accepts getV3Projects
getApiV4ProjectsIdreadGET/api/v4/projects/{id}also accepts getV3ProjectsId
postApiV4ProjectswritePOST/api/v4/projectsalso accepts postV3Projects
putApiV4ProjectsIdadminPUT/api/v4/projects/{id}also accepts putV3ProjectsId
deleteApiV4ProjectsIddeleteDELETE/api/v4/projects/{id}also accepts deleteV3ProjectsId
getApiV4IssuesreadGET/api/v4/issuesalso accepts getV3Issues
getApiV4ProjectsIdIssuesreadGET/api/v4/projects/{id}/issuesalso accepts getV3ProjectsIdIssues
getApiV4ProjectsIdIssuesIssueIidreadGET/api/v4/projects/{id}/issues/{issue_iid}also accepts getV3ProjectsIdIssuesIssueId
postApiV4ProjectsIdIssueswritePOST/api/v4/projects/{id}/issuesalso accepts postV3ProjectsIdIssues
putApiV4ProjectsIdIssuesIssueIidwritePUT/api/v4/projects/{id}/issues/{issue_iid}also accepts putV3ProjectsIdIssuesIssueId
deleteApiV4ProjectsIdIssuesIssueIiddeleteDELETE/api/v4/projects/{id}/issues/{issue_iid}also accepts deleteV3ProjectsIdIssuesIssueId
postApiV4ProjectsIdIssuesIssueIidNoteswritePOST/api/v4/projects/{id}/issues/{issue_iid}/notesalso accepts postApiV4ProjectsIdIssuesNoteableIdNotes, postV3ProjectsIdIssuesNoteableIdNotes
getApiV4ProjectsIdMergeRequestsreadGET/api/v4/projects/{id}/merge_requestsalso accepts getV3ProjectsIdMergeRequests
getApiV4ProjectsIdMergeRequestsMergeRequestIidreadGET/api/v4/projects/{id}/merge_requests/{merge_request_iid}also accepts getV3ProjectsIdMergeRequestsMergeRequestId
getApiV4ProjectsIdMergeRequestsMergeRequestIidChangesreadGET/api/v4/projects/{id}/merge_requests/{merge_request_iid}/changesalso accepts getV3ProjectsIdMergeRequestsMergeRequestIdChanges
postApiV4ProjectsIdMergeRequestswritePOST/api/v4/projects/{id}/merge_requestsalso accepts postV3ProjectsIdMergeRequests
putApiV4ProjectsIdMergeRequestsMergeRequestIidwritePUT/api/v4/projects/{id}/merge_requests/{merge_request_iid}also accepts putV3ProjectsIdMergeRequestsMergeRequestId
putApiV4ProjectsIdMergeRequestsMergeRequestIidMergewritePUT/api/v4/projects/{id}/merge_requests/{merge_request_iid}/mergealso accepts putV3ProjectsIdMergeRequestsMergeRequestIdMerge
postApiV4ProjectsIdMergeRequestsMergeRequestIidNoteswritePOST/api/v4/projects/{id}/merge_requests/{merge_request_iid}/notesalso accepts postApiV4ProjectsIdMergeRequestsNoteableIdNotes, postV3ProjectsIdMergeRequestsNoteableIdNotes
getApiV4ProjectsIdRepositoryBranchesreadGET/api/v4/projects/{id}/repository/branchesalso accepts getV3ProjectsIdRepositoryBranches
postApiV4ProjectsIdRepositoryBrancheswritePOST/api/v4/projects/{id}/repository/branchesalso accepts postV3ProjectsIdRepositoryBranches
deleteApiV4ProjectsIdRepositoryBranchesBranchdeleteDELETE/api/v4/projects/{id}/repository/branches/{branch}also accepts deleteV3ProjectsIdRepositoryBranchesBranch
getApiV4ProjectsIdRepositoryCommitsreadGET/api/v4/projects/{id}/repository/commitsalso accepts getV3ProjectsIdRepositoryCommits
getApiV4ProjectsIdRepositoryCommitsShareadGET/api/v4/projects/{id}/repository/commits/{sha}also accepts getV3ProjectsIdRepositoryCommitsSha
postApiV4ProjectsIdRepositoryCommitsdelete, writePOST/api/v4/projects/{id}/repository/commitsalso accepts postV3ProjectsIdRepositoryCommits
getApiV4ProjectsIdRepositoryFilesFilePathreadGET/api/v4/projects/{id}/repository/files/{+file_path}also accepts getV3ProjectsIdRepositoryFiles
getApiV4ProjectsIdRepositoryFilesFilePathRawreadGET/api/v4/projects/{id}/repository/files/{+file_path}/raw—
getApiV4ProjectsIdRepositoryFilesFilePathBlamereadGET/api/v4/projects/{id}/repository/files/{+file_path}/blame—
postApiV4ProjectsIdRepositoryFilesFilePathwritePOST/api/v4/projects/{id}/repository/files/{+file_path}also accepts postV3ProjectsIdRepositoryFiles
putApiV4ProjectsIdRepositoryFilesFilePathwritePUT/api/v4/projects/{id}/repository/files/{+file_path}also accepts putV3ProjectsIdRepositoryFiles
deleteApiV4ProjectsIdRepositoryFilesFilePathdeleteDELETE/api/v4/projects/{id}/repository/files/{+file_path}also accepts deleteV3ProjectsIdRepositoryFiles
getApiV4ProjectsIdPipelinesreadGET/api/v4/projects/{id}/pipelinesalso accepts getV3ProjectsIdPipelines
getApiV4ProjectsIdPipelinesPipelineIdreadGET/api/v4/projects/{id}/pipelines/{pipeline_id}also accepts getV3ProjectsIdPipelinesPipelineId
getApiV4ProjectsIdMembersreadGET/api/v4/projects/{id}/membersalso accepts getV3ProjectsIdMembers
postApiV4ProjectsIdMembersadminPOST/api/v4/projects/{id}/membersalso accepts postV3ProjectsIdMembers
putApiV4ProjectsIdMembersUserIdadminPUT/api/v4/projects/{id}/members/{user_id}also accepts putV3ProjectsIdMembersUserId
deleteApiV4ProjectsIdMembersUserIdadminDELETE/api/v4/projects/{id}/members/{user_id}also accepts deleteV3ProjectsIdMembersUserId
getApiV4ProjectsIdHooksreadGET/api/v4/projects/{id}/hooksalso accepts getV3ProjectsIdHooks
postApiV4ProjectsIdHooksadminPOST/api/v4/projects/{id}/hooksalso accepts postV3ProjectsIdHooks
deleteApiV4ProjectsIdHooksHookIdadmin, deleteDELETE/api/v4/projects/{id}/hooks/{hook_id}also accepts deleteV3ProjectsIdHooksHookId
getApiV4GroupsreadGET/api/v4/groupsalso accepts getV3Groups
getApiV4GroupsIdreadGET/api/v4/groups/{id}also accepts getV3GroupsId
getApiV4UserreadGET/api/v4/useralso accepts getV3User

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.