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.

Add a new token

Click ‘Add new token’, set 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 path
getApiV4ProjectsreadGET/api/v4/projects
getApiV4ProjectsIdreadGET/api/v4/projects/{id}
postApiV4ProjectswritePOST/api/v4/projects
putApiV4ProjectsIdadminPUT/api/v4/projects/{id}
deleteApiV4ProjectsIddeleteDELETE/api/v4/projects/{id}
getApiV4IssuesreadGET/api/v4/issues
getApiV4ProjectsIdIssuesreadGET/api/v4/projects/{id}/issues
getApiV4ProjectsIdIssuesIssueIidreadGET/api/v4/projects/{id}/issues/{issue_iid}
postApiV4ProjectsIdIssueswritePOST/api/v4/projects/{id}/issues
putApiV4ProjectsIdIssuesIssueIidwritePUT/api/v4/projects/{id}/issues/{issue_iid}
deleteApiV4ProjectsIdIssuesIssueIiddeleteDELETE/api/v4/projects/{id}/issues/{issue_iid}
postApiV4ProjectsIdIssuesIssueIidNoteswritePOST/api/v4/projects/{id}/issues/{issue_iid}/notes
getApiV4ProjectsIdMergeRequestsreadGET/api/v4/projects/{id}/merge_requests
getApiV4ProjectsIdMergeRequestsMergeRequestIidreadGET/api/v4/projects/{id}/merge_requests/{merge_request_iid}
getApiV4ProjectsIdMergeRequestsMergeRequestIidChangesreadGET/api/v4/projects/{id}/merge_requests/{merge_request_iid}/changes
postApiV4ProjectsIdMergeRequestswritePOST/api/v4/projects/{id}/merge_requests
putApiV4ProjectsIdMergeRequestsMergeRequestIidwritePUT/api/v4/projects/{id}/merge_requests/{merge_request_iid}
putApiV4ProjectsIdMergeRequestsMergeRequestIidMergewritePUT/api/v4/projects/{id}/merge_requests/{merge_request_iid}/merge
postApiV4ProjectsIdMergeRequestsMergeRequestIidNoteswritePOST/api/v4/projects/{id}/merge_requests/{merge_request_iid}/notes
getApiV4ProjectsIdRepositoryBranchesreadGET/api/v4/projects/{id}/repository/branches
postApiV4ProjectsIdRepositoryBrancheswritePOST/api/v4/projects/{id}/repository/branches
deleteApiV4ProjectsIdRepositoryBranchesBranchdeleteDELETE/api/v4/projects/{id}/repository/branches/{branch}
getApiV4ProjectsIdRepositoryCommitsreadGET/api/v4/projects/{id}/repository/commits
getApiV4ProjectsIdRepositoryCommitsShareadGET/api/v4/projects/{id}/repository/commits/{sha}
postApiV4ProjectsIdRepositoryCommitswritePOST/api/v4/projects/{id}/repository/commits
getApiV4ProjectsIdRepositoryFilesFilePathreadGET/api/v4/projects/{id}/repository/files/{+file_path}
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}
putApiV4ProjectsIdRepositoryFilesFilePathwritePUT/api/v4/projects/{id}/repository/files/{+file_path}
deleteApiV4ProjectsIdRepositoryFilesFilePathdeleteDELETE/api/v4/projects/{id}/repository/files/{+file_path}
getApiV4ProjectsIdPipelinesreadGET/api/v4/projects/{id}/pipelines
getApiV4ProjectsIdPipelinesPipelineIdreadGET/api/v4/projects/{id}/pipelines/{pipeline_id}
getApiV4ProjectsIdMembersreadGET/api/v4/projects/{id}/members
postApiV4ProjectsIdMembersadminPOST/api/v4/projects/{id}/members
putApiV4ProjectsIdMembersUserIdadminPUT/api/v4/projects/{id}/members/{user_id}
deleteApiV4ProjectsIdMembersUserIdadminDELETE/api/v4/projects/{id}/members/{user_id}
getApiV4ProjectsIdHooksreadGET/api/v4/projects/{id}/hooks
postApiV4ProjectsIdHooksadminPOST/api/v4/projects/{id}/hooks
deleteApiV4ProjectsIdHooksHookIdadmin, deleteDELETE/api/v4/projects/{id}/hooks/{hook_id}
getApiV4GroupsreadGET/api/v4/groups
getApiV4GroupsIdreadGET/api/v4/groups/{id}
getApiV4UserreadGET/api/v4/user

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.