Users API
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
이 API를 사용하여 GitLab의 사용자 계정과 상호작용합니다. 사용자 목록을 제한하려면 페이지네이션 파라미터인 page와 per_page를 사용합니다. 이 엔드포인트는 키셋 페이지네이션을 지원합니다. ?search=를 사용하여 이름, username 또는 공개 이메일로 사용자를 검색할 수도 있습니다.
이 API를 사용하여 GitLab의 사용자 계정과 상호작용합니다. 이 엔드포인트로 내 계정 또는 다른 사용자의 계정을 관리할 수 있습니다.
모든 사용자 목록 조회#
모든 사용자를 조회합니다.
사용자 목록을 제한하려면 페이지네이션 파라미터인 page와 per_page를 사용합니다.
일반 사용자로 조회#
히스토리
- GitLab 18.2에서
saml_provider_id속성이 제거되었습니다.
GET /users
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
username |
string | 아니요 | 특정 username을 가진 단일 사용자를 가져옵니다. |
public_email |
string | 아니요 | 특정 공개 이메일을 가진 단일 사용자를 가져옵니다. |
search |
string | 아니요 | 이름, username 또는 공개 이메일로 사용자를 검색합니다. |
active |
boolean | 아니요 | 활성 사용자만 필터링합니다. 기본값은 false 입니다. |
external |
boolean | 아니요 | 외부 사용자만 필터링합니다. 기본값은 false 입니다. |
blocked |
boolean | 아니요 | 차단된 사용자만 필터링합니다. 기본값은 false 입니다. |
humans |
boolean | 아니요 | 봇 또는 내부 사용자가 아닌 일반 사용자만 필터링합니다. 기본값은 false 입니다. |
created_after |
DateTime | 아니요 | 지정된 시간 이후에 생성된 사용자를 반환합니다. |
created_before |
DateTime | 아니요 | 지정된 시간 이전에 생성된 사용자를 반환합니다. |
exclude_active |
boolean | 아니요 | 비활성 사용자만 필터링합니다. 기본값은 false 입니다. |
exclude_external |
boolean | 아니요 | 외부가 아닌 사용자만 필터링합니다. 기본값은 false 입니다. |
exclude_humans |
boolean | 아니요 | 봇 또는 내부 사용자만 필터링합니다. 기본값은 false 입니다. |
exclude_internal |
boolean | 아니요 | 내부가 아닌 사용자만 필터링합니다. 기본값은 false 입니다. |
without_project_bots |
boolean | 아니요 | 프로젝트 봇이 없는 사용자를 필터링합니다. 기본값은 false 입니다. |
응답 예시:
[
{
"id": 1,
"username": "john_smith",
"name": "John Smith",
"state": "active",
"locked": false,
"avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
"web_url": "http://localhost:3000/john_smith"
},
{
"id": 2,
"username": "jack_smith",
"name": "Jack Smith",
"state": "blocked",
"locked": false,
"avatar_url": "http://gravatar.com/../e32131cd8.jpeg",
"web_url": "http://localhost:3000/jack_smith"
}
]
이 엔드포인트는 키셋 페이지네이션을 지원합니다. GitLab 17.0 이상에서는 응답이 50,000건 이상이면 키셋 페이지네이션이 필수입니다.
?search=를 사용하여 이름, username 또는 공개 이메일로 사용자를 검색할 수도 있습니다. 예를 들어 /users?search=John과 같이 사용합니다. 검색 대상이 다음과 같을 때의 동작은 이렇습니다.
- 공개 이메일로 검색할 때는 정확히 일치하는 결과를 얻으려면 전체 이메일 주소를 사용해야 합니다.
- 이름 또는 username으로 검색할 때는 퍼지 검색이므로 정확히 일치하지 않아도 됩니다.
또한 username으로 사용자를 조회할 수 있습니다.
GET /users?username=:username
예를 들면 다음과 같습니다.
GET /users?username=jack_smith
Username 검색은 대소문자를 구분하지 않습니다.
또한 blocked와 active 상태를 기준으로 사용자를 필터링할 수 있습니다.
active=false 또는 blocked=false는 지원하지 않습니다.
GET /users?active=true
GET /users?blocked=true
또한 external=true를 사용하여 외부 사용자만 검색할 수 있습니다.
external=false는 지원하지 않습니다.
GET /users?external=true
GitLab은 알림 봇이나
지원 봇과 같은 봇 사용자를 지원합니다.
exclude_internal=true 파라미터를 사용하여 사용자 목록에서 다음 유형의 내부 사용자를
제외할 수 있습니다.
- 알림 봇
- 지원 봇
그러나 이 작업은 프로젝트용 봇 사용자나 그룹용 봇 사용자는 제외하지 않습니다.
GET /users?exclude_internal=true
또한 사용자 목록에서 외부 사용자를 제외하려면 exclude_external=true 파라미터를 사용할 수 있습니다.
GET /users?exclude_external=true
프로젝트용 봇 사용자와
그룹용 봇 사용자를 제외하려면
without_project_bots=true 파라미터를 사용할 수 있습니다.
GET /users?without_project_bots=true
관리자로 조회#
히스토리
GET /users
모든 사용자가 사용할 수 있는 파라미터와 관리자만 사용할 수 있는 다음 추가 속성을 모두 사용할 수 있습니다.
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
search |
string | 아니요 | 이름, username, 공개 이메일 또는 비공개 이메일로 사용자를 검색합니다. |
extern_uid |
string | 아니요 | 특정 외부 인증 공급자 UID를 가진 단일 사용자를 가져옵니다. |
provider |
string | 아니요 | 외부 공급자입니다. |
order_by |
string | 아니요 | id, name, username, created_at 또는 updated_at 필드를 기준으로 정렬된 사용자를 반환합니다. 기본값은 id 입니다 |
sort |
string | 아니요 | asc 또는 desc 순서로 정렬된 사용자를 반환합니다. 기본값은 desc 입니다 |
two_factor |
string | 아니요 | 이중 인증을 기준으로 사용자를 필터링합니다. 필터 값은 enabled 또는 disabled 입니다. 기본적으로 모든 사용자를 반환합니다 |
without_projects |
boolean | 아니요 | 프로젝트가 없는 사용자를 필터링합니다. 기본값은 false 이며, 프로젝트가 있는 사용자와 없는 사용자가 모두 반환됩니다. |
admins |
boolean | 아니요 | 관리자만 반환합니다. 기본값은 false 입니다 |
auditors |
boolean | 아니요 | 감사자 사용자만 반환합니다. 기본값은 false 입니다. 지정하지 않으면 모든 사용자를 반환합니다. Premium 및 Ultimate 전용입니다. |
skip_ldap |
boolean | 아니요 | LDAP 사용자를 건너뜁니다. Premium 및 Ultimate 전용입니다. |
응답 예시:
[
{
"id": 1,
"username": "john_smith",
"email": "john@example.com",
"name": "John Smith",
"state": "active",
"locked": false,
"avatar_url": "http://localhost:3000/uploads/user/avatar/1/index.jpg",
"web_url": "http://localhost:3000/john_smith",
"created_at": "2012-05-23T08:00:58Z",
"is_admin": false,
"bio": "",
"location": null,
"linkedin": "",
"twitter": "",
"discord": "",
"github": "",
"website_url": "",
"organization": "",
"job_title": "",
"last_sign_in_at": "2012-06-01T11:41:01Z",
"confirmed_at": "2012-05-23T09:05:22Z",
"theme_id": 1,
"last_activity_on": "2012-05-23",
"color_scheme_id": 2,
"projects_limit": 100,
"current_sign_in_at": "2012-06-02T06:36:55Z",
"note": "DMCA Request: 2018-11-05 | DMCA Violation | Abuse | https://gitlab.zendesk.com/agent/tickets/123",
"identities": [
{"provider": "github", "extern_uid": "2435223452345"},
{"provider": "bitbucket", "extern_uid": "john.smith"},
{"provider": "google_oauth2", "extern_uid": "8776128412476123468721346"}
],
"can_create_group": true,
"can_create_project": true,
"two_factor_enabled": true,
"external": false,
"private_profile": false,
"current_sign_in_ip": "196.165.1.102",
"last_sign_in_ip": "172.127.2.22",
"namespace_id": 1,
"provisioned_by_project_id": null,
"created_by": null
},
{
"id": 2,
"username": "jack_smith",
"email": "jack@example.com",
"name": "Jack Smith",
"state": "blocked",
"locked": false,
"avatar_url": "http://localhost:3000/uploads/user/avatar/2/index.jpg",
"web_url": "http://localhost:3000/jack_smith",
"created_at": "2012-05-23T08:01:01Z",
"is_admin": false,
"bio": "",
"location": null,
"linkedin": "",
"twitter": "",
"discord": "",
"github": "",
"website_url": "",
"organization": "",
"job_title": "",
"last_sign_in_at": null,
"confirmed_at": "2012-05-30T16:53:06.148Z",
"theme_id": 1,
"last_activity_on": "2012-05-23",
"color_scheme_id": 3,
"projects_limit": 100,
"current_sign_in_at": "2014-03-19T17:54:13Z",
"identities": [],
"can_create_group": true,
"can_create_project": true,
"two_factor_enabled": true,
"external": false,
"private_profile": false,
"current_sign_in_ip": "10.165.1.102",
"last_sign_in_ip": "172.127.2.22",
"namespace_id": 2,
"provisioned_by_project_id": null,
"created_by": null
}
]
GitLab Premium 또는 Ultimate 사용자에게는
shared_runners_minutes_limit, extra_shared_runners_minutes_limit, is_auditor, using_license_seat 파라미터도 표시됩니다.
[
{
"id": 1,
...
"shared_runners_minutes_limit": 133,
"extra_shared_runners_minutes_limit": 133,
"is_auditor": false,
"using_license_seat": true
...
}
]
GitLab Premium 또는 Ultimate 사용자에게는
group_saml 공급자 옵션과 provisioned_by_group_id 파라미터도 표시됩니다.
[
{
"id": 1,
...
"identities": [
{"provider": "github", "extern_uid": "2435223452345"},
{"provider": "bitbucket", "extern_uid": "john.smith"},
{"provider": "google_oauth2", "extern_uid": "8776128412476123468721346"},
{"provider": "group_saml", "extern_uid": "123789", "saml_provider_id": 10}
],
"provisioned_by_group_id": 123789
...
}
]
?search=를 사용하여 이름, username 또는 이메일로 사용자를 검색할 수도 있습니다. 예를 들어 /users?search=John과 같이 사용합니다. 검색 대상이 다음과 같을 때의 동작은 이렇습니다.
- 이메일로 검색할 때는 정확히 일치하는 결과를 얻으려면 전체 이메일 주소를 사용해야 합니다. 관리자는 공개 이메일 주소와 비공개 이메일 주소를 모두 검색할 수 있습니다.
- 이름 또는 username으로 검색할 때는 퍼지 검색이므로 정확히 일치하지 않아도 됩니다.
외부 UID와 공급자로 사용자를 조회할 수 있습니다.
GET /users?extern_uid=:extern_uid&provider=:provider
예를 들면 다음과 같습니다.
GET /users?extern_uid=1234567&provider=github
GitLab Premium 또는 Ultimate 사용자는 scim 공급자를 사용할 수 있습니다.
GET /users?extern_uid=1234567&provider=scim
생성 일시 범위로 사용자를 검색할 수 있습니다.
GET /users?created_before=2001-01-02T00:00:00.060Z&created_after=1999-01-02T00:00:00.060
/users?without_projects=true를 사용하여 프로젝트가 없는 사용자를 검색할 수 있습니다.
사용자 지정 속성으로 필터링할 수 있습니다.
GET /users?custom_attributes[key]=value&custom_attributes[other_key]=other_value
응답에 사용자의 사용자 지정 속성을 포함할 수 있습니다.
GET /users?with_custom_attributes=true
created_by 파라미터를 사용하여 사용자 계정이 다음과 같이 생성되었는지 확인할 수 있습니다.
- 관리자가 수동으로 생성.
- 프로젝트 봇 사용자로 생성.
반환된 값이 null 이면 해당 계정은 사용자가 직접 등록하여 생성한 것입니다.
단일 사용자 조회#
단일 사용자를 조회합니다.
일반 사용자로 단일 사용자 조회#
일반 사용자로 단일 사용자를 조회합니다.
사전 요구 사항:
- 이 엔드포인트를 사용하려면 로그인되어 있어야 합니다.
GET /users/:id
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer | 예 | 사용자의 ID |
응답 예시:
{
"id": 1,
"username": "john_smith",
"name": "John Smith",
"state": "active",
"locked": false,
"avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
"web_url": "http://localhost:3000/john_smith",
"created_at": "2012-05-23T08:00:58Z",
"bio": "",
"bio_html": "",
"bot": false,
"location": null,
"public_email": "john@example.com",
"linkedin": "",
"twitter": "",
"discord": "",
"github": "",
"website_url": "",
"organization": "",
"job_title": "Operations Specialist",
"pronouns": "he/him",
"work_information": null,
"followers": 1,
"following": 1,
"local_time": "3:38 PM",
"is_followed": false
}
관리자로 조회#
히스토리
- GitLab 18.3에서 응답의
email_reset_offered_at필드가 제거되었습니다.
관리자로 단일 사용자를 조회합니다.
GET /users/:id
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer | 예 | 사용자의 ID |
응답 예시:
{
"id": 1,
"username": "john_smith",
"email": "john@example.com",
"name": "John Smith",
"state": "active",
"locked": false,
"avatar_url": "http://localhost:3000/uploads/user/avatar/1/index.jpg",
"web_url": "http://localhost:3000/john_smith",
"created_at": "2012-05-23T08:00:58Z",
"is_admin": false,
"bio": "",
"bio_html": "",
"location": null,
"public_email": "john@example.com",
"linkedin": "",
"twitter": "",
"discord": "",
"github": "",
"website_url": "",
"organization": "",
"job_title": "Operations Specialist",
"pronouns": "he/him",
"work_information": null,
"followers": 1,
"following": 1,
"local_time": "3:38 PM",
"last_sign_in_at": "2012-06-01T11:41:01Z",
"confirmed_at": "2012-05-23T09:05:22Z",
"theme_id": 1,
"last_activity_on": "2012-05-23",
"color_scheme_id": 2,
"projects_limit": 100,
"current_sign_in_at": "2012-06-02T06:36:55Z",
"note": "DMCA Request: 2018-11-05 | DMCA Violation | Abuse | https://gitlab.zendesk.com/agent/tickets/123",
"identities": [
{"provider": "github", "extern_uid": "2435223452345"},
{"provider": "bitbucket", "extern_uid": "john.smith"},
{"provider": "google_oauth2", "extern_uid": "8776128412476123468721346"}
],
"can_create_group": true,
"can_create_project": true,
"two_factor_enabled": true,
"external": false,
"private_profile": false,
"commit_email": "john-codes@example.com",
"current_sign_in_ip": "196.165.1.102",
"last_sign_in_ip": "172.127.2.22",
"plan": "gold",
"trial": true,
"sign_in_count": 1337,
"namespace_id": 1,
"provisioned_by_project_id": null,
"created_by": null
}
plan과 trial 파라미터는 GitLab Enterprise Edition에서만 사용할 수 있습니다.
GitLab Premium 또는 Ultimate 사용자에게는
shared_runners_minutes_limit, is_auditor, extra_shared_runners_minutes_limit 파라미터도 표시됩니다.
{
"id": 1,
"username": "john_smith",
"is_auditor": false,
"shared_runners_minutes_limit": 133,
"extra_shared_runners_minutes_limit": 133,
...
}
GitLab.com Premium 또는 Ultimate 사용자에게는
group_saml 옵션과 provisioned_by_group_id 파라미터도 표시됩니다.
{
"id": 1,
"username": "john_smith",
"shared_runners_minutes_limit": 133,
"extra_shared_runners_minutes_limit": 133,
"identities": [
{"provider": "github", "extern_uid": "2435223452345"},
{"provider": "bitbucket", "extern_uid": "john.smith"},
{"provider": "google_oauth2", "extern_uid": "8776128412476123468721346"},
{"provider": "group_saml", "extern_uid": "123789", "saml_provider_id": 10}
],
"provisioned_by_group_id": 123789
...
}
GitLab.com Premium 또는 Ultimate 사용자에게는
scim_identities 파라미터도 표시됩니다.
{
...
"extra_shared_runners_minutes_limit": null,
"scim_identities": [
{"extern_uid": "2435223452345", "group_id": "3", "active": true},
{"extern_uid": "john.smith", "group_id": "42", "active": false}
]
...
}
관리자는 created_by 파라미터를 사용하여 사용자 계정이 다음과 같이 생성되었는지 확인할 수 있습니다.
- 관리자가 수동으로 생성.
- 프로젝트 봇 사용자로 생성.
반환된 값이 null 이면 해당 계정은 사용자가 직접 등록하여 생성한 것입니다.
응답에 사용자의 사용자 지정 속성을 포함할 수 있습니다.
GET /users/:id?with_custom_attributes=true
현재 사용자 조회#
현재 사용자를 조회합니다.
일반 사용자로 조회#
내 사용자 상세 정보를 조회합니다.
GET /user
응답 예시:
{
"id": 1,
"username": "john_smith",
"email": "john@example.com",
"name": "John Smith",
"state": "active",
"locked": false,
"avatar_url": "http://localhost:3000/uploads/user/avatar/1/index.jpg",
"web_url": "http://localhost:3000/john_smith",
"created_at": "2012-05-23T08:00:58Z",
"bio": "",
"location": null,
"public_email": "john@example.com",
"linkedin": "",
"twitter": "",
"discord": "",
"github": "",
"website_url": "",
"organization": "",
"job_title": "",
"pronouns": "he/him",
"bot": false,
"work_information": null,
"followers": 0,
"following": 0,
"local_time": "3:38 PM",
"last_sign_in_at": "2012-06-01T11:41:01Z",
"confirmed_at": "2012-05-23T09:05:22Z",
"theme_id": 1,
"last_activity_on": "2012-05-23",
"color_scheme_id": 2,
"projects_limit": 100,
"current_sign_in_at": "2012-06-02T06:36:55Z",
"identities": [
{"provider": "github", "extern_uid": "2435223452345"},
{"provider": "bitbucket", "extern_uid": "john_smith"},
{"provider": "google_oauth2", "extern_uid": "8776128412476123468721346"}
],
"can_create_group": true,
"can_create_project": true,
"two_factor_enabled": true,
"external": false,
"private_profile": false,
"commit_email": "admin@example.com",
"preferred_language": "en",
}
GitLab Premium 또는 Ultimate 사용자에게는 shared_runners_minutes_limit, extra_shared_runners_minutes_limit 파라미터도 표시됩니다.
관리자로 조회#
히스토리
- GitLab 18.3에서 응답의
email_reset_offered_at필드가 제거되었습니다.
내 사용자 상세 정보 또는 다른 사용자의 상세 정보를 조회합니다.
GET /user
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
sudo |
integer | 아니요 | 대신 호출을 수행할 사용자의 ID |
{
"id": 1,
"username": "john_smith",
"email": "john@example.com",
"name": "John Smith",
"state": "active",
"locked": false,
"avatar_url": "http://localhost:3000/uploads/user/avatar/1/index.jpg",
"web_url": "http://localhost:3000/john_smith",
"created_at": "2012-05-23T08:00:58Z",
"is_admin": true,
"bio": "",
"location": null,
"public_email": "john@example.com",
"linkedin": "",
"twitter": "",
"discord": "",
"github": "",
"website_url": "",
"organization": "",
"job_title": "",
"last_sign_in_at": "2012-06-01T11:41:01Z",
"confirmed_at": "2012-05-23T09:05:22Z",
"theme_id": 1,
"last_activity_on": "2012-05-23",
"color_scheme_id": 2,
"projects_limit": 100,
"current_sign_in_at": "2012-06-02T06:36:55Z",
"identities": [
{"provider": "github", "extern_uid": "2435223452345"},
{"provider": "bitbucket", "extern_uid": "john_smith"},
{"provider": "google_oauth2", "extern_uid": "8776128412476123468721346"}
],
"can_create_group": true,
"can_create_project": true,
"two_factor_enabled": true,
"external": false,
"private_profile": false,
"commit_email": "john-codes@example.com",
"current_sign_in_ip": "196.165.1.102",
"last_sign_in_ip": "172.127.2.22",
"namespace_id": 1,
"provisioned_by_project_id": null,
"created_by": null,
"note": null
}
GitLab Premium 또는 Ultimate 사용자에게는 다음 파라미터도 표시됩니다.
shared_runners_minutes_limitextra_shared_runners_minutes_limitis_auditorprovisioned_by_group_idusing_license_seat
사용자 생성#
사용자를 생성합니다.
사전 요구 사항:
- 관리자여야 합니다.
private_profile은
새 사용자의 프로필을 기본적으로 비공개로 설정
설정의 값으로 기본 설정됩니다. bio는 null 대신 ""로 기본 설정됩니다.
POST /users
지원되는 속성:
| 속성 | 필수 여부 | 설명 |
|---|---|---|
username |
예 | 사용자의 username |
name |
예 | 사용자의 이름 |
email |
예 | 사용자의 이메일 |
password |
조건부 | 사용자의 비밀번호입니다. force_random_password 또는 reset_password가 정의되지 않은 경우 필수입니다. force_random_password 또는 reset_password 중 하나가 정의되면 해당 설정이 우선합니다. |
admin |
아니요 | 사용자가 관리자인지 여부입니다. 유효한 값은 true 또는 false 입니다. 기본값은 false입니다. |
auditor |
아니요 | 사용자가 감사자인지 여부입니다. 유효한 값은 true 또는 false 입니다. 기본값은 false입니다. Premium 및 Ultimate 전용입니다. |
avatar |
아니요 | 사용자 아바타 이미지 파일 |
bio |
아니요 | 사용자 자기소개 |
can_create_group |
아니요 | 사용자가 최상위 그룹을 생성할 수 있는지 여부 - true 또는 false |
color_scheme_id |
아니요 | 파일 뷰어에 적용되는 사용자의 색 구성표(자세한 내용은 사용자 환경 설정 문서를 참고합니다) |
commit_email |
아니요 | 사용자의 커밋 이메일 주소 |
extern_uid |
아니요 | 외부 UID |
external |
아니요 | 사용자를 외부 사용자로 표시 - true 또는 false(기본값) |
extra_shared_runners_minutes_limit |
아니요 | 관리자만 설정할 수 있습니다. 이 사용자에게 추가로 부여하는 컴퓨팅 시간(분)입니다. Premium 및 Ultimate 전용입니다. |
force_random_password |
아니요 | true 이면 사용자 비밀번호를 임의 값으로 설정합니다. reset_password와 함께 사용할 수 있습니다. password보다 우선합니다. |
group_id_for_saml |
아니요 | SAML이 구성된 그룹의 ID |
linkedin |
아니요 | |
location |
아니요 | 사용자의 위치 |
note |
아니요 | 이 사용자에 대한 관리자 메모 |
organization |
아니요 | 조직 이름 |
private_profile |
아니요 | 사용자의 프로필이 비공개인지 여부 - true 또는 false. 기본값은 설정에 따라 결정됩니다. |
projects_limit |
아니요 | 사용자가 생성할 수 있는 프로젝트 수 |
pronouns |
아니요 | 사용자의 대명사 |
provider |
아니요 | 외부 공급자 이름 |
public_email |
아니요 | 사용자의 공개 이메일 주소 |
reset_password |
아니요 | true 이면 사용자에게 비밀번호 재설정 링크를 보냅니다. force_random_password와 함께 사용할 수 있습니다. password보다 우선합니다. |
shared_runners_minutes_limit |
아니요 | 관리자만 설정할 수 있습니다. 이 사용자의 월간 최대 컴퓨팅 시간(분)입니다. nil(기본값, 시스템 기본값 상속), 0(무제한) 또는 > 0 값을 설정할 수 있습니다. Premium 및 Ultimate 전용입니다. |
skip_confirmation |
아니요 | 확인 건너뛰기 - true 또는 false(기본값) |
theme_id |
아니요 | 사용자에게 적용되는 GitLab 테마(자세한 내용은 사용자 환경 설정 문서를 참고합니다) |
twitter |
아니요 | X(구 Twitter) 계정 |
discord |
아니요 | Discord 계정 |
github |
아니요 | GitHub username |
view_diffs_file_by_file |
아니요 | 사용자가 페이지당 파일 diff를 하나만 보도록 지정하는 플래그 |
website_url |
아니요 | 웹사이트 URL |
사용자 수정#
기존 사용자를 수정합니다.
사전 요구 사항:
- 관리자여야 합니다.
email 필드는 사용자의 기본 이메일 주소입니다. 이 필드는 해당 사용자에게 이미 추가된 보조 이메일 주소로만
변경할 수 있습니다. 동일한 사용자에게 이메일 주소를 더 추가하려면 이메일 추가 엔드포인트를 사용합니다.
PUT /users/:id
지원되는 속성:
| 속성 | 필수 여부 | 설명 |
|---|---|---|
admin |
아니요 | 사용자가 관리자인지 여부입니다. 유효한 값은 true 또는 false 입니다. 기본값은 false입니다. |
auditor |
아니요 | 사용자가 감사자인지 여부입니다. 유효한 값은 true 또는 false 입니다. 기본값은 false입니다. Premium 및 Ultimate 전용입니다. |
avatar |
아니요 | 사용자 아바타 이미지 파일 |
bio |
아니요 | 사용자 자기소개 |
can_create_group |
아니요 | 사용자가 그룹을 생성할 수 있는지 여부 - true 또는 false |
color_scheme_id |
아니요 | 파일 뷰어에 적용되는 사용자의 색 구성표(자세한 내용은 사용자 환경 설정 문서를 참고합니다) |
commit_email |
아니요 | 사용자의 커밋 이메일입니다. 비공개 커밋 이메일을 사용하려면 _private으로 설정합니다. |
email |
아니요 | 사용자의 이메일 |
extern_uid |
아니요 | 외부 UID |
external |
아니요 | 사용자를 외부 사용자로 표시 - true 또는 false(기본값) |
extra_shared_runners_minutes_limit |
아니요 | 관리자만 설정할 수 있습니다. 이 사용자에게 추가로 부여하는 컴퓨팅 시간(분)입니다. Premium 및 Ultimate 전용입니다. |
group_id_for_saml |
아니요 | SAML이 구성된 그룹의 ID |
id |
예 | 사용자의 ID |
linkedin |
아니요 | |
location |
아니요 | 사용자의 위치 |
name |
아니요 | 사용자의 이름 |
note |
아니요 | 이 사용자에 대한 관리 메모 |
organization |
아니요 | 조직 이름 |
password |
아니요 | 사용자의 비밀번호 |
private_profile |
아니요 | 사용자의 프로필이 비공개인지 여부 - true 또는 false. |
projects_limit |
아니요 | 각 사용자가 생성할 수 있는 프로젝트 수 제한 |
pronouns |
아니요 | 대명사 |
provider |
아니요 | 외부 공급자 이름 |
public_email |
아니요 | 사용자의 공개 이메일(이미 인증된 주소여야 합니다) |
shared_runners_minutes_limit |
아니요 | 관리자만 설정할 수 있습니다. 이 사용자의 월간 최대 컴퓨팅 시간(분)입니다. nil(기본값, 시스템 기본값 상속), 0(무제한) 또는 > 0 값을 설정할 수 있습니다. Premium 및 Ultimate 전용입니다. |
skip_reconfirmation |
아니요 | 재확인 건너뛰기 - true 또는 false(기본값) |
theme_id |
아니요 | 사용자에게 적용되는 GitLab 테마(자세한 내용은 사용자 환경 설정 문서를 참고합니다) |
twitter |
아니요 | X(구 Twitter) 계정 |
discord |
아니요 | Discord 계정 |
github |
아니요 | GitHub username |
username |
아니요 | 사용자의 username |
view_diffs_file_by_file |
아니요 | 사용자가 페이지당 파일 diff를 하나만 보도록 지정하는 플래그 |
website_url |
아니요 | 웹사이트 URL |
사용자의 비밀번호를 업데이트하면 해당 사용자는 다음 로그인 시 비밀번호를 변경해야 합니다.
409(Conflict)가 더 적절한 경우에도 404 오류를 반환합니다.
예를 들어 이메일 주소를 이미 존재하는 주소로 변경하는 경우가 이에 해당합니다.
사용자 삭제#
사용자를 삭제합니다.
사전 요구 사항:
- 관리자여야 합니다.
반환 값은 다음과 같습니다.
- 작업이 성공하면
204 No Content상태 코드를 반환합니다. - 리소스를 찾을 수 없으면
404를 반환합니다. - 사용자를 소프트 삭제할 수 없으면
409를 반환합니다.
DELETE /users/:id
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer | 예 | 사용자의 ID |
hard_delete |
boolean | 아니요 | true이면 평소에는 Ghost User로 이관되는 기여 내역이 대신 삭제되고, 이 사용자가 단독으로 소유한 그룹도 함께 삭제됩니다. |
내 사용자 상태 조회#
내 사용자 상태를 조회합니다.
사전 요구 사항:
- 본인 인증이 되어 있어야 합니다.
GET /user/status
요청 예시:
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/user/status"
응답 예시:
{
"emoji":"coffee",
"availability":"busy",
"message":"I crave coffee :coffee:",
"message_html": "I crave coffee <gl-emoji title=\"hot beverage\" data-name=\"coffee\" data-unicode-version=\"4.0\">☕</gl-emoji>",
"clear_status_at": null
}
사용자 상태 조회#
사용자의 상태를 조회합니다. 이 엔드포인트는 인증 없이 사용할 수 있습니다.
GET /users/:id_or_username/status
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
id_or_username |
string | 예 | 상태를 조회할 사용자의 ID 또는 username |
요청 예시:
curl --request GET \
--url "https://gitlab.example.com/users/<username>/status"
응답 예시:
{
"emoji":"coffee",
"availability":"busy",
"message":"I crave coffee :coffee:",
"message_html": "I crave coffee <gl-emoji title=\"hot beverage\" data-name=\"coffee\" data-unicode-version=\"4.0\">☕</gl-emoji>",
"clear_status_at": null
}
내 사용자 상태 설정#
내 사용자 상태를 설정합니다.
사전 요구 사항:
- 본인 인증이 되어 있어야 합니다.
PUT /user/status
PATCH /user/status
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
emoji |
string | 아니요 | 상태로 사용할 이모지 이름입니다. 생략하면 speech_balloon 이 사용됩니다. 이모지 이름은 Gemojione 인덱스에 지정된 이름 중 하나여야 합니다. |
message |
string | 아니요 | 상태로 설정할 메시지입니다. 이모지 코드도 포함할 수 있습니다. 100자를 초과할 수 없습니다. |
availability |
string | 아니요 | 사용자의 가용 상태입니다. 가능한 값은 busy와 not_set 입니다. |
clear_status_after |
string | 아니요 | 지정한 시간 간격이 지나면 상태를 자동으로 정리합니다. 허용되는 값은 30_minutes, 3_hours, 8_hours, 1_day, 3_days, 7_days, 30_days 입니다 |
PUT과 PATCH의 차이는 다음과 같습니다.
PUT을 사용하면 전달하지 않은 파라미터는null로 설정되어 값이 지워집니다.PATCH를 사용하면 전달하지 않은 파라미터는 무시됩니다. 필드를 지우려면null을 명시적으로 전달합니다.
요청 예시:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/user/status" \
--data "clear_status_after=1_day" \
--data "emoji=coffee" \
--data "message=I crave coffee" \
--data "availability=busy"
응답 예시:
{
"emoji":"coffee",
"availability":"busy",
"message":"I crave coffee",
"message_html": "I crave coffee",
"clear_status_at":"2021-02-15T10:49:01.311Z"
}
내 사용자 환경 설정 조회#
내 사용자 환경 설정을 조회합니다.
사전 요구 사항:
- 본인 인증이 되어 있어야 합니다.
GET /user/preferences
응답 예시:
{
"id": 1,
"user_id": 1,
"view_diffs_file_by_file": true,
"show_whitespace_in_diffs": false,
"pass_user_identities_to_ci_jwt": false
}
내 사용자 환경 설정 업데이트#
내 사용자 환경 설정을 업데이트합니다.
사전 요구 사항:
- 본인 인증이 되어 있어야 합니다.
PUT /user/preferences
{
"id": 1,
"user_id": 1,
"view_diffs_file_by_file": true,
"show_whitespace_in_diffs": false,
"pass_user_identities_to_ci_jwt": false
}
지원되는 속성:
| 속성 | 필수 여부 | 설명 |
|---|---|---|
view_diffs_file_by_file |
예 | 사용자가 페이지당 파일 diff를 하나만 보도록 지정하는 플래그입니다. |
show_whitespace_in_diffs |
예 | 사용자가 diff에서 공백 변경 사항을 보도록 지정하는 플래그입니다. |
pass_user_identities_to_ci_jwt |
예 | 사용자가 자신의 외부 ID를 CI 정보로 전달하도록 지정하는 플래그입니다. 이 속성에는 외부 시스템에서 사용자를 식별하거나 인가하기에 충분한 정보가 들어 있지 않습니다. 이 속성은 GitLab 내부용이며 서드 파티 서비스에 전달해서는 안 됩니다. 자세한 내용과 예시는 토큰 페이로드를 참고합니다. |
내 아바타 업로드#
히스토리
- GitLab 17.0에서 추가되었습니다.
내 아바타를 업로드합니다.
사전 요구 사항:
- 본인 인증이 되어 있어야 합니다.
- 파일 크기는 200KB 이하여야 합니다. 권장 이미지 크기는 192 x 192 픽셀입니다.
- 이미지는 다음 파일 형식 중 하나여야 합니다.
.bmp.gif.ico.jpeg.png.tiff
PUT /user/avatar
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
avatar |
string | 예 | 업로드할 파일입니다. |
파일 시스템에서 아바타를 업로드하려면 --form 인수를 사용합니다. 이 인수를 사용하면
cURL이 Content-Type: multipart/form-data 헤더로 데이터를 전송합니다.
avatar= 파라미터는 파일 시스템의 이미지 파일을 가리켜야 하며 앞에
@를 붙여야 합니다.
요청 예시:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/user/avatar" \
--form "avatar=@/path/to/your/avatar.png"
응답 예시:
{
"avatar_url": "http://gitlab.example.com/uploads/-/system/user/avatar/76/avatar.png",
}
반환 값은 다음과 같습니다.
- 성공하면
200을 반환합니다. - 파일 크기가 200KiB를 초과하면
400 Bad Request를 반환합니다.
할당된 이슈, 머지 리퀘스트, 리뷰 수 조회#
나에게 할당된 이슈, 머지 리퀘스트, 리뷰의 수를 조회합니다.
사전 요구 사항:
- 본인 인증이 되어 있어야 합니다.
지원되는 속성:
| 속성 | 타입 | 설명 |
|---|---|---|
assigned_issues |
number | 현재 사용자에게 할당된 열린 이슈 수입니다. |
assigned_merge_requests |
number | 현재 사용자에게 할당된 활성 머지 리퀘스트 수입니다. |
merge_requests |
number | GitLab 13.8에서 사용 중단되었습니다. assigned_merge_requests와 동일하며 이 속성으로 대체되었습니다. |
review_requested_merge_requests |
number | 현재 사용자에게 리뷰가 요청된 머지 리퀘스트 수입니다. |
todos |
number | 현재 사용자의 대기 중인 할 일 항목 수입니다. |
GET /user_counts
요청 예시:
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/user_counts"
응답 예시:
{
"merge_requests": 4,
"assigned_issues": 15,
"assigned_merge_requests": 11,
"review_requested_merge_requests": 0,
"todos": 1
}
사용자의 프로젝트, 그룹, 이슈, 머지 리퀘스트 수 조회#
사용자의 다음 항목 수를 조회합니다.
- 프로젝트.
- 그룹.
- 이슈.
- 머지 리퀘스트.
관리자는 모든 사용자를 조회할 수 있지만, 관리자가 아닌 사용자는 자신만 조회할 수 있습니다.
GET /users/:id/associations_count
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer | 예 | 사용자의 ID |
응답 예시:
{
"groups_count": 2,
"projects_count": 3,
"issues_count": 8,
"merge_requests_count": 5
}
사용자 활동 목록 조회#
사전 요구 사항:
- 비공개 프로필 사용자의 활동을 보려면 관리자여야 합니다.
공개 프로필 사용자의 마지막 활동 날짜를 오래된 순에서 최신 순으로 정렬하여 가져옵니다.
사용자 이벤트 타임스탬프(last_activity_on 및 current_sign_in_at)를 갱신하는 활동은 다음과 같습니다.
- Git HTTP/SSH 활동(clone, push 등)
- 사용자의 GitLab 로그인
- 사용자의 대시보드, 프로젝트, 이슈, 머지 리퀘스트 관련 페이지 방문
- 사용자의 API 사용
- 사용자의 GraphQL API 사용
기본적으로 최근 6개월 동안의 공개 프로필 사용자 활동을 표시하며, from 파라미터를 사용하여
이 범위를 조정할 수 있습니다.
GET /user/activities
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
from |
string | 아니요 | YEAR-MM-DD 형식의 날짜 문자열입니다. 예를 들어 2016-03-11과 같습니다. 기본값은 6개월 전입니다. |
요청 예시:
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/user/activities"
응답 예시:
[
{
"username": "user1",
"last_activity_on": "2015-12-14",
"last_activity_at": "2015-12-14"
},
{
"username": "user2",
"last_activity_on": "2015-12-15",
"last_activity_at": "2015-12-15"
},
{
"username": "user3",
"last_activity_on": "2015-12-16",
"last_activity_at": "2015-12-16"
}
]
last_activity_at은 사용 중단되었습니다. 대신 last_activity_on을 사용합니다.
사용자가 멤버로 있는 프로젝트 및 그룹 목록 조회#
사전 요구 사항:
- 관리자여야 합니다.
사용자가 멤버로 있는 모든 프로젝트와 그룹을 조회합니다.
멤버십의 source_id, source_name, source_type, access_level을 반환합니다.
소스는 Namespace(그룹을 의미) 또는 Project 유형입니다. 응답에는 직접 멤버십만 표시됩니다. 예를 들어 하위 그룹에서 상속된 멤버십은 포함되지 않습니다.
액세스 수준은 정수 값으로 표현됩니다.
0: 액세스 없음5: 최소 액세스10: Guest15: Planner20: Reporter30: Developer40: Maintainer50: Owner
GET /users/:id/memberships
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer | 예 | 지정한 사용자의 ID |
type |
string | 아니요 | 멤버십을 유형으로 필터링합니다. Project 또는 Namespace 중 하나를 사용할 수 있습니다 |
요청 예시:
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/users/:user_id/memberships"
응답 예시:
[
{
"source_id": 1,
"source_name": "Project one",
"source_type": "Project",
"access_level": "20"
},
{
"source_id": 3,
"source_name": "Group three",
"source_type": "Namespace",
"access_level": "20"
}
]
반환 값은 다음과 같습니다.
- 성공하면
200 OK를 반환합니다. - 사용자를 찾을 수 없으면
404 User Not Found를 반환합니다. - 관리자가 요청하지 않았으면
403 Forbidden을 반환합니다. - 요청한 유형이 지원되지 않으면
400 Bad Request를 반환합니다.
사용자의 이중 인증 비활성화#
사전 요구 사항:
- 관리자여야 합니다.
지정한 사용자의 이중 인증(2FA)을 비활성화합니다.
관리자는 API로 자신의 사용자 계정이나 다른 관리자의 2FA를 비활성화할 수 없습니다. 대신 Rails 콘솔을 사용하여 관리자의 2FA를 비활성화할 수 있습니다.
PATCH /users/:id/disable_two_factor
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer | 예 | 사용자의 ID |
요청 예시:
curl --request PATCH \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/users/1/disable_two_factor"
반환 값은 다음과 같습니다.
- 성공하면
204 No content를 반환합니다. - 지정한 사용자에게 이중 인증이 활성화되어 있지 않으면
400 Bad request를 반환합니다. - 관리자로 인증되지 않았으면
403 Forbidden을 반환합니다. - 사용자를 찾을 수 없으면
404 User Not Found를 반환합니다.
사용자와 연결된 러너 생성#
현재 사용자와 연결된 러너를 생성합니다. 감사 목적으로 해당 사용자가 소유자로 표시되지만,
러너의 가용 범위는 runner_type에 따라 결정됩니다. 자세한 내용은
러너 관리를 참고합니다.
사전 요구 사항:
- 관리자이거나 대상 네임스페이스 또는 프로젝트에 대해 Owner 권한이 있어야 합니다.
instance_type의 경우 GitLab 인스턴스의 관리자여야 합니다.- Owner 권한으로
group_type또는project_type을 사용하려면 러너 등록이 허용되어 있어야 합니다. create_runner스코프를 가진 액세스 토큰이 필요합니다.
응답의 token은 반드시 복사하거나 저장합니다. 이 값은 다시 조회할 수 없습니다.
POST /user/runners
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
runner_type |
string | 예 | 러너의 범위를 지정합니다. instance_type, group_type 또는 project_type 중 하나입니다. |
group_id |
integer | 아니요 | 러너를 생성할 그룹의 ID입니다. runner_type 이 group_type 이면 필수입니다. |
project_id |
integer | 아니요 | 러너를 생성할 프로젝트의 ID입니다. runner_type 이 project_type 이면 필수입니다. |
description |
string | 아니요 | 러너에 대한 설명입니다. |
paused |
boolean | 아니요 | 러너가 새 job을 무시할지 여부를 지정합니다. |
locked |
boolean | 아니요 | 러너를 현재 프로젝트에 잠글지 여부를 지정합니다. |
run_untagged |
boolean | 아니요 | 러너가 태그 없는 job을 처리할지 여부를 지정합니다. |
tag_list |
string | 아니요 | 쉼표로 구분된 러너 태그 목록입니다. |
access_level |
string | 아니요 | 러너의 액세스 수준입니다. not_protected 또는 ref_protected 중 하나입니다. |
maximum_timeout |
integer | 아니요 | 러너가 job을 실행할 수 있는 시간(초)을 제한하는 최대 타임아웃입니다. |
maintenance_note |
string | 아니요 | 러너에 대한 자유 형식 유지 관리 메모입니다(1024자). |
token_expires_at |
datetime | 아니요 | 러너 인증 토큰의 만료 시각으로 ISO 8601 형식입니다. 현재로부터 5분 이후 21일 이내여야 합니다. 구성된 경우 인스턴스, 그룹 또는 프로젝트 수준의 제한을 초과할 수 없습니다. 최초 토큰에만 적용됩니다. 로테이션된 토큰은 설정에서 계산된 만료 시각을 사용합니다. |
token_rotation_deadline |
datetime | 아니요 | 이 기한이 지나면 토큰 로테이션 요청이 거부됩니다. token_expires_at 이 필요합니다. token_expires_at 이하여야 합니다. 두 값을 동일하게 설정하면 토큰 로테이션이 비활성화됩니다. 로테이션에 성공하면 값이 지워집니다. |
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/user/runners" \
--data "runner_type=instance_type"
응답 예시:
{
"id": 9171,
"token": "<access-token>",
"token_expires_at": null
}
사용자로부터 인증 ID 삭제#
해당 ID에 연결된 공급자 이름을 사용하여 사용자의 인증 ID를 삭제합니다.
사전 요구 사항:
- 관리자여야 합니다.
DELETE /users/:id/identities/:provider
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer | 예 | 사용자의 ID |
provider |
string | 예 | 외부 공급자 이름 |
지원 PIN 생성#
히스토리
- GitLab 17.8에서 도입되었습니다.
내 사용자 계정에 대한 지원 PIN을 생성합니다. PIN은 생성 후 7일이 지나면 만료됩니다. GitLab 지원팀이 신원 확인을 위해 이 PIN을 요청할 수 있습니다.
사전 요구 사항:
- 본인 인증이 되어 있어야 합니다.
POST /user/support_pin
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/user/support_pin"
응답 예시:
{
"pin":"123456",
"expires_at":"2025-02-27T22:06:57Z"
}
지원 PIN 상세 정보 조회#
히스토리
- GitLab 17.8에서 도입되었습니다.
내 계정의 지원 PIN에 대한 상세 정보를 조회합니다. GitLab 지원팀이 신원 확인을 위해 이 PIN을 요청할 수 있습니다.
사전 요구 사항:
- 본인 인증이 되어 있어야 합니다.
GET /user/support_pin
요청 예시:
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/user/support_pin"
응답 예시:
{
"pin":"123456",
"expires_at":"2025-02-27T22:06:57Z"
}
사용자의 지원 PIN 조회#
히스토리
- GitLab 17.8에서 도입되었습니다.
지정한 사용자의 지원 PIN에 대한 상세 정보를 조회합니다. GitLab 지원팀이 신원 확인을 위해 이 PIN을 요청할 수 있습니다.
사전 요구 사항:
- 관리자여야 합니다.
GET /users/:id/support_pin
요청 예시:
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/users/1234/support_pin"
응답 예시:
{
"pin":"123456",
"expires_at":"2025-02-27T22:06:57Z"
}
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer | 예 | 사용자 계정의 ID |
사용자의 지원 PIN 취소#
히스토리
- GitLab 17.11에서 도입되었습니다.
자연 만료 이전에 지정한 사용자의 지원 PIN을 취소합니다. 이 작업은 PIN을 즉시 만료시키고 제거합니다.
사전 요구 사항:
- 관리자여야 합니다.
POST /users/:id/support_pin/revoke
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/users/1234/support_pin/revoke"
응답 예시:
성공하면 202 Accepted를 반환합니다.
지원되는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer | 예 | 사용자의 ID |