InfoGrab DocsInfoGrab Docs

Users API

요약

이 API를 사용하여 GitLab의 사용자 계정과 상호작용할 수 있습니다. 사용자 목록을 제한하려면 페이지네이션 파라미터인 page와 per_page를 사용합니다. 이 엔드포인트는 키셋 페이지네이션을 지원합니다. ?search=를 사용하여 이름, username, 또는 공개 이메일로 사용자를 검색할 수도 있습니다.

이 API를 사용하여 GitLab의 사용자 계정과 상호작용할 수 있습니다. 이 엔드포인트를 통해 내 계정이나 다른 사용자의 계정을 관리할 수 있습니다.

모든 사용자 목록 조회#

모든 사용자 목록을 조회합니다.

사용자 목록을 제한하려면 페이지네이션 파라미터pageper_page를 사용합니다.

일반 사용자로 조회#

히스토리
  • GitLab 16.5에서 키셋 페이지네이션이 도입됨.
  • 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 검색은 대소문자를 구분하지 않습니다.

blockedactive 상태를 기준으로 사용자를 필터링할 수도 있습니다. 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

관리자로 조회#

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
히스토리
  • GitLab 15.6에서 응답의 created_by 필드가 도입됨.
  • GitLab 16.1에서 응답의 scim_identities 필드가 도입됨.

  • GitLab 16.2에서 응답의 auditors 필드가 도입됨.

  • GitLab 16.7에서 응답의 email_reset_offered_at 필드가 도입됨.

  • GitLab 18.3에서 응답의 email_reset_offered_at 필드가 제거됨.

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 아니요 이중 인증(Two-factor authentication)으로 사용자를 필터링합니다. 필터 값은 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,
    "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,
    "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": "",
  "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
}

관리자로 조회#

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
히스토리
  • GitLab 15.6에서 응답의 created_by 필드가 도입됨.
  • GitLab 16.7에서 응답의 email_reset_offered_at 필드가 도입됨.

  • 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": "",
  "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,
  "created_by": 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",
  "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 파라미터도 확인할 수 있습니다.

관리자로 조회#

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
히스토리
  • GitLab 15.6에서 응답의 created_by 필드가 도입됨.
  • GitLab 16.7에서 응답의 email_reset_offered_at 필드가 도입됨.

  • 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,
  "created_by": 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: GitLab Self-Managed, GitLab Dedicated
히스토리
  • GitLab 15.3에서 감사 사용자 생성 기능이 도입됨.

사용자를 생성합니다.

사전 요구 사항:

  • 관리자여야 합니다.

private_profile새 사용자의 프로필을 기본적으로 비공개로 설정 설정의 값으로 기본 설정됩니다. bionull 대신 ""로 기본 설정됩니다.

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입니다. GitLab 15.3에서 도입되었습니다. 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 아니요 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

사용자 수정#

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
히스토리
  • GitLab 15.3에서 감사 사용자 수정 기능이 도입됨.

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

사전 요구 사항:

  • 관리자여야 합니다.

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(기본값)
theme_id 아니요 사용자의 GitLab 테마(자세한 내용은 사용자 환경 설정 문서 참조)
twitter 아니요 X(구 Twitter) 계정
discord 아니요 Discord 계정
github 아니요 GitHub username
username 아니요 사용자의 username
view_diffs_file_by_file 아니요 사용자가 페이지당 하나의 파일 diff만 보도록 표시하는 플래그
website_url 아니요 웹사이트 URL

사용자의 비밀번호를 업데이트하면 다음 로그인 시 비밀번호를 변경하도록 강제됩니다.

더 적합한 경우라도 409(충돌) 대신 404 오류를 반환합니다. 예를 들어 이메일 주소를 기존 주소로 변경하는 경우가 그러합니다.

사용자 삭제#

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

사용자를 삭제합니다.

사전 요구 사항:

  • 관리자여야 합니다.

반환 값:

  • 작업이 성공하면 204 No Content 상태 코드를 반환합니다.

  • 리소스를 찾을 수 없는 경우 404를 반환합니다.

  • 사용자를 소프트 삭제할 수 없는 경우 409를 반환합니다.

DELETE /users/:id

지원되는 속성:

속성 타입 필수 여부 설명
id integer 사용자 ID
hard_delete boolean 아니요 true인 경우, 일반적으로 Ghost 사용자로 이동될 기여 내역이 대신 삭제되며 이 사용자만이 소유한 그룹도 함께 삭제됩니다.

내 사용자 상태 조회#

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

사전 요구 사항:

  • 인증되어 있어야 합니다.
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

PUTPATCH의 차이점:

  • 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 내부용이며 서드파티 서비스에 전달해서는 안 됩니다. 자세한 내용과 예시는 토큰 페이로드를 참조하세요.

내 아바타 업로드#

히스토리

내 아바타를 업로드합니다.

사전 요구 사항:

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

  • 파일은 200 KB 이하여야 합니다. 권장 이미지 크기는 192 x 192 픽셀입니다.

  • 이미지는 다음 파일 형식 중 하나여야 합니다:

.bmp

  • .gif

  • .ico

  • .jpeg

  • .png

  • .tiff

PUT /user/avatar

지원되는 속성:

속성 타입 필수 여부 설명
avatar string 업로드할 파일.

파일 시스템에서 아바타를 업로드하려면 --form 인수를 사용하세요. 이렇게 하면 cURL이 Content-Type: multipart/form-data 헤더를 사용하여 데이터를 POST합니다. 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을 반환합니다.

  • 파일 크기가 200 KiB를 초과하면 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
}

사용자 활동 목록 조회#

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

사전 요구 사항:

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

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

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

  • Git HTTP/SSH 활동(예: 클론, 푸시)

  • 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을 사용하세요.

사용자가 멤버로 있는 프로젝트 및 그룹 목록 조회#

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

사전 요구 사항:

  • 관리자여야 합니다.

사용자가 멤버로 있는 모든 프로젝트와 그룹 목록을 조회합니다.

멤버십의 source_id, source_name, source_type, access_level을 반환합니다. Source는 Namespace(그룹을 나타냄) 또는 Project 유형일 수 있습니다. 응답은 직접 멤버십만 나타냅니다. 예를 들어 하위 그룹에서 상속된 멤버십은 포함되지 않습니다. 액세스 레벨은 정수 값으로 표시됩니다:

  • 0: 액세스 없음

  • 5: 최소 액세스

  • 10: Guest

  • 15: Planner

  • 20: Reporter

  • 30: Developer

  • 40: Maintainer

  • 50: 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를 반환합니다.

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

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
히스토리

사전 요구 사항:

  • 관리자여야 합니다.

지정된 사용자의 이중 인증(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를 반환합니다.

사용자와 연결된 러너 생성#

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

현재 사용자와 연결된 러너를 생성합니다. 감사 목적으로 사용자가 소유자로 등록되지만 러너 가용성은 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분에서 15일 사이여야 합니다. 구성된 경우 인스턴스, 그룹 또는 프로젝트 수준의 제한을 초과할 수 없습니다. 초기 토큰에만 적용됩니다. 순환된 토큰은 설정에 따라 계산된 만료 시간을 사용합니다. (PREMIUM ALL)
token_rotation_deadline datetime 아니요 토큰 순환 요청이 거부되는 마감 시간. token_expires_at가 필요합니다. token_expires_at 이하여야 합니다. 둘 다 같은 값으로 설정하면 토큰 순환이 비활성화됩니다. 성공적인 순환 시 지워집니다. (PREMIUM ALL)

요청 예시:

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 삭제#

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

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

사전 요구 사항:

  • 관리자여야 합니다.
DELETE /users/:id/identities/:provider

지원되는 속성:

속성 타입 필수 여부 설명
id integer 사용자 ID
provider string 외부 공급자 이름

지원 PIN 생성#

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
히스토리

내 사용자 계정에 대한 지원 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 상세 정보 조회#

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
히스토리

내 계정의 지원 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 조회#

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
히스토리

지정된 사용자의 지원 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 취소#

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
히스토리

자연 만료 이전에 지정된 사용자의 지원 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

Users API

GitLab v19.2
Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

이 API를 사용하여 GitLab의 사용자 계정과 상호작용할 수 있습니다. 사용자 목록을 제한하려면 페이지네이션 파라미터인 page와 per_page를 사용합니다. 이 엔드포인트는 키셋 페이지네이션을 지원합니다. ?search=를 사용하여 이름, username, 또는 공개 이메일로 사용자를 검색할 수도 있습니다.

이 API를 사용하여 GitLab의 사용자 계정과 상호작용할 수 있습니다. 이 엔드포인트를 통해 내 계정이나 다른 사용자의 계정을 관리할 수 있습니다.

모든 사용자 목록 조회#

모든 사용자 목록을 조회합니다.

사용자 목록을 제한하려면 페이지네이션 파라미터pageper_page를 사용합니다.

일반 사용자로 조회#

히스토리
  • GitLab 16.5에서 키셋 페이지네이션이 도입됨.
  • 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 검색은 대소문자를 구분하지 않습니다.

blockedactive 상태를 기준으로 사용자를 필터링할 수도 있습니다. 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

관리자로 조회#

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
히스토리
  • GitLab 15.6에서 응답의 created_by 필드가 도입됨.
  • GitLab 16.1에서 응답의 scim_identities 필드가 도입됨.

  • GitLab 16.2에서 응답의 auditors 필드가 도입됨.

  • GitLab 16.7에서 응답의 email_reset_offered_at 필드가 도입됨.

  • GitLab 18.3에서 응답의 email_reset_offered_at 필드가 제거됨.

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 아니요 이중 인증(Two-factor authentication)으로 사용자를 필터링합니다. 필터 값은 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,
    "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,
    "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": "",
  "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
}

관리자로 조회#

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
히스토리
  • GitLab 15.6에서 응답의 created_by 필드가 도입됨.
  • GitLab 16.7에서 응답의 email_reset_offered_at 필드가 도입됨.

  • 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": "",
  "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,
  "created_by": 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",
  "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 파라미터도 확인할 수 있습니다.

관리자로 조회#

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
히스토리
  • GitLab 15.6에서 응답의 created_by 필드가 도입됨.
  • GitLab 16.7에서 응답의 email_reset_offered_at 필드가 도입됨.

  • 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,
  "created_by": 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: GitLab Self-Managed, GitLab Dedicated
히스토리
  • GitLab 15.3에서 감사 사용자 생성 기능이 도입됨.

사용자를 생성합니다.

사전 요구 사항:

  • 관리자여야 합니다.

private_profile새 사용자의 프로필을 기본적으로 비공개로 설정 설정의 값으로 기본 설정됩니다. bionull 대신 ""로 기본 설정됩니다.

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입니다. GitLab 15.3에서 도입되었습니다. 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 아니요 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

사용자 수정#

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
히스토리
  • GitLab 15.3에서 감사 사용자 수정 기능이 도입됨.

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

사전 요구 사항:

  • 관리자여야 합니다.

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(기본값)
theme_id 아니요 사용자의 GitLab 테마(자세한 내용은 사용자 환경 설정 문서 참조)
twitter 아니요 X(구 Twitter) 계정
discord 아니요 Discord 계정
github 아니요 GitHub username
username 아니요 사용자의 username
view_diffs_file_by_file 아니요 사용자가 페이지당 하나의 파일 diff만 보도록 표시하는 플래그
website_url 아니요 웹사이트 URL

사용자의 비밀번호를 업데이트하면 다음 로그인 시 비밀번호를 변경하도록 강제됩니다.

더 적합한 경우라도 409(충돌) 대신 404 오류를 반환합니다. 예를 들어 이메일 주소를 기존 주소로 변경하는 경우가 그러합니다.

사용자 삭제#

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

사용자를 삭제합니다.

사전 요구 사항:

  • 관리자여야 합니다.

반환 값:

  • 작업이 성공하면 204 No Content 상태 코드를 반환합니다.

  • 리소스를 찾을 수 없는 경우 404를 반환합니다.

  • 사용자를 소프트 삭제할 수 없는 경우 409를 반환합니다.

DELETE /users/:id

지원되는 속성:

속성 타입 필수 여부 설명
id integer 사용자 ID
hard_delete boolean 아니요 true인 경우, 일반적으로 Ghost 사용자로 이동될 기여 내역이 대신 삭제되며 이 사용자만이 소유한 그룹도 함께 삭제됩니다.

내 사용자 상태 조회#

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

사전 요구 사항:

  • 인증되어 있어야 합니다.
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

PUTPATCH의 차이점:

  • 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 내부용이며 서드파티 서비스에 전달해서는 안 됩니다. 자세한 내용과 예시는 토큰 페이로드를 참조하세요.

내 아바타 업로드#

히스토리

내 아바타를 업로드합니다.

사전 요구 사항:

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

  • 파일은 200 KB 이하여야 합니다. 권장 이미지 크기는 192 x 192 픽셀입니다.

  • 이미지는 다음 파일 형식 중 하나여야 합니다:

.bmp

  • .gif

  • .ico

  • .jpeg

  • .png

  • .tiff

PUT /user/avatar

지원되는 속성:

속성 타입 필수 여부 설명
avatar string 업로드할 파일.

파일 시스템에서 아바타를 업로드하려면 --form 인수를 사용하세요. 이렇게 하면 cURL이 Content-Type: multipart/form-data 헤더를 사용하여 데이터를 POST합니다. 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을 반환합니다.

  • 파일 크기가 200 KiB를 초과하면 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
}

사용자 활동 목록 조회#

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

사전 요구 사항:

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

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

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

  • Git HTTP/SSH 활동(예: 클론, 푸시)

  • 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을 사용하세요.

사용자가 멤버로 있는 프로젝트 및 그룹 목록 조회#

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

사전 요구 사항:

  • 관리자여야 합니다.

사용자가 멤버로 있는 모든 프로젝트와 그룹 목록을 조회합니다.

멤버십의 source_id, source_name, source_type, access_level을 반환합니다. Source는 Namespace(그룹을 나타냄) 또는 Project 유형일 수 있습니다. 응답은 직접 멤버십만 나타냅니다. 예를 들어 하위 그룹에서 상속된 멤버십은 포함되지 않습니다. 액세스 레벨은 정수 값으로 표시됩니다:

  • 0: 액세스 없음

  • 5: 최소 액세스

  • 10: Guest

  • 15: Planner

  • 20: Reporter

  • 30: Developer

  • 40: Maintainer

  • 50: 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를 반환합니다.

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

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
히스토리

사전 요구 사항:

  • 관리자여야 합니다.

지정된 사용자의 이중 인증(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를 반환합니다.

사용자와 연결된 러너 생성#

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

현재 사용자와 연결된 러너를 생성합니다. 감사 목적으로 사용자가 소유자로 등록되지만 러너 가용성은 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분에서 15일 사이여야 합니다. 구성된 경우 인스턴스, 그룹 또는 프로젝트 수준의 제한을 초과할 수 없습니다. 초기 토큰에만 적용됩니다. 순환된 토큰은 설정에 따라 계산된 만료 시간을 사용합니다. (PREMIUM ALL)
token_rotation_deadline datetime 아니요 토큰 순환 요청이 거부되는 마감 시간. token_expires_at가 필요합니다. token_expires_at 이하여야 합니다. 둘 다 같은 값으로 설정하면 토큰 순환이 비활성화됩니다. 성공적인 순환 시 지워집니다. (PREMIUM ALL)

요청 예시:

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 삭제#

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

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

사전 요구 사항:

  • 관리자여야 합니다.
DELETE /users/:id/identities/:provider

지원되는 속성:

속성 타입 필수 여부 설명
id integer 사용자 ID
provider string 외부 공급자 이름

지원 PIN 생성#

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
히스토리

내 사용자 계정에 대한 지원 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 상세 정보 조회#

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
히스토리

내 계정의 지원 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 조회#

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
히스토리

지정된 사용자의 지원 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 취소#

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
히스토리

자연 만료 이전에 지정된 사용자의 지원 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