멤버 역할 API
Offering: GitLab.com, Self-managed
- GitLab 15.4에서 도입됨. ‘customizable_roles’ 플래그 뒤에서 배포됨, 기본적으로 비활성화 되어 있음.
- GitLab 15.9에서 기본적으로 활성화됨.
- GitLab 16.0에서 읽기 취약점 추가됨.
- GitLab 16.1에서 관리자 취약점 추가됨.
- GitLab 16.3에서 읽기 종속성 추가됨.
- GitLab 16.3에서 이름 및 설명 필드 추가됨.
- GitLab 16.4에서 관리자 병합 요청 도입됨 ‘admin_merge_request’라는 플래그와 함께. 기본적으로 비활성화 되어 있음.
- GitLab 16.5에서 기능 플래그 ‘admin_merge_request’가 제거됨.
- GitLab 16.5에서 관리자 그룹 멤버 도입됨 ‘admin_group_member’라는 플래그와 함께. 기본적으로 비활성화 되어 있음. 기능 플래그는 GitLab 16.6에서 제거됨.
- GitLab 16.5에서 프로젝트 액세스 토큰 관리 도입됨 ‘manage_project_access_tokens’라는 플래그와 함께. 기본적으로 비활성화 되어 있음.
- GitLab 16.7에서 프로젝트 아카이브 도입됨.
- GitLab 16.8에서 프로젝트 삭제 도입됨.
- GitLab 16.8에서 그룹 액세스 토큰 관리 도입됨.
- GitLab 16.8에서 관리자 terraform 상태 도입됨.
- GitLab Self-managed에서 인스턴스 전역 사용자 정의 역할을 생성하고 제거할 수 있는 기능이 GitLab 16.9에서 도입됨.
인스턴스 멤버 역할 관리
Offering: Self-managed, GitLab Dedicated
전제조건:
인스턴스 전역 멤버 역할을 조회, 생성 및 삭제할 수 있습니다.
모든 인스턴스 멤버 역할 조회
인스턴스의 모든 멤버 역할을 조회합니다.
GET /member_roles
예제 요청:
curl --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/member_roles"
예제 응답:
[
{
"id": 2,
"name": "Instance custom role",
"description": "코드를 읽을 수 있는 사용자 정의 손님",
"group_id": null,
"base_access_level": 10,
"admin_cicd_variables": false,
"admin_compliance_framework": false,
"admin_group_member": false,
"admin_merge_request": false,
"admin_push_rules": false,
"admin_terraform_state": false,
"admin_vulnerability": false,
"admin_web_hook": false,
"archive_project": false,
"manage_deploy_tokens": false,
"manage_group_access_tokens": false,
"manage_merge_request_settings": false,
"manage_project_access_tokens": false,
"manage_security_policy_link": false,
"read_code": true,
"read_runners": false,
"read_dependency": false,
"read_vulnerability": false,
"remove_group": false,
"remove_project": false
}
]
인스턴스 멤버 역할 생성
인스턴스 전체에 대한 멤버 역할을 생성합니다.
POST /member_roles
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
name |
string | 예 | 멤버 역할의 이름입니다. |
description |
string | 아니오 | 멤버 역할의 설명입니다. |
base_access_level |
integer | 예 | 구성된 역할의 기본 접근 수준입니다. 유효한 값은 10 (게스트), 20 (리포터), 30 (개발자), 40 (유지보수자), 또는 50 (소유자)입니다. |
admin_cicd_variables |
boolean | 아니오 | CI/CD 변수를 생성, 읽기, 업데이트 및 삭제할 수 있는 권한입니다. |
admin_compliance_framework |
boolean | 아니오 | 준수 프레임워크를 관리할 수 있는 권한입니다. |
admin_group_member |
boolean | 아니오 | 그룹 내에서 멤버를 추가, 제거 및 할당할 수 있는 권한입니다. |
admin_merge_request |
boolean | 아니오 | 병합 요청을 승인할 수 있는 권한입니다. |
admin_push_rules |
boolean | 아니오 | 그룹 또는 프로젝트 수준에서 리포지토리에 대한 푸시 규칙을 구성할 수 있는 권한입니다. |
admin_terraform_state |
boolean | 아니오 | 프로젝트 테라폼 상태를 관리할 수 있는 권한입니다. |
admin_vulnerability |
boolean | 아니오 | 취약성 객체를 편집할 수 있는 권한(상태 및 이슈 연결 포함)입니다. |
admin_web_hook |
boolean | 아니오 | 웹 훅을 관리할 수 있는 권한입니다. |
archive_project |
boolean | 아니오 | 프로젝트를 보관할 수 있는 권한입니다. |
manage_deploy_tokens |
boolean | 아니오 | 배포 토큰을 관리할 수 있는 권한입니다. |
manage_group_access_tokens |
boolean | 아니오 | 그룹 접근 토큰을 관리할 수 있는 권한입니다. |
manage_merge_request_settings |
boolean | 아니오 | 병합 요청 설정을 구성할 수 있는 권한입니다. |
manage_project_access_tokens |
boolean | 아니오 | 프로젝트 접근 토큰을 관리할 수 있는 권한입니다. |
manage_security_policy_link |
boolean | 아니오 | 보안 정책 프로젝트를 연결할 수 있는 권한입니다. |
read_code |
boolean | 아니오 | 프로젝트 코드를 읽을 수 있는 권한입니다. |
read_runners |
boolean | 아니오 | 프로젝트 러너를 볼 수 있는 권한입니다. |
read_dependency |
boolean | 아니오 | 프로젝트 종속성을 읽을 수 있는 권한입니다. |
read_vulnerability |
boolean | 아니오 | 프로젝트 취약성을 읽을 수 있는 권한입니다. |
remove_group |
boolean | 아니오 | 그룹을 삭제하거나 복원할 수 있는 권한입니다. |
remove_project |
boolean | 아니오 | 프로젝트를 삭제할 수 있는 권한입니다. |
사용 가능한 권한에 대한 자세한 내용은 사용자 정의 권한을 참조하세요.
예시 요청:
curl --request POST --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" --data '{"name" : "Custom guest (instance)", "base_access_level" : 10, "read_code" : true}' "https://gitlab.example.com/api/v4/member_roles"
예시 응답:
{
"id": 3,
"name": "Custom guest (instance)",
"group_id": null,
"description": null,
"base_access_level": 10,
"admin_cicd_variables": false,
"admin_compliance_framework": false,
"admin_group_member": false,
"admin_merge_request": false,
"admin_push_rules": false,
"admin_terraform_state": false,
"admin_vulnerability": false,
"admin_web_hook": false,
"archive_project": false,
"manage_deploy_tokens": false,
"manage_group_access_tokens": false,
"manage_merge_request_settings": false,
"manage_project_access_tokens": false,
"manage_security_policy_link": false,
"read_code": true,
"read_runners": false,
"read_dependency": false,
"read_vulnerability": false,
"remove_group": false,
"remove_project": false
}
인스턴스 멤버 역할 삭제
인스턴스에서 멤버 역할을 삭제합니다.
DELETE /member_roles/:member_role_id
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
member_role_id |
정수 | 예 | 멤버 역할의 ID입니다. |
성공하면 204
와 빈 응답을 반환합니다.
예시 요청:
curl --request DELETE --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/member_roles/1"
그룹 멤버 역할 관리
Offering: GitLab.com
사전 요구 사항:
- 그룹에 대한 소유자 역할이 있어야 합니다.
이 API를 사용하여 그룹별 멤버 역할을 관리합니다. 그룹의 루트 수준에서만 멤버 역할을 생성할 수 있습니다.
모든 그룹 멤버 역할 가져오기
GET /groups/:id/member_roles
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
정수/문자열 | 예 | 그룹의 ID 또는 URL 인코딩된 경로입니다. |
예시 요청:
curl --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/groups/84/member_roles"
예시 응답:
[
{
"id": 2,
"name": "Guest + read code",
"description": "Custom guest that can read code",
"group_id": 84,
"base_access_level": 10,
"admin_cicd_variables": false,
"admin_compliance_framework": false,
"admin_group_member": false,
"admin_merge_request": false,
"admin_push_rules": false,
"admin_terraform_state": false,
"admin_vulnerability": false,
"admin_web_hook": false,
"archive_project": false,
"manage_deploy_tokens": false,
"manage_group_access_tokens": false,
"manage_merge_request_settings": false,
"manage_project_access_tokens": false,
"manage_security_policy_link": false,
"read_code": true,
"read_runners": false,
"read_dependency": false,
"read_vulnerability": false,
"remove_group": false,
"remove_project": false
},
{
"id": 3,
"name": "Guest + security",
"description": "Custom guest that read and admin security entities",
"group_id": 84,
"base_access_level": 10,
"admin_cicd_variables": false,
"admin_compliance_framework": false,
"admin_group_member": false,
"admin_merge_request": false,
"admin_push_rules": false,
"admin_terraform_state": false,
"admin_vulnerability": true,
"admin_web_hook": false,
"archive_project": false,
"manage_deploy_tokens": false,
"manage_group_access_tokens": false,
"manage_merge_request_settings": false,
"manage_project_access_tokens": false,
"manage_security_policy_link": false,
"read_code": true,
"read_runners": false,
"read_dependency": true,
"read_vulnerability": true,
"remove_group": false,
"remove_project": false
}
]
그룹에 구성원 역할 추가
- 사용자 지정 역할을 만들 때 이름과 설명을 추가할 수 있는 기능이 GitLab 16.3에서 도입됨.
그룹에 구성원 역할을 추가합니다.
POST /groups/:id/member_roles
매개변수:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
integer/string | 예 | 그룹의 ID 또는 URL 인코딩된 경로입니다. |
admin_cicd_variables |
boolean | 아니요 | CI/CD 변수를 생성, 읽기, 업데이트 및 삭제할 수 있는 권한입니다. |
admin_compliance_framework |
boolean | 아니요 | 준수 프레임워크를 관리할 수 있는 권한입니다. |
admin_group_member |
boolean | 아니요 | 그룹에서 구성원을 추가, 제거 및 할당할 수 있는 권한입니다. |
admin_merge_request |
boolean | 아니요 | 병합 요청을 승인할 수 있는 권한입니다. |
admin_push_rules |
boolean | 아니요 | 그룹 또는 프로젝트 수준에서 리포지토리의 푸시 규칙을 구성할 수 있는 권한입니다. |
admin_terraform_state |
boolean | 아니요 | 프로젝트 테라폼 상태를 관리할 수 있는 권한입니다. |
admin_vulnerability |
boolean | 아니요 | 프로젝트 취약성을 관리할 수 있는 권한입니다. |
admin_web_hook |
boolean | 아니요 | 웹 후크를 관리할 수 있는 권한입니다. |
archive_project |
boolean | 아니요 | 프로젝트를 보관할 수 있는 권한입니다. |
manage_deploy_tokens |
boolean | 아니요 | 배포 토큰을 관리할 수 있는 권한입니다. |
manage_group_access_tokens |
boolean | 아니요 | 그룹 접근 토큰을 관리할 수 있는 권한입니다. |
manage_merge_request_settings |
boolean | 아니요 | 병합 요청 설정을 구성할 수 있는 권한입니다. |
manage_project_access_tokens |
boolean | 아니요 | 프로젝트 접근 토큰을 관리할 수 있는 권한입니다. |
manage_security_policy_link |
boolean | 아니요 | 보안 정책 프로젝트를 연결할 수 있는 권한입니다. |
read_code |
boolean | 아니요 | 프로젝트 코드를 읽을 수 있는 권한입니다. |
read_runners |
boolean | 아니요 | 프로젝트 러너를 볼 수 있는 권한입니다. |
read_dependency |
boolean | 아니요 | 프로젝트 의존성을 읽을 수 있는 권한입니다. |
read_vulnerability |
boolean | 아니요 | 프로젝트 취약성을 읽을 수 있는 권한입니다. |
remove_group |
boolean | 아니요 | 그룹을 삭제하거나 복원할 수 있는 권한입니다. |
remove_project |
boolean | 아니요 | 프로젝트를 삭제할 수 있는 권한입니다. |
예제 요청:
curl --request POST --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" --data '{"name" : "Custom guest", "base_access_level" : 10, "read_code" : true}' "https://gitlab.example.com/api/v4/groups/84/member_roles"
예제 응답:
{
"id": 3,
"name": "Custom guest",
"description": null,
"group_id": 84,
"base_access_level": 10,
"admin_cicd_variables": false,
"admin_compliance_framework": false,
"admin_group_member": false,
"admin_merge_request": false,
"admin_push_rules": false,
"admin_terraform_state": false,
"admin_vulnerability": false,
"admin_web_hook": false,
"archive_project": false,
"manage_deploy_tokens": false,
"manage_group_access_tokens": false,
"manage_merge_request_settings": false,
"manage_project_access_tokens": false,
"manage_security_policy_link": false,
"read_code": true,
"read_runners": false,
"read_dependency": false,
"read_vulnerability": false,
"remove_group": false,
"remove_project": false
}
GitLab 16.3 이상에서 API를 사용하여:
- 사용자 지정 역할을 새로 생성할 때 이름(필수)과 설명(선택적)을 추가할 수 있습니다.
- 기존 사용자 지정 역할의 이름과 설명을 업데이트할 수 있습니다.
그룹의 구성원 역할 제거
그룹의 구성원 역할을 삭제합니다.
DELETE /groups/:id/member_roles/:member_role_id
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
정수/문자열 | 예 | 그룹의 ID 또는 URL 인코딩 경로입니다. |
member_role_id |
정수 | 예 | 구성원 역할의 ID입니다. |
성공하면 204
를 반환하며 빈 응답이 돌아옵니다.
예제 요청:
curl --request DELETE --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/groups/84/member_roles/1"