-
由 James Reed 创作于由 James Reed 创作于
stage: Manage
group: Authentication and Authorization
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
Users API (FREE)
List users
Get a list of users.
This function takes pagination parameters page
and per_page
to restrict the list of users.
For normal users
GET /users
[
{
"id": 1,
"username": "john_smith",
"name": "John Smith",
"state": "active",
"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",
"avatar_url": "http://gravatar.com/../e32131cd8.jpeg",
"web_url": "http://localhost:3000/jack_smith"
}
]
You can also search for users by name, username or public email by using ?search=
. For example. /users?search=John
.
In addition, you can lookup users by username:
GET /users?username=:username
For example:
GET /users?username=jack_smith
NOTE: Username search is case insensitive.
In addition, you can filter users based on the states blocked
and active
.
It does not support active=false
or blocked=false
. The list of billable users
is the total number of users minus the blocked users.
GET /users?active=true
GET /users?blocked=true
In addition, you can search for external users only with external=true
.
It does not support external=false
.
GET /users?external=true
GitLab supports bot users such as the alert bot
or the support bot.
You can exclude the following types of internal users
from the users' list with the exclude_internal=true
parameter
(introduced in GitLab 13.4):
- Alert bot
- Support bot
However, this action does not exclude bot users for projects or bot users for groups.
GET /users?exclude_internal=true
In addition, to exclude external users from the users' list, you can use the parameter exclude_external=true
.
GET /users?exclude_external=true
To exclude bot users for projects
and bot users for groups, you can use the
parameter without_project_bots=true
.
GET /users?without_project_bots=true
For administrators
The
namespace_id
field in the response was introduced in GitLab 14.10.
GET /users
Attribute | Type | Required | Description |
---|---|---|---|
order_by |
string | no | Return users ordered by id , name , username , created_at , or updated_at fields. Default is id
|
sort |
string | no | Return users sorted in asc or desc order. Default is desc
|
two_factor |
string | no | Filter users by Two-factor authentication. Filter values are enabled or disabled . By default it returns all users |
without_projects |
boolean | no | Filter users without projects. Default is false , which means that all users are returned, with and without projects. |
admins |
boolean | no | Return only administrators. Default is false
|
saml_provider_id (PREMIUM)
|
number | no | Return only users created by the specified SAML provider ID. If not included, it returns all users. |
[
{
"id": 1,
"username": "john_smith",
"email": "john@example.com",
"name": "John Smith",
"state": "active",
"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": "",
"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
},
{
"id": 2,
"username": "jack_smith",
"email": "jack@example.com",
"name": "Jack Smith",
"state": "blocked",
"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": "",
"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
}
]
Users on GitLab Premium or higher also see the shared_runners_minutes_limit
, extra_shared_runners_minutes_limit
, is_auditor
, and using_license_seat
parameters.
[
{
"id": 1,
...
"shared_runners_minutes_limit": 133,
"extra_shared_runners_minutes_limit": 133,
"is_auditor": false,
"using_license_seat": true
...
}
]
Users on GitLab Premium or higher also see
the group_saml
provider option and provisioned_by_group_id
parameter:
[
{
"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
...
}
]
You can lookup users by external UID and provider:
GET /users?extern_uid=:extern_uid&provider=:provider
For example:
GET /users?extern_uid=1234567&provider=github
You can search users by creation date time range with:
GET /users?created_before=2001-01-02T00:00:00.060Z&created_after=1999-01-02T00:00:00.060
You can search for users without projects with: /users?without_projects=true
You can filter by custom attributes with:
GET /users?custom_attributes[key]=value&custom_attributes[other_key]=other_value
You can include the users' custom attributes in the response with:
GET /users?with_custom_attributes=true
Single user
Get a single user.
For user
GET /users/:id
Parameters:
Attribute | Type | Required | Description |
---|---|---|---|
id |
integer | yes | ID of a user |
{
"id": 1,
"username": "john_smith",
"name": "John Smith",
"state": "active",
"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": "",
"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
}
For administrator
The
namespace_id
field in the response was introduced in GitLab 14.10.
GET /users/:id
Parameters:
Attribute | Type | Required | Description |
---|---|---|---|
id |
integer | yes | ID of a user |
Example Responses:
{
"id": 1,
"username": "john_smith",
"email": "john@example.com",
"name": "John Smith",
"state": "active",
"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": "",
"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
}
NOTE:
The plan
and trial
parameters are only available on GitLab Enterprise Edition.
Users on GitLab Premium or higher also see
the shared_runners_minutes_limit
, is_auditor
, and extra_shared_runners_minutes_limit
parameters.
{
"id": 1,
"username": "john_smith",
"is_auditor": false,
"shared_runners_minutes_limit": 133,
"extra_shared_runners_minutes_limit": 133,
...
}
Users on GitLab.com Premium or higher also
see the group_saml
option and provisioned_by_group_id
parameter:
{
"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
...
}
You can include the user's custom attributes in the response with:
GET /users/:id?with_custom_attributes=true
User creation
The
namespace_id
field in the response was introduced in GitLab 14.10.
Creates a new user. Note only administrators can create new
users. Either password
, reset_password
, or force_random_password
must be specified. If reset_password
and force_random_password
are
both false
, then password
is required.
force_random_password
and reset_password
take priority
over password
. In addition, reset_password
and
force_random_password
can be used together.
NOTE:
From GitLab 12.1, private_profile
defaults to false
.
NOTE:
From GitLab 13.2, bio
defaults to ""
instead of null
.
POST /users
Parameters:
Attribute | Required | Description |
---|---|---|
admin |
No | User is an administrator - true or false (default) |
avatar |
No | Image file for user's avatar |
bio |
No | User's biography |
can_create_group |
No | User can create groups - true or false |
color_scheme_id |
No | User's color scheme for the file viewer (see the user preference docs for more information) |
email |
Yes | |
extern_uid |
No | External UID |
external |
No | Flags the user as external - true or false (default) |
extra_shared_runners_minutes_limit (PREMIUM)
|
No | Can be set by administrators only. Additional CI/CD minutes for this user. |
force_random_password |
No | Set user password to a random value - true or false (default) |
group_id_for_saml |
No | ID of group where SAML has been configured |
linkedin |
No | |
location |
No | User's location |
name |
Yes | Name |
note |
No | Administrator notes for this user |
organization |
No | Organization name |
password |
No | Password |
private_profile |
No | User's profile is private - true, false (default), or null (is converted to false) |
projects_limit |
No | Number of projects user can create |
provider |
No | External provider name |
reset_password |
No | Send user password reset link - true or false(default) |
shared_runners_minutes_limit (PREMIUM)
|
No | Can be set by administrators only. Maximum number of monthly CI/CD minutes for this user. Can be nil (default; inherit system default), 0 (unlimited), or > 0 . |
skip_confirmation |
No | Skip confirmation - true or false (default) |
skype |
No | Skype ID |
theme_id |
No | GitLab theme for the user (see the user preference docs for more information) |
twitter |
No | Twitter account |
username |
Yes | Username |
view_diffs_file_by_file |
No | Flag indicating the user sees only one file diff per page |
website_url |
No | Website URL |
User modification
The
namespace_id
field in the response was introduced in GitLab 14.10.
Modifies an existing user. Only administrators can change attributes of a user.