멤버 역할 API
Offering: GitLab.com
이 API를 사용하여 GitLab.com 그룹 또는 GitLab 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에서 도입되었습니다.
이 API를 사용하여 GitLab.com 그룹 또는 GitLab Self-Managed 인스턴스 전체의 멤버 역할과 상호작용합니다.
인스턴스 멤버 역할 관리#
사전 조건:
- 관리자로 인증해야 합니다.
모든 인스턴스 멤버 역할 조회#
인스턴스의 모든 멤버 역할을 조회합니다.
GET /member_roles
요청 예시:
curl --request GET \
--header "Authorization: Bearer <your_access_token>" \
--url "https://gitlab.example.com/api/v4/member_roles"
응답 예시:
[
{
"id": 2,
"name": "Instance custom role",
"description": "Custom guest that can read code",
"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 |
문자열 | 예 | 멤버 역할의 이름. |
description |
문자열 | 아니요 | 멤버 역할의 설명. |
base_access_level |
정수 | 예 | 설정된 역할의 기본 액세스 수준. 유효한 값: 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner). |
admin_cicd_variables |
불리언 | 아니요 | CI/CD 변수를 생성, 읽기, 업데이트 및 삭제하는 권한. |
admin_compliance_framework |
불리언 | 아니요 | 컴플라이언스 프레임워크를 관리하는 권한. |
admin_group_member |
불리언 | 아니요 | 그룹에서 멤버를 추가, 제거 및 할당하는 권한. |
admin_merge_request |
불리언 | 아니요 | 머지 리퀘스트를 승인하는 권한. |
admin_push_rules |
불리언 | 아니요 | 그룹 또는 프로젝트 수준에서 저장소의 푸시 규칙을 설정하는 권한. |
admin_terraform_state |
불리언 | 아니요 | 프로젝트 Terraform 상태를 관리하는 권한. |
admin_vulnerability |
불리언 | 아니요 | 상태 및 이슈 연결을 포함한 취약점 객체를 편집하는 권한. |
admin_web_hook |
불리언 | 아니요 | 웹 훅을 관리하는 권한. |
archive_project |
불리언 | 아니요 | 프로젝트를 보관하는 권한. |
manage_deploy_tokens |
불리언 | 아니요 | 배포 토큰을 관리하는 권한. |
manage_group_access_tokens |
불리언 | 아니요 | 그룹 액세스 토큰을 관리하는 권한. |
manage_merge_request_settings |
불리언 | 아니요 | 머지 리퀘스트 설정을 구성하는 권한. |
manage_project_access_tokens |
불리언 | 아니요 | 프로젝트 액세스 토큰을 관리하는 권한. |
manage_security_policy_link |
불리언 | 아니요 | 보안 정책 프로젝트를 연결하는 권한. |
read_code |
불리언 | 아니요 | 프로젝트 코드를 읽는 권한. |
read_runners |
불리언 | 아니요 | 프로젝트 러너를 보는 권한. |
read_dependency |
불리언 | 아니요 | 프로젝트 의존성을 읽는 권한. |
read_vulnerability |
불리언 | 아니요 | 프로젝트 취약점을 읽는 권한. |
remove_group |
불리언 | 아니요 | 그룹을 삭제하거나 복원하는 권한. |
remove_project |
불리언 | 아니요 | 프로젝트를 삭제하는 권한. |
사용 가능한 권한에 대한 자세한 내용은 커스텀 권한을 참조하세요.
요청 예시:
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}' \
--url "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>" \
--url "https://gitlab.example.com/api/v4/member_roles/1"
그룹 멤버 역할 관리#
사전 조건:
- 그룹의 Owner 역할이 있어야 합니다.
모든 그룹 멤버 역할 조회#
GET /groups/:id/member_roles
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 그룹의 ID 또는 URL 인코딩된 경로 |
요청 예시:
curl --request GET \
--header "Authorization: Bearer <your_access_token>" \
--url "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 can read and administer 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 |
정수 또는 문자열 | 예 | 그룹의 ID 또는 URL 인코딩된 경로. |
admin_cicd_variables |
불리언 | 아니요 | CI/CD 변수를 생성, 읽기, 업데이트 및 삭제하는 권한. |
admin_compliance_framework |
불리언 | 아니요 | 컴플라이언스 프레임워크를 관리하는 권한. |
admin_group_member |
불리언 | 아니요 | 그룹에서 멤버를 추가, 제거 및 할당하는 권한. |
admin_merge_request |
불리언 | 아니요 | 머지 리퀘스트를 승인하는 권한. |
admin_push_rules |
불리언 | 아니요 | 그룹 또는 프로젝트 수준에서 저장소의 푸시 규칙을 설정하는 권한. |
admin_terraform_state |
불리언 | 아니요 | 프로젝트 Terraform 상태를 관리하는 권한. |
admin_vulnerability |
불리언 | 아니요 | 프로젝트 취약점을 관리하는 권한. |
admin_web_hook |
불리언 | 아니요 | 웹 훅을 관리하는 권한. |
archive_project |
불리언 | 아니요 | 프로젝트를 보관하는 권한. |
manage_deploy_tokens |
불리언 | 아니요 | 배포 토큰을 관리하는 권한. |
manage_group_access_tokens |
불리언 | 아니요 | 그룹 액세스 토큰을 관리하는 권한. |
manage_merge_request_settings |
불리언 | 아니요 | 머지 리퀘스트 설정을 구성하는 권한. |
manage_project_access_tokens |
불리언 | 아니요 | 프로젝트 액세스 토큰을 관리하는 권한. |
manage_security_policy_link |
불리언 | 아니요 | 보안 정책 프로젝트를 연결하는 권한. |
read_code |
불리언 | 아니요 | 프로젝트 코드를 읽는 권한. |
read_runners |
불리언 | 아니요 | 프로젝트 러너를 보는 권한. |
read_dependency |
불리언 | 아니요 | 프로젝트 의존성을 읽는 권한. |
read_vulnerability |
불리언 | 아니요 | 프로젝트 취약점을 읽는 권한. |
remove_group |
불리언 | 아니요 | 그룹을 삭제하거나 복원하는 권한. |
remove_project |
불리언 | 아니요 | 프로젝트를 삭제하는 권한. |
요청 예시:
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}' \
--url "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>" \
--url "https://gitlab.example.com/api/v4/groups/84/member_roles/1"
