사용자 API

Tier: Free, Premium, Ultimate
Offering: GitLab.com, Self-managed, GitLab Dedicated

REST API를 사용하여 계정을 관리하고
다른 사용자 관리할 수 있습니다.

사용자 목록

사용자 목록을 가져옵니다.

사용자 목록을 제한하기 위해 페이지 매김 매개변수 pageper_page를 사용합니다.

일반 사용자로서

GET /users

지원되는 속성:

속성 타입 필수 설명
username string no 특정 사용자 이름을 가진 단일 사용자를 가져옵니다.
search string no 사용자 이름을 검색합니다.
active boolean no 활성 사용자만 필터링합니다. 기본값은 false입니다.
external boolean no 외부 사용자만 필터링합니다. 기본값은 false입니다.
blocked boolean no 차단된 사용자만 필터링합니다. 기본값은 false입니다.
humans boolean no 봇이나 내부 사용자가 아닌 일반 사용자만 필터링합니다. 기본값은 false입니다.
created_after DateTime no 지정된 시간 이후에 생성된 사용자를 반환합니다.
created_before DateTime no 지정된 시간 이전에 생성된 사용자를 반환합니다.
exclude_active boolean no 비활성 사용자만 필터링합니다. 기본값은 false입니다.
exclude_external boolean no 비외부 사용자만 필터링합니다. 기본값은 false입니다.
exclude_humans boolean no 봇이나 내부 사용자만 필터링합니다. 기본값은 false입니다.
exclude_internal boolean no 비내부 사용자만 필터링합니다. 기본값은 false입니다.
without_project_bots boolean no 프로젝트 봇이 없는 사용자만 필터링합니다. 기본값은 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 16.5에서.

또한 ?search=를 사용하여 이름, 사용자 이름 또는 공개 이메일로 사용자 검색이 가능합니다. 예를 들어 /users?search=John.

이메일을 검색할 때는 전체 이메일 주소를 사용해야 정확한 일치를 얻을 수 있습니다. 검색은 부분 일치를 반환할 수 있습니다.

예를 들어 이메일 on@example.com을 검색하면 on@example.comjon@example.com이 모두 반환될 수 있습니다.

이름이나 사용자 이름을 검색할 때는 정확한 일치를 얻을 필요가 없습니다. 이는 퍼지 검색이기 때문입니다.

또한 사용자 이름으로 사용자를 조회할 수 있습니다:

GET /users?username=:username

예:

GET /users?username=jack_smith

참고:
사용자 이름 검색은 대소문자를 구분하지 않습니다.

또한 blockedactive 상태를 기준으로 사용자 필터링이 가능합니다.
active=false 또는 blocked=false는 지원하지 않습니다.

GET /users?active=true
GET /users?blocked=true

또한 외부 사용자만 external=true로 검색할 수 있습니다.
external=false는 지원하지 않습니다.

GET /users?external=true

GitLab은 alert bot이나 support bot와 같은 봇 사용자를 지원합니다.
다음과 같은 내부 사용자를 사용자의 목록에서 제외할 수 있습니다:

  • Alert bot
  • Support bot

그러나 이 작업은 프로젝트의 봇 사용자그룹의 봇 사용자를 제외하지는 않습니다.

GET /users?exclude_internal=true

또한 외부 사용자를 사용자 목록에서 제외하려면 exclude_external=true 매개변수를 사용할 수 있습니다.

GET /users?exclude_external=true

프로젝트의 봇 사용자그룹의 봇 사용자를 제외하려면 without_project_bots=true 매개변수를 사용할 수 있습니다.

GET /users?without_project_bots=true

관리자로서

Tier: Free, Premium, Ultimate
Offering: Self-managed, GitLab Dedicated
  • 응답에 있는 created_by 필드는 도입됨 GitLab 15.6에서.
  • 응답에 있는 scim_identities 필드는 도입됨 GitLab 16.1에서.
  • 응답에 있는 auditors 필드는 도입됨 GitLab 16.2에서.
  • 응답에 있는 email_reset_offered_at 필드는 도입됨 GitLab 16.7에서.
GET /users  

모든 모든 사용자에게 제공되는 매개변수와 함께 이 추가 속성을 관리자만 사용할 수 있습니다.

지원되는 속성:

속성 유형 필수 설명
extern_uid string no 특정 외부 인증 제공자 UID로 단일 사용자를 가져옵니다.
provider string no 외부 제공자입니다.
order_by string no id, name, username, created_at, 또는 updated_at 필드에 따라 정렬된 사용자 반환. 기본값은 id
sort string no asc 또는 desc 순서로 정렬된 사용자 반환. 기본값은 desc
two_factor string no 이중 인증으로 사용자를 필터링합니다. 필터 값은 enabled 또는 disabled입니다. 기본적으로 모든 사용자가 반환됩니다.
without_projects boolean no 프로젝트가 없는 사용자만 필터링합니다. 기본값은 false, 즉 모든 사용자가 반환됩니다.
admins boolean no 관리자만 반환합니다. 기본값은 false.
auditors boolean no 감사 사용자만 반환합니다. 기본값은 false. 포함하지 않을 경우 모든 사용자가 반환됩니다. Premium 및 Ultimate에서만 사용 가능합니다.
saml_provider_id number no 지정된 SAML 제공자 ID로 생성된 사용자만 반환합니다. 포함하지 않을 경우 모든 사용자가 반환됩니다. Premium 및 Ultimate에서만 사용 가능합니다.
skip_ldap boolean no 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,  
    "skype": "",  
    "linkedin": "",  
    "twitter": "",  
    "discord": "",  
    "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,  
    "created_by": null,  
    "email_reset_offered_at": 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,  
    "skype": "",  
    "linkedin": "",  
    "twitter": "",  
    "discord": "",  
    "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,  
    "created_by": null,  
    "email_reset_offered_at": 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=를 사용하여 이름, 사용자 이름 또는 이메일로 사용자를 검색할 수도 있습니다. 예를 들어, /users?search=John. 사용자를 검색할 때:

  • 이메일의 경우, 정확한 일치를 얻기 위해 전체 이메일 주소를 사용해야 합니다. 관리자로서 공용 및 개인 이메일 주소를 모두 검색할 수 있습니다.
  • 이름 또는 사용자 이름의 경우, 모호한 검색이 가능하므로 정확한 일치를 얻을 필요가 없습니다.

외부 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 정수 사용자 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": "",
  "bot": false,
  "location": null,
  "public_email": "john@example.com",
  "skype": "",
  "linkedin": "",
  "twitter": "",
  "discord": "",
  "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
}

관리자로서

Tier: Free, Premium, Ultimate
Offering: Self-managed, GitLab Dedicated

관리자로서 단일 사용자를 받습니다.

GET /users/:id

지원되는 속성:

속성 유형 필수 설명
id 정수 사용자 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": "",
  "location": null,
  "public_email": "john@example.com",
  "skype": "",
  "linkedin": "",
  "twitter": "",
  "discord": "",
  "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,
  "created_by": null,
  "email_reset_offered_at": null
}

참고: plantrial 매개변수는 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",
  "skype": "",
  "linkedin": "",
  "twitter": "",
  "discord": "",
  "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"
}

GitLab Premium 또는 Ultimate 사용자도 shared_runners_minutes_limit, extra_shared_runners_minutes_limit 매개 변수를 볼 수 있습니다.

관리자

Tier: Free, Premium, Ultimate
Offering: Self-managed, GitLab Dedicated
  • 응답의 created_by 필드는 도입됨 GitLab 15.6에.
  • 응답의 email_reset_offered_at 필드는 도입됨 GitLab 16.7에.

사용자 세부정보 또는 다른 사용자의 세부정보를 가져옵니다.

GET /user

지원되는 속성:

속성 유형 필수 여부 설명
sudo 정수 아니오 그 사용자 대신 호출할 사용자 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",
  "skype": "",
  "linkedin": "",
  "twitter": "",
  "discord": "",
  "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,
  "created_by": null,
  "email_reset_offered_at": null,
  "note": null
}

GitLab Premium 또는 Ultimate 사용자는 다음 매개변수도 볼 수 있습니다:

  • shared_runners_minutes_limit
  • extra_shared_runners_minutes_limit
  • is_auditor
  • provisioned_by_group_id
  • using_license_seat

사용자 생성

Tier: Free, Premium, Ultimate
Offering: Self-managed, GitLab Dedicated

사용자를 생성합니다.

사전 요구 사항:

  • 당신은 관리자가 되어야 합니다.

사용자를 생성할 때 다음 중 적어도 하나를 지정해야 합니다:

  • password
  • reset_password
  • force_random_password

만약 reset_passwordforce_random_password가 모두 false라면, password가 필요합니다.

force_random_passwordreset_passwordpassword보다 우선합니다. 또한, reset_password
force_random_password를 함께 사용할 수 있습니다.

note
private_profile
새 사용자의 프로필을 기본적으로 비공개로 설정 설정의 값을 기본으로 합니다.
bionull 대신 ""가 기본값입니다.
POST /users  

지원되는 속성:

속성 필수 설명
admin 아니오 사용자가 관리자입니다. 유효한 값은 true 또는 false입니다. 기본값은 false입니다.
auditor 아니오 사용자가 감사자입니다. 유효한 값은 true 또는 false입니다. 기본값은 false입니다. 도입됨 GitLab 15.3에서. Premium 및 Ultimate만 해당.
avatar 아니오 사용자의 아바타 이미지 파일
bio 아니오 사용자의 전기
can_create_group 아니오 사용자가 최상위 그룹을 생성할 수 있습니다 - true 또는 false
color_scheme_id 아니오 파일 뷰어의 사용자의 색상 테마 (자세한 내용은 사용자 기본 설정 문서를 참조하세요)
commit_email 아니오 사용자의 커밋 이메일 주소
email 이메일
extern_uid 아니오 외부 UID
external 아니오 사용자를 외부로 플래그 설정 - true 또는 false (기본값)
extra_shared_runners_minutes_limit 아니오 관리자만 설정할 수 있습니다. 이 사용자에 대한 추가 컴퓨팅 분. Premium 및 Ultimate만 해당.
force_random_password 아니오 사용자의 비밀번호를 무작위 값으로 설정 - true 또는 false (기본값)
group_id_for_saml 아니오 SAML이 구성된 그룹의 ID
linkedin 아니오 LinkedIn
location 아니오 사용자의 위치
name 이름
note 아니오 이 사용자에 대한 관리자의 노트
organization 아니오 조직 이름
password 아니오 비밀번호
private_profile 아니오 사용자의 프로필이 비공개입니다 - true 또는 false. 기본값은 설정에 따라 결정됩니다.
projects_limit 아니오 사용자가 생성할 수 있는 프로젝트 수
pronouns 아니오 사용자의 대명사
provider 아니오 외부 공급자 이름
public_email 아니오 사용자의 공개 이메일 주소
reset_password 아니오 사용자 비밀번호 재설정 링크 전송 - true 또는 false(기본값)
shared_runners_minutes_limit 아니오 관리자만 설정할 수 있습니다. 이 사용자의 최대 월간 컴퓨팅 분 수. nil(기본값; 시스템 기본값 상속), 0(무제한) 또는 > 0일 수 있습니다. Premium 및 Ultimate만 해당.
skip_confirmation 아니오 확인 건너뛰기 - true 또는 false (기본값)
skype 아니오 Skype ID
theme_id 아니오 사용자를 위한 GitLab 테마 (자세한 내용은 사용자 기본 설정 문서를 참조하세요)
twitter 아니오 X (구 트위터) 계정
discord 아니오 Discord 계정
username 사용자 이름
view_diffs_file_by_file 아니오 사용자가 페이지당 하나의 파일 차이만 보도록 표시하는 플래그
website_url 아니오 웹사이트 URL

사용자 수정

Tier: Free, Premium, Ultimate
Offering: Self-managed, GitLab Dedicated

기존 사용자를 수정합니다.

사전 조건:

  • 당신은 관리자여야 합니다.

email 필드는 사용자의 기본 이메일 주소입니다. 이 필드는 해당 사용자에 대해 이미 추가된 보조 이메일 주소로만 변경할 수 있습니다. 같은 사용자에 추가 이메일 주소를 추가하려면 이메일 추가 엔드포인트를 사용하세요.

PUT /users/:id

지원되는 속성:

속성 필수 여부 설명
admin 아니오 사용자는 관리자입니다. 유효한 값은 true 또는 false입니다. 기본값은 false입니다.
auditor 아니오 사용자는 감사자입니다. 유효한 값은 true 또는 false입니다. 기본값은 false입니다. GitLab 15.3에서 도입됨 (기본) Premium 및 Ultimate에서만 사용 가능합니다.
avatar 아니오 사용자의 아바타 이미지 파일
bio 아니오 사용자의 약력
can_create_group 아니오 사용자가 그룹을 생성할 수 있습니다 - true 또는 false
color_scheme_id 아니오 파일 뷰어용 사용자 색 구성표 (자세한 내용은 사용자 기본 설정 문서를 참조하세요)
commit_email 아니오 사용자의 커밋 이메일. 개인 커밋 이메일을 사용하려면 _private로 설정하세요. GitLab 15.5에서 도입됨.
email 아니오 이메일
extern_uid 아니오 외부 UID
external 아니오 사용자를 외부로 플래그 설정 - true 또는 false (기본값)
extra_shared_runners_minutes_limit 아니오 관리자만 설정할 수 있습니다. 이 사용자를 위한 추가 계산 분. Premium 및 Ultimate에서만 사용 가능합니다.
group_id_for_saml 아니오 SAML이 구성된 그룹의 ID
id 사용자 ID
linkedin 아니오 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 (기본값)
skype 아니오 Skype ID
theme_id 아니오 사용자를 위한 GitLab 테마 (자세한 내용은 사용자 기본 설정 문서를 참조하세요)
twitter 아니오 X (구 Twitter) 계정
discord 아니오 Discord 계정
username 아니오 사용자 이름
view_diffs_file_by_file 아니오 한 페이지에 하나의 파일 차이만 표시하는 플래그
website_url 아니오 웹사이트 URL

사용자의 비밀번호를 업데이트하면 다음 번 로그인 시 비밀번호를 변경해야 합니다.

404 오류를 반환하며, 409 (Conflict)가 더 적절한 경우에도 해당됩니다.

예를 들어 이미 존재하는 이메일 주소로 이메일 주소를 변경하는 경우입니다.

사용자 삭제

Tier: Free, Premium, Ultimate
Offering: Self-managed, GitLab Dedicated

사용자를 삭제합니다.

사전 요구 조건:

  • 관리자가 되어야 합니다.

반환:

  • 작업이 성공적이면 204 No Content 상태 코드.
  • 자원이 발견되지 않으면 404.
  • 사용자가 소프트 삭제될 수 없으면 409.
DELETE /users/:id

지원하는 속성:

속성 유형 필수 설명
id integer yes 사용자 ID
hard_delete boolean no true인 경우, 일반적으로 [Ghost User로 이동]는 대신 삭제되며, 이 사용자만 소유하는 그룹도 삭제됩니다.

사용자 상태 조회

사용자 상태를 조회합니다.

사전 요구 조건:

  • 인증되어야 합니다.
GET /user/status

예시 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "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 yes 상태를 조회할 사용자의 ID 또는 사용자 이름

예시 요청:

curl "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 no 상태로 사용할 이모지의 이름. 생략할 경우 speech_balloon이 사용됩니다. 이모지 이름은 Gemojione 색인에 지정된 이름 중 하나일 수 있습니다.
message string no 상태로 설정할 메시지. 이모지 코드를 포함할 수 있습니다. 100자를 초과할 수 없습니다.
clear_status_after string no 주어진 시간 간격 후 상태를 자동으로 정리합니다. 허용되는 값: 30_minutes, 3_hours, 8_hours, 1_day, 3_days, 7_days, 30_days

PUTPATCH의 차이:

  • PUT을 사용할 때 전달되지 않은 매개변수는 null로 설정되어 지워집니다.
  • PATCH를 사용할 때 전달되지 않은 매개변수는 무시됩니다. 필드를 지우려면 명시적으로 null을 전달해야 합니다.

예시 요청:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" --data "clear_status_after=1_day" --data "emoji=coffee" \
     --data "message=I crave coffee" "https://gitlab.example.com/api/v4/user/status"

예시 응답:

{
  "emoji":"coffee",
  "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 사용자가 페이지당 하나의 파일 차이만 보도록 설정하는 플래그입니다.
show_whitespace_in_diffs 사용자가 차이에서 공백 변경 사항을 보도록 설정하는 플래그입니다.
pass_user_identities_to_ci_jwt 사용자가 자신의 외부 ID를 CI 정보로 전달하도록 설정하는 플래그입니다. 이 속성은 외부 시스템에서 사용자를 식별하거나 승인하는 데 충분한 정보를 포함하지 않습니다. 이 속성은 GitLab에만 내부적으로 사용되며, 서드파티 서비스에 전달되어서는 안 됩니다. 자세한 정보와 예시는 Token Payload를 참조하세요.

아바타 업로드

  • GitLab 17.0에 도입되었습니다. Introduced.

자신의 아바타를 업로드합니다.

사전 조건:

  • 인증되어 있어야 합니다.
PUT /user/avatar

지원되는 속성:

속성 유형 필수 설명
avatar 문자열 업로드할 파일입니다. 이상적인 이미지 크기는 192 x 192 픽셀입니다. 허용되는 최대 파일 크기는 200 KiB입니다.

파일 시스템에서 아바타를 업로드하려면 --form 인수를 사용하세요. 이렇게 하면 cURL이 Content-Type: multipart/form-data 헤더를 사용하여 데이터를 게시합니다. file= 매개변수는 파일 시스템의 이미지 파일을 가리켜야 하며 @로 시작해야 합니다. 예를 들어:

예시 요청:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
     --form "avatar=@avatar.png" \
     --url "https://gitlab.example.com/api/v4/user/avatar"

예시 응답:

{
  "avatar_url": "http://gdk.test:3000/uploads/-/system/user/avatar/76/avatar.png",
}

반환 값:

  • 성공하면 200을 반환합니다.
  • 파일 크기가 200 KiB를 초과하면 400 Bad Request를 반환합니다.

할당된 문제, 병합 요청 및 검토 수 가져오기

할당된 문제, 병합 요청 및 검토 수를 가져옵니다.

사전 조건:

  • 인증되어 있어야 합니다.

지원되는 속성:

속성 유형 설명
assigned_issues 숫자 현재 사용자에게 할당된 열린 문제의 수입니다.
assigned_merge_requests 숫자 현재 사용자에게 할당된 활성 병합 요청의 수입니다.
merge_requests 숫자 GitLab 13.8에서 사용 중단된 상태이며 assigned_merge_requests에 해당하는 수입니다.
review_requested_merge_requests 숫자 현재 사용자가 검토해 달라고 요청한 병합 요청의 수입니다.
todos 숫자 현재 사용자에 대한 보류 중인 할 일 항목의 수입니다.
GET /user_counts

예시 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/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 정수 사용자의 ID

예시 응답:

{
  "groups_count": 2,
  "projects_count": 3,
  "issues_count": 8,
  "merge_requests_count": 5
}

사용자의 활동 목록

Tier: Free, Premium, Ultimate

Offering: Self-managed, GitLab Dedicated

전제 조건:

  • 비공개 프로필을 가진 사용자 활동을 보려면 관리자가 되어야 합니다.

공개 프로필을 가진 사용자의 마지막 활동 날짜를 가장 오래된 것부터 최신 것 순으로 정렬하여 가져옵니다.

사용자 이벤트 타임스탬프(last_activity_oncurrent_sign_in_at)를 업데이트하는 활동은 다음과 같습니다:

  • Git HTTP/SSH 활동(예: 클론, 푸시)
  • 사용자가 GitLab에 로그인
  • 사용자가 대시보드, 프로젝트, 이슈 및 병합 요청 관련 페이지 방문
  • 사용자가 API 사용
  • 사용자가 GraphQL API 사용

기본적으로 공개 프로필을 가진 사용자의 지난 6개월 동안의 활동을 보여주지만, from 매개변수를 사용하여 수정할 수 있습니다.

GET /user/activities

지원되는 속성:

속성 유형 필수 설명
from 문자열 아니오 YEAR-MM-DD 형식의 날짜 문자열. 예: 2016-03-11. 기본값은 6개월 전.

예시 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "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을 사용하세요.

사용자가 속한 프로젝트 및 그룹 목록

Tier: Free, Premium, Ultimate

Offering: Self-managed, GitLab Dedicated

전제 조건:

  • 관리자가 되어야 합니다.

사용자가 속한 모든 프로젝트와 그룹을 나열합니다.

멤버쉽의 source_id, source_name, source_type, 및 access_level을 반환합니다. 소스는 Namespace(그룹을 나타냄) 또는 Project 유형일 수 있습니다. 응답은 직접 멤버십만 나타냅니다. 하위 그룹과 같은 상속된 멤버십은 포함되지 않습니다. 접근 수준은 정수 값으로 표시됩니다. 접근 수준 값의 의미에 대한 자세한 내용은 access level values를 참조하세요.

GET /users/:id/memberships

지원되는 속성:

속성 유형 필수 설명
id 정수 지정된 사용자의 ID
type 문자열 아니오 유형별로 멤버십 필터링. Project 또는 Namespace 둘 중 하나

예시 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "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.

사용자의 이중 인증 비활성화

Tier: Free, Premium, Ultimate

Offering: Self-managed, GitLab Dedicated

사전 조건:

  • 관리자가 되어야 합니다.

지정된 사용자에 대해 이중 인증(2FA)을 비활성화합니다.

관리자는 API를 사용하여 자신의 사용자 계정이나 다른 관리자의 2FA를 비활성화할 수 없습니다. 대신, 관리자의 2FA를 Rails 콘솔을 사용하여 비활성화할 수 있습니다.

PATCH /users/:id/disable_two_factor

지원되는 속성:

속성 유형 필수 설명
id integer 사용자의 ID

예제 요청:

curl --request PATCH --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/users/1/disable_two_factor"

응답:

  • 성공하면 204 No content를 반환합니다.
  • 지정된 사용자에 대해 이중 인증이 활성화되어 있지 않으면 400 Bad request를 반환합니다.
  • 관리자 인증이 되지 않은 경우 403 Forbidden을 반환합니다.
  • 사용자를 찾을 수 없는 경우 404 User Not Found를 반환합니다.

사용자에 연결된 러너 생성

Tier: Free, Premium, Ultimate

Offering: GitLab.com, Self-managed, GitLab Dedicated

현재 사용자에 연결된 러너를 생성합니다.

사전 조건:

  • 관리자가 되거나 대상 네임스페이스 또는 프로젝트의 소유자 역할을 가지고 있어야 합니다.
  • instance_type의 경우 GitLab 인스턴스의 관리자여야 합니다.
  • 소유자 역할을 가진 group_type 또는 project_type의 경우 관리자는 러너 등록 제한을 활성화해서는 안 됩니다.
  • create_runner 범위를 가진 액세스 토큰이 필요합니다.

응답에서 token을 복사하거나 저장하는 것을 잊지 마세요. 이 값은 다시 조회할 수 없습니다.

POST /user/runners

지원되는 속성:

속성 유형 필수 설명
runner_type string 러너의 범위를 지정합니다; instance_type, group_type 또는 project_type.
group_id integer 아니오 러너가 생성되는 그룹의 ID. runner_typegroup_type일 때 필요합니다.
project_id integer 아니오 러너가 생성되는 프로젝트의 ID. runner_typeproject_type일 때 필요합니다.
description string 아니오 러너에 대한 설명.
paused boolean 아니오 러너가 새로운 작업을 무시해야 하는지 여부입니다.
locked boolean 아니오 현재 프로젝트에 대해 러너가 잠겨야 하는지 여부입니다.
run_untagged boolean 아니오 러너가 태그가 없는 작업을 처리해야 하는지 여부입니다.
tag_list string array 아니오 러너 태그 목록.
access_level string 아니오 러너의 접근 수준; not_protected 또는 ref_protected.
maximum_timeout integer 아니오 러너가 작업을 실행할 수 있는 최대 시간(초)입니다.
maintenance_note string 아니오 러너에 대한 자유 형식의 유지 관리 노트(1024자).

예제 요청:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --data "runner_type=instance_type" \
     "https://gitlab.example.com/api/v4/user/runners"

예제 응답:

{
    "id": 9171,
    "token": "<access-token>",
    "token_expires_at": null
}

사용자 인증 ID 삭제

Tier: Free, Premium, Ultimate
Offering: Self-managed, GitLab Dedicated

사용자 인증 ID를 해당 ID와 연결된 공급자 이름을 사용하여 삭제합니다.

필수 조건:

  • 관리자인 경우에만 가능합니다.
DELETE /users/:id/identities/:provider

지원되는 속성:

속성 유형 필수 설명
id 정수 사용자 ID
provider 문자열 외부 공급자 이름