그룹 멤버 API
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 엔드포인트를 사용하여 그룹 멤버와 상호 작용합니다. 프로젝트 멤버에 대한 정보는 프로젝트 멤버 API를 참조하세요. 지정된 그룹의 모든 직접 멤버를 나열합니다. 이 함수는 사용자 목록을 제한하기 위한 페이지네이션 파라미터 page와 per_page를 사용합니다.
이 엔드포인트를 사용하여 그룹 멤버와 상호 작용합니다.
프로젝트 멤버에 대한 정보는 프로젝트 멤버 API를 참조하세요.
알려진 문제#
group_saml_identity및group_scim_identity속성은 SSO가 활성화된 그룹의 그룹 Owner에게만 표시됩니다.email속성은 API 요청이 그룹 자체, 또는 해당 그룹의 하위 그룹이나 프로젝트로 전송될 때 그룹의 엔터프라이즈 사용자에 대한 그룹 Owner에게만 표시됩니다.
모든 그룹 멤버 목록 조회#
지정된 그룹의 모든 직접 멤버를 나열합니다. 상위 그룹을 통한 상속 멤버나 초대된 그룹의 멤버는 반환하지 않습니다.
이 함수는 사용자 목록을 제한하기 위한 페이지네이션 파라미터 page와 per_page를 사용합니다.
GET /groups/:id/members
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
query |
string | no | 이름, 이메일, 또는 사용자 이름을 기반으로 결과를 필터링합니다. 쿼리 범위를 넓히려면 부분 값을 사용합니다. |
user_ids |
array of integers | no | 주어진 사용자 ID로 결과를 필터링합니다. |
skip_users |
array of integers | no | 건너뛸 사용자를 결과에서 제외합니다. |
show_seat_info |
boolean | no | 사용자에 대한 시트 정보를 표시합니다. |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members"
응답 예시:
[
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-09-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 30,
"group_saml_identity": null,
"is_using_seat": true
},
{
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-09-22T14:13:35Z",
"created_by": {
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 30,
"email": "john@example.com",
"group_saml_identity": {
"extern_uid":"ABC-1234567890",
"provider": "group_saml",
"saml_provider_id": 10
}
}
]
상속 및 초대 멤버를 포함한 모든 그룹 멤버 목록 조회#
히스토리
- GitLab 16.10에서 현재 사용자가 공유 그룹 또는 프로젝트의 멤버인 경우 초대된 비공개 그룹의 멤버를 반환하도록
webui_members_inherited_users라는 플래그와 함께 변경. 기본적으로 비활성화됨. - GitLab 17.0에서 기능 플래그
webui_members_inherited_users가 GitLab.com 및 GitLab Self-Managed에서 활성화됨. - GitLab 17.4에서 기능 플래그
webui_members_inherited_users제거. 초대된 그룹의 멤버가 기본적으로 표시됨.
상속 멤버, 초대된 사용자, 상위 그룹을 통한 권한을 포함하여 지정된 그룹의 모든 멤버를 나열합니다.
사용자가 이 그룹과 하나 이상의 상위 그룹 모두의 멤버인 경우,
가장 높은 access_level을 가진 멤버십만 반환됩니다.
이는 사용자의 유효한 권한을 나타냅니다.
초대된 그룹의 멤버는 다음 조건 중 하나가 충족되면 반환됩니다:
- 초대된 그룹이 공개 상태입니다.
- 요청자도 초대된 그룹의 멤버입니다.
- 요청자가 공유 그룹의 멤버입니다.
초대된 그룹 멤버는 공유 그룹에서 공유 멤버십을 갖습니다. 즉, 요청자가 공유 그룹의 멤버이지만 초대된 비공개 그룹의 멤버가 아닌 경우, 이 엔드포인트를 사용하면 요청자는 초대된 비공개 그룹 멤버를 포함한 모든 공유 그룹 멤버를 얻을 수 있습니다.
이 함수는 사용자 목록을 제한하기 위한 페이지네이션 파라미터 page와 per_page를 사용합니다.
GET /groups/:id/members/all
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
query |
string | no | 이름, 이메일, 또는 사용자 이름을 기반으로 결과를 필터링합니다. 쿼리 범위를 넓히려면 부분 값을 사용합니다. |
user_ids |
array of integers | no | 주어진 사용자 ID로 결과를 필터링합니다. |
show_seat_info |
boolean | no | 사용자에 대한 시트 정보를 표시합니다. |
state |
string | no | 멤버 상태로 결과를 필터링합니다. awaiting 또는 active 중 하나. Premium 및 Ultimate만 해당. |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/all"
응답 예시:
[
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-09-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 30,
"group_saml_identity": null
},
{
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-09-22T14:13:35Z",
"created_by": {
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 30,
"email": "john@example.com",
"group_saml_identity": {
"extern_uid":"ABC-1234567890",
"provider": "group_saml",
"saml_provider_id": 10
}
},
{
"id": 3,
"username": "foo_bar",
"name": "Foo bar",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-10-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-11-22",
"access_level": 30,
"group_saml_identity": null
}
]
그룹 멤버 조회#
그룹의 지정된 멤버를 조회합니다. 상위 그룹을 통한 상속 멤버는 반환하지 않습니다.
GET /groups/:id/members/:user_id
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
user_id |
integer | yes | 멤버의 사용자 ID. |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id"
그룹 멤버의 커스텀 역할을 업데이트하거나 제거하려면 빈 member_role_id 값을 전달합니다:
# 그룹 멤버십 업데이트
curl --request PUT --header "Content-Type: application/json" \
--header "Authorization: Bearer <your_access_token>" \
--data '{"member_role_id": null, "access_level": 10}' "https://gitlab.example.com/api/v4/groups/<group_id>/members/<user_id>"
응답 예시:
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"access_level": 30,
"email": "john@example.com",
"created_at": "2012-10-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": null,
"group_saml_identity": null
}
상속 및 초대 멤버를 포함한 그룹 멤버 조회#
히스토리
- GitLab 12.4에서 도입.
- GitLab 16.10에서 현재 사용자가 공유 그룹 또는 프로젝트의 멤버인 경우 초대된 비공개 그룹의 멤버를 반환하도록
webui_members_inherited_users라는 플래그와 함께 변경. 기본적으로 비활성화됨. - GitLab 17.0에서 GitLab.com 및 GitLab Self-Managed에서 활성화.
- GitLab 17.4에서 기능 플래그
webui_members_inherited_users제거. 초대된 그룹의 멤버가 기본적으로 표시됨.
상위 그룹을 통해 상속되거나 초대된 멤버를 포함하여 그룹의 지정된 멤버를 조회합니다. 자세한 내용은 모든 상속 멤버 나열을 참조하세요.
초대된 그룹 멤버는 공유 그룹에서 공유 멤버십을 갖습니다. 즉, 요청자가 공유 그룹의 멤버이지만 초대된 비공개 그룹의 멤버가 아닌 경우, 이 엔드포인트를 사용하면 요청자는 초대된 비공개 그룹 멤버를 포함한 모든 공유 그룹 멤버를 얻을 수 있습니다.
GET /groups/:id/members/all/:user_id
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
user_id |
integer | yes | 멤버의 사용자 ID. |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/all/:user_id"
응답 예시:
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"access_level": 30,
"created_at": "2012-10-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"email": "john@example.com",
"expires_at": null,
"group_saml_identity": null
}
청구 가능한 모든 그룹 멤버 목록 조회#
지정된 그룹의 모든 청구 가능 멤버를 나열합니다. 목록에는 하위 그룹 및 프로젝트의 멤버가 포함됩니다.
사전 요건:
- 청구 권한에 표시된 것처럼 청구 권한을 위한 API 엔드포인트에 접근하려면 Owner 역할이 있어야 합니다.
- 이 API 엔드포인트는 최상위 그룹에서만 작동합니다. 하위 그룹에서는 작동하지 않습니다.
이 함수는 사용자 목록을 제한하기 위한 페이지네이션 파라미터 page와 per_page를 사용합니다.
이름으로 청구 가능 그룹 멤버를 검색하려면 search 파라미터를 사용하고, 결과를 정렬하려면 sort를 사용합니다.
GET /groups/:id/billable_members
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
search |
string | no | 이름, 사용자 이름, 또는 공개 이메일로 그룹 멤버를 검색하기 위한 쿼리 문자열. |
sort |
string | no | 정렬 속성과 순서를 지정하는 파라미터가 포함된 쿼리 문자열. 아래에서 지원되는 값을 참조하세요. |
sort 속성에 대해 지원되는 값:
| 값 | 설명 |
|---|---|
access_level_asc |
액세스 수준, 오름차순 |
access_level_desc |
액세스 수준, 내림차순 |
last_joined |
마지막으로 참여 |
name_asc |
이름, 오름차순 |
name_desc |
이름, 내림차순 |
oldest_joined |
가장 오래 전에 참여 |
oldest_sign_in |
가장 오래된 로그인 |
recent_sign_in |
최근 로그인 |
last_activity_on_asc |
마지막 활동 날짜, 오름차순 |
last_activity_on_desc |
마지막 활동 날짜, 내림차순 |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/billable_members"
응답 예시:
[
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"last_activity_on": "2021-01-27",
"membership_type": "group_member",
"removable": true,
"created_at": "2021-01-03T12:16:02.000Z",
"last_login_at": "2022-10-09T01:33:06.000Z"
},
{
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"email": "john@example.com",
"last_activity_on": "2021-01-25",
"membership_type": "group_member",
"removable": true,
"created_at": "2021-01-04T18:46:42.000Z",
"last_login_at": "2022-09-29T22:18:46.000Z"
},
{
"id": 3,
"username": "foo_bar",
"name": "Foo bar",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"last_activity_on": "2021-01-20",
"membership_type": "group_invite",
"removable": false,
"created_at": "2021-01-09T07:12:31.000Z",
"last_login_at": "2022-10-10T07:28:56.000Z"
}
]
청구 가능 그룹 멤버의 모든 멤버십 목록 조회#
그룹의 지정된 청구 가능 멤버에 대한 모든 멤버십을 나열합니다.
사전 요건:
- 응답은 직접 멤버십만 나타냅니다. 상속된 멤버십은 포함되지 않습니다.
- 이 API 엔드포인트는 최상위 그룹에서만 작동합니다. 하위 그룹에서는 작동하지 않습니다.
- 이 API 엔드포인트는 그룹의 멤버십을 관리할 권한이 필요합니다.
사용자가 멤버인 모든 프로젝트와 그룹을 나열합니다. 그룹 계층 구조에 있는 프로젝트와 그룹만 포함됩니다. 예를 들어 요청된 그룹이 Top-Level Group이고 요청된 사용자가 Top-Level Group / Subgroup One과 Other Group / Subgroup Two 모두의 직접 멤버인 경우 Other Group / Subgroup Two는 Top-Level Group 계층에 있지 않으므로 Top-Level Group / Subgroup One만 반환됩니다.
이 API 엔드포인트는 멤버십 목록을 제한하기 위한 페이지네이션 파라미터 page와 per_page를 사용합니다.
GET /groups/:id/billable_members/:user_id/memberships
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
user_id |
integer | yes | 청구 가능 멤버의 사용자 ID. |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id/memberships"
응답 예시:
[
{
"id": 168,
"source_id": 131,
"source_full_name": "Top-Level Group / Subgroup One",
"source_members_url": "https://gitlab.example.com/groups/root-group/sub-group-one/-/group_members",
"created_at": "2021-03-31T17:28:44.812Z",
"expires_at": "2022-03-21",
"access_level": {
"string_value": "Developer",
"integer_value": 30
}
},
{
"id": 169,
"source_id": 63,
"source_full_name": "Top-Level Group / Subgroup One / My Project",
"source_members_url": "https://gitlab.example.com/root-group/sub-group-one/my-project/-/project_members",
"created_at": "2021-03-31T17:29:14.934Z",
"expires_at": null,
"access_level": {
"string_value": "Maintainer",
"integer_value": 40
}
}
]
청구 가능 그룹 멤버의 모든 간접 멤버십 목록 조회#
히스토리
- GitLab 16.11에서 도입.
그룹의 청구 가능 멤버에 대한 간접 멤버십 목록을 가져옵니다.
사전 요건:
- 이 API 엔드포인트는 최상위 그룹에서만 작동합니다. 하위 그룹에서는 작동하지 않습니다.
- 이 API 엔드포인트는 그룹의 멤버십을 관리할 권한이 필요합니다.
사용자가 멤버인 모든 프로젝트와 그룹을 나열하며, 요청된 최상위 그룹에 초대된 것을 포함합니다. 예를 들어 요청된 그룹이 Top-Level Group이고 요청된 사용자가 Top-Level Group에 초대된 Other Group / Subgroup Two의 직접 멤버인 경우 Other Group / Subgroup Two만 반환됩니다.
응답은 간접 멤버십만 나열합니다. 직접 멤버십은 포함되지 않습니다.
이 API 엔드포인트는 멤버십 목록을 제한하기 위한 페이지네이션 파라미터 page와 per_page를 사용합니다.
GET /groups/:id/billable_members/:user_id/indirect
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
user_id |
integer | yes | 청구 가능 멤버의 사용자 ID. |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id/indirect"
응답 예시:
[
{
"id": 168,
"source_id": 132,
"source_full_name": "Invited Group / Subgroup One",
"source_members_url": "https://gitlab.example.com/groups/invited-group/sub-group-one/-/group_members",
"created_at": "2021-03-31T17:28:44.812Z",
"expires_at": "2022-03-21",
"access_level": {
"string_value": "Developer",
"integer_value": 30
}
}
]
청구 가능 그룹 멤버 제거#
그룹 및 해당 하위 그룹과 프로젝트에서 지정된 청구 가능 멤버를 제거합니다.
이 API 엔드포인트를 사용하려면 사용자가 그룹 멤버일 필요가 없습니다. 예를 들어 사용자가 그룹의 프로젝트에 직접 추가되었더라도 이 API 엔드포인트를 사용하여 해당 사용자를 제거할 수 있습니다.
멤버 제거는 비동기적으로 처리되므로 변경 사항이 완료되는 데 몇 분이 걸릴 수 있습니다.
DELETE /groups/:id/billable_members/:user_id
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
user_id |
integer | yes | 멤버의 사용자 ID. |
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id"
사용자의 그룹 멤버십 상태 변경#
그룹에서 지정된 사용자의 멤버십 상태를 변경합니다.
사용자가 무료 사용자 한도를 초과한 경우 그룹 또는 프로젝트의 멤버십 상태를 awaiting 또는 active로 변경하면 해당 그룹 또는 프로젝트에 접근할 수 있게 됩니다. 변경 사항은 모든 하위 그룹 및 프로젝트에 적용됩니다.
PUT /groups/:id/members/:user_id/state
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
user_id |
integer | yes | 멤버의 사용자 ID. |
state |
string | yes | 사용자의 새 상태. 상태는 awaiting 또는 active 중 하나. |
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id/state?state=active"
응답 예시:
{
"success":true
}
그룹 멤버 추가#
지정된 그룹에 멤버를 추가합니다.
POST /groups/:id/members
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
user_id |
integer or string | yes, username이 제공되지 않은 경우 |
새 멤버의 사용자 ID 또는 쉼표로 구분된 여러 ID. |
username |
string | yes, user_id가 제공되지 않은 경우 |
새 멤버의 사용자 이름 또는 쉼표로 구분된 여러 사용자 이름. |
access_level |
integer | yes | 유효한 액세스 수준. 가능한 값: 0 (액세스 없음), 5 (최소 액세스), 10 (게스트), 15 (플래너), 20 (리포터), 30 (개발자), 40 (유지 관리자), 50 (Owner). 기본값: 30. |
expires_at |
string | no | YEAR-MONTH-DAY 형식의 날짜 문자열. |
invite_source |
string | no | 멤버 생성 프로세스를 시작하는 초대의 소스. GitLab 팀 멤버는 이 비공개 이슈에서 더 많은 정보를 볼 수 있습니다: https://gitlab.com/gitlab-org/gitlab/-/issues/327120>. |
member_role_id |
integer | no | Ultimate만 해당. 커스텀 멤버 역할의 ID. |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--data "user_id=1&access_level=30" "https://gitlab.example.com/api/v4/groups/:id/members"
응답 예시:
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-10-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 30,
"email": "john@example.com",
"group_saml_identity": null
}
역할 승격에 대한 관리자 승인이 켜진 경우 기존 사용자를 청구 가능 역할로 승격하는 멤버십 요청에는 관리자 승인이 필요합니다.
청구 불가 승급 관리를 활성화하려면
먼저 enable_member_promotion_management 애플리케이션 설정을 활성화해야 합니다.
단일 사용자 대기열 예시:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--data "user_id=1&access_level=30" "https://gitlab.example.com/api/v4/groups/:id/members"
{
"message":{
"username_1":"Request queued for administrator approval."
}
}
여러 사용자 대기열 예시:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--data "user_id=1,2&access_level=30" "https://gitlab.example.com/api/v4/groups/:id/members"
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--data "user_id=1,2&access_level=30" "https://gitlab.example.com/api/v4/projects/:id/members"
{
"queued_users": {
"username_1": "Request queued for administrator approval.",
"username_2": "Request queued for administrator approval."
},
"status": "success"
}
그룹 멤버 업데이트#
그룹의 지정된 멤버를 업데이트합니다.
PUT /groups/:id/members/:user_id
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
user_id |
integer | yes | 멤버의 사용자 ID. |
access_level |
integer | yes | 유효한 액세스 수준. 가능한 값: 0 (액세스 없음), 5 (최소 액세스), 10 (게스트), 15 (플래너), 20 (리포터), 30 (개발자), 40 (유지 관리자), 50 (Owner), 60 (관리자). 기본값: 30. |
expires_at |
string | no | YEAR-MONTH-DAY 형식의 날짜 문자열. |
member_role_id |
integer | no | Ultimate만 해당. 커스텀 멤버 역할의 ID. 값을 지정하지 않으면 모든 역할이 제거됩니다. |
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id?access_level=40"
응답 예시:
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-10-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 40,
"email": "john@example.com",
"group_saml_identity": null
}
역할 승격에 대한 관리자 승인이 켜진 경우 기존 사용자를 청구 가능 역할로 승격하는 멤버십 요청에는 관리자 승인이 필요합니다.
청구 불가 승급 관리를 활성화하려면
먼저 enable_member_promotion_management 애플리케이션 설정을 활성화해야 합니다.
응답 예시:
{
"message":{
"username_1":"Request queued for administrator approval."
}
}
그룹 멤버의 재정의 플래그 설정#
기본적으로 LDAP 그룹 멤버의 액세스 수준은 그룹 동기화를 통해 LDAP에 의해 지정된 값으로 설정됩니다. 이 엔드포인트를 호출하여 액세스 수준 재정의를 허용할 수 있습니다.
POST /groups/:id/members/:user_id/override
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
user_id |
integer | yes | 멤버의 사용자 ID. |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id/override"
응답 예시:
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-10-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 40,
"email": "john@example.com",
"override": true
}
그룹 멤버의 재정의 제거#
재정의 플래그를 false로 설정하고 LDAP 그룹 동기화가 액세스 수준을 LDAP 지정 값으로 재설정하도록 허용합니다.
DELETE /groups/:id/members/:user_id/override
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
user_id |
integer | yes | 멤버의 사용자 ID. |
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id/override"
응답 예시:
{
"id": 1,
"username": "raymond_smith",
"name": "Raymond Smith",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root",
"created_at": "2012-10-22T14:13:35Z",
"created_by": {
"id": 2,
"username": "john_doe",
"name": "John Doe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
"web_url": "http://192.168.1.8:3000/root"
},
"expires_at": "2012-10-22",
"access_level": 40,
"email": "john@example.com",
"override": false
}
그룹 멤버 제거#
그룹에서 지정된 사용자를 제거합니다. 사용자는 명시적으로 역할이 할당된 그룹 멤버여야 합니다.
예를 들어 사용자가 이 그룹의 프로젝트에 직접 추가되었지만 이 그룹 자체에는 명시적으로 추가되지 않은 경우 이 API 엔드포인트를 사용하여 해당 사용자를 제거할 수 없습니다. 대안적인 접근 방법은 그룹에서 청구 가능 멤버 제거를 참조하세요.
DELETE /groups/:id/members/:user_id
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
user_id |
integer | yes | 멤버의 사용자 ID. |
skip_subresources |
boolean | false | 하위 그룹 및 프로젝트에서 제거된 멤버의 직접 멤버십 삭제를 건너뛸지 여부. 기본값: false. |
unassign_issuables |
boolean | false | 주어진 그룹 또는 프로젝트 내의 이슈 또는 머지 요청에서 제거된 멤버의 배정을 취소할지 여부. 기본값: false. |
요청 예시:
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id"
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/:id/members/:user_id"
그룹 멤버 승인#
그룹 및 해당 하위 그룹과 프로젝트에 대한 지정된 대기 중인 사용자를 승인합니다.
PUT /groups/:id/members/:member_id/approve
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 최상위 그룹의 ID 또는 URL 인코딩된 경로. |
member_id |
integer | yes | 멤버의 ID. |
요청 예시:
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/:member_id/approve"
모든 대기 중인 그룹 멤버 승인#
지정된 그룹 및 해당 하위 그룹과 프로젝트에 대한 모든 대기 중인 사용자를 승인합니다.
POST /groups/:id/members/approve_all
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 최상위 그룹의 ID 또는 URL 인코딩된 경로. |
요청 예시:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/members/approve_all"
그룹 및 해당 하위 그룹과 프로젝트의 모든 대기 중인 그룹 멤버 목록 조회#
지정된 그룹 및 해당 하위 그룹과 프로젝트에 대해 awaiting 상태인 멤버와 GitLab 계정이 없는 초대된 사람 모두를 나열합니다.
사전 요건:
- 이 API 엔드포인트는 최상위 그룹에서만 작동합니다. 하위 그룹에서는 작동하지 않습니다.
- 이 API 엔드포인트는 그룹의 멤버를 관리할 권한이 필요합니다.
이 요청은 최상위 그룹의 계층 구조에 있는 모든 그룹과 프로젝트에서 일치하는 모든 그룹 및 프로젝트 멤버를 반환합니다.
멤버가 아직 GitLab 계정을 가입하지 않은 초대된 사용자인 경우 초대된 이메일 주소가 반환됩니다.
이 API 엔드포인트는 멤버 목록을 제한하기 위한 페이지네이션 파라미터 page와 per_page를 사용합니다.
GET /groups/:id/pending_members
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로. |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/pending_members"
응답 예시:
[
{
"id": 168,
"name": "Alex Garcia",
"username": "alex_garcia",
"email": "alex@example.com",
"avatar_url": "http://example.com/uploads/user/avatar/1/cd8.jpeg",
"web_url": "http://example.com/alex_garcia",
"approved": false,
"invited": false
},
{
"id": 169,
"email": "sidney@example.com",
"avatar_url": "http://gravatar.com/../e346561cd8.jpeg",
"approved": false,
"invited": true
},
{
"id": 170,
"email": "zhang@example.com",
"avatar_url": "http://gravatar.com/../e32131cd8.jpeg",
"approved": true,
"invited": true
}
]
