gitlab-org--gitlab-foss/doc/api/users.md

588 lines
12 KiB
Markdown
Raw Normal View History

2014-05-27 08:12:15 -04:00
# Users
2012-07-05 09:57:45 -04:00
## List users
Get a list of users.
2014-04-24 18:48:22 -04:00
2013-04-16 02:26:01 -04:00
This function takes pagination parameters `page` and `per_page` to restrict the list of users.
2012-07-05 09:57:45 -04:00
### For normal users
```
GET /users
```
```json
[
{
"id": 1,
"username": "john_smith",
"name": "John Smith",
"state": "active",
"avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
},
{
"id": 2,
"username": "jack_smith",
"name": "Jack Smith",
"state": "blocked",
"avatar_url": "http://gravatar.com/../e32131cd8.jpeg",
}
]
```
### For admins
2012-07-05 09:57:45 -04:00
```
GET /users
```
```json
[
{
"id": 1,
"username": "john_smith",
2012-07-05 09:57:45 -04:00
"email": "john@example.com",
"name": "John Smith",
"state": "active",
2012-07-05 09:57:45 -04:00
"created_at": "2012-05-23T08:00:58Z",
"bio": null,
"skype": "",
"linkedin": "",
"twitter": "",
2014-01-18 14:07:00 -05:00
"website_url": "",
"extern_uid": "john.smith",
"provider": "provider_name",
2013-08-30 15:04:26 -04:00
"theme_id": 1,
"color_scheme_id": 2,
"is_admin": false,
"avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
2015-02-09 07:52:42 -05:00
"can_create_group": true,
"current_sign_in_at": "2014-03-19T13:12:15Z",
"two_factor_enabled": true
2012-07-05 09:57:45 -04:00
},
{
"id": 2,
"username": "jack_smith",
2012-07-05 09:57:45 -04:00
"email": "jack@example.com",
"name": "Jack Smith",
"state": "blocked",
2012-07-05 09:57:45 -04:00
"created_at": "2012-05-23T08:01:01Z",
"bio": null,
2016-04-05 19:57:21 -04:00
"location": null,
2012-07-05 09:57:45 -04:00
"skype": "",
"linkedin": "",
"twitter": "",
2014-01-18 14:07:00 -05:00
"website_url": "",
"extern_uid": "jack.smith",
"provider": "provider_name",
2013-08-30 15:04:26 -04:00
"theme_id": 1,
"color_scheme_id": 3,
"is_admin": false,
"avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
2013-10-01 07:52:57 -04:00
"can_create_group": true,
"can_create_project": true,
2015-02-09 07:52:42 -05:00
"projects_limit": 100,
"current_sign_in_at": "2014-03-19T17:54:13Z",
"two_factor_enabled": false
2012-07-05 09:57:45 -04:00
}
]
```
2014-06-25 03:06:39 -04:00
You can search for users by email or username with: `/users?search=John`
2014-04-01 04:41:57 -04:00
In addition, you can lookup users by username:
```
GET /users?username=:username
```
For example:
```
GET /users?username=jack_smith
```
2012-07-05 09:57:45 -04:00
## Single user
Get a single user.
### For user
```
GET /users/:id
```
Parameters:
- `id` (required) - The ID of a user
```json
{
"id": 1,
"username": "john_smith",
"name": "John Smith",
"state": "active",
"avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
"created_at": "2012-05-23T08:00:58Z",
"is_admin": false,
"bio": null,
2016-04-05 19:57:21 -04:00
"location": null,
"skype": "",
"linkedin": "",
"twitter": "",
"website_url": ""
}
```
### For admin
2012-07-05 09:57:45 -04:00
```
GET /users/:id
```
Parameters:
2014-04-24 18:48:22 -04:00
- `id` (required) - The ID of a user
2012-07-05 09:57:45 -04:00
```json
{
"id": 1,
"username": "john_smith",
2012-07-05 09:57:45 -04:00
"email": "john@example.com",
"name": "John Smith",
"state": "active",
2012-07-05 09:57:45 -04:00
"created_at": "2012-05-23T08:00:58Z",
"confirmed_at": "2012-05-23T08:00:58Z",
"last_sign_in_at": "2015-03-23T08:00:58Z",
2012-07-05 09:57:45 -04:00
"bio": null,
2016-04-05 19:57:21 -04:00
"location": null,
2012-07-05 09:57:45 -04:00
"skype": "",
"linkedin": "",
"twitter": "",
2014-01-18 14:07:00 -05:00
"website_url": "",
"extern_uid": "john.smith",
"provider": "provider_name",
2013-08-30 15:04:26 -04:00
"theme_id": 1,
"color_scheme_id": 2,
"is_admin": false,
2013-10-01 07:52:57 -04:00
"can_create_group": true,
"can_create_project": true,
"projects_limit": 100
2012-07-05 09:57:45 -04:00
}
```
## User creation
Creates a new user. Note only administrators can create new users.
```
POST /users
```
Parameters:
2014-04-24 18:48:22 -04:00
- `email` (required) - Email
- `password` (required) - Password
- `username` (required) - Username
- `name` (required) - Name
- `skype` (optional) - Skype ID
- `linkedin` (optional) - LinkedIn
2014-04-24 18:48:22 -04:00
- `twitter` (optional) - Twitter account
- `website_url` (optional) - Website URL
2014-04-24 18:48:22 -04:00
- `projects_limit` (optional) - Number of projects user can create
- `extern_uid` (optional) - External UID
- `provider` (optional) - External provider name
- `bio` (optional) - User's biography
2016-04-05 19:57:21 -04:00
- `location` (optional) - User's location
2014-04-24 18:48:22 -04:00
- `admin` (optional) - User is admin - true or false (default)
- `can_create_group` (optional) - User can create groups - true or false
2014-06-18 13:49:39 -04:00
- `confirm` (optional) - Require confirmation - true (default) or false
2016-03-14 19:11:20 -04:00
- `external` (optional) - Flags the user as external - true or false(default)
## User modification
Modifies an existing user. Only administrators can change attributes of a user.
```
PUT /users/:id
```
Parameters:
- `email` - Email
- `username` - Username
- `name` - Name
- `password` - Password
- `skype` - Skype ID
- `linkedin` - LinkedIn
- `twitter` - Twitter account
- `website_url` - Website URL
- `projects_limit` - Limit projects each user can create
- `extern_uid` - External UID
- `provider` - External provider name
- `bio` - User's biography
2016-04-05 19:57:21 -04:00
- `location` (optional) - User's location
- `admin` (optional) - User is admin - true or false (default)
- `can_create_group` (optional) - User can create groups - true or false
- `external` (optional) - Flags the user as external - true or false(default)
Note, at the moment this method does only return a 404 error,
even in cases where a 409 (Conflict) would be more appropriate,
e.g. when renaming the email address to some existing one.
## User deletion
Deletes a user. Available only for administrators.
This is an idempotent function, calling this function for a non-existent user id
2014-08-15 10:03:01 -04:00
still returns a status code `200 OK`.
The JSON response differs if the user was actually deleted or not.
In the former the user is returned and in the latter not.
```
DELETE /users/:id
```
Parameters:
2014-04-24 18:48:22 -04:00
- `id` (required) - The ID of the user
2012-07-05 09:57:45 -04:00
## Current user
Gets currently authenticated user.
2012-07-05 09:57:45 -04:00
```
GET /user
```
```json
{
"id": 1,
"username": "john_smith",
2012-07-05 09:57:45 -04:00
"email": "john@example.com",
"name": "John Smith",
2013-03-18 17:06:24 -04:00
"private_token": "dd34asd13as",
"state": "active",
2012-07-05 09:57:45 -04:00
"created_at": "2012-05-23T08:00:58Z",
"bio": null,
2016-04-05 19:57:21 -04:00
"location": null,
2012-07-05 09:57:45 -04:00
"skype": "",
"linkedin": "",
"twitter": "",
2014-01-18 14:07:00 -05:00
"website_url": "",
2013-08-30 15:04:26 -04:00
"theme_id": 1,
"color_scheme_id": 2,
2013-03-18 17:06:24 -04:00
"is_admin": false,
2014-04-05 02:36:47 -04:00
"can_create_group": true,
"can_create_project": true,
"projects_limit": 100
2012-07-05 09:57:45 -04:00
}
```
2012-09-21 07:49:28 -04:00
## List SSH keys
Get a list of currently authenticated user's SSH keys.
```
GET /user/keys
```
```json
[
{
"id": 1,
2014-04-05 02:36:47 -04:00
"title": "Public key",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
"created_at": "2014-08-01T14:47:39.080Z"
2012-09-21 07:49:28 -04:00
},
{
"id": 3,
2014-04-05 02:36:47 -04:00
"title": "Another Public key",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
"created_at": "2014-08-01T14:47:39.080Z"
2012-09-21 07:49:28 -04:00
}
]
```
Parameters:
2014-04-24 18:48:22 -04:00
- **none**
## List SSH keys for user
Get a list of a specified user's SSH keys. Available only for admin
```
GET /users/:uid/keys
```
Parameters:
2014-04-24 18:48:22 -04:00
- `uid` (required) - id of specified user
2012-09-21 07:49:28 -04:00
## Single SSH key
Get a single key.
```
GET /user/keys/:id
```
Parameters:
2014-04-24 18:48:22 -04:00
- `id` (required) - The ID of an SSH key
2012-09-21 07:49:28 -04:00
```json
{
"id": 1,
2014-04-05 02:36:47 -04:00
"title": "Public key",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
"created_at": "2014-08-01T14:47:39.080Z"
2012-09-21 07:49:28 -04:00
}
```
2012-09-21 07:49:28 -04:00
## Add SSH key
Creates a new key owned by the currently authenticated user.
2012-09-21 07:49:28 -04:00
```
POST /user/keys
```
Parameters:
2014-04-24 18:48:22 -04:00
- `title` (required) - new SSH Key's title
- `key` (required) - new SSH key
2012-09-21 07:49:28 -04:00
```json
{
"created_at": "2015-01-21T17:44:33.512Z",
"key": "ssh-dss AAAAB3NzaC1kc3MAAACBAMLrhYgI3atfrSD6KDas1b/3n6R/HP+bLaHHX6oh+L1vg31mdUqK0Ac/NjZoQunavoyzqdPYhFz9zzOezCrZKjuJDS3NRK9rspvjgM0xYR4d47oNZbdZbwkI4cTv/gcMlquRy0OvpfIvJtjtaJWMwTLtM5VhRusRuUlpH99UUVeXAAAAFQCVyX+92hBEjInEKL0v13c/egDCTQAAAIEAvFdWGq0ccOPbw4f/F8LpZqvWDydAcpXHV3thwb7WkFfppvm4SZte0zds1FJ+Hr8Xzzc5zMHe6J4Nlay/rP4ewmIW7iFKNBEYb/yWa+ceLrs+TfR672TaAgO6o7iSRofEq5YLdwgrwkMmIawa21FrZ2D9SPao/IwvENzk/xcHu7YAAACAQFXQH6HQnxOrw4dqf0NqeKy1tfIPxYYUZhPJfo9O0AmBW2S36pD2l14kS89fvz6Y1g8gN/FwFnRncMzlLY/hX70FSc/3hKBSbH6C6j8hwlgFKfizav21eS358JJz93leOakJZnGb8XlWvz1UJbwCsnR2VEY8Dz90uIk1l/UqHkA= loic@call",
"title": "ABC",
"id": 4
}
```
Will return created key with status `201 Created` on success. If an
error occurs a `400 Bad Request` is returned with a message explaining the error:
```json
{
"message": {
"fingerprint": [
"has already been taken"
],
"key": [
"has already been taken"
]
}
}
```
## Add SSH key for user
Create new key owned by specified user. Available only for admin
```
POST /users/:id/keys
```
Parameters:
- `id` (required) - id of specified user
2014-04-24 18:48:22 -04:00
- `title` (required) - new SSH Key's title
- `key` (required) - new SSH key
2014-04-24 18:48:22 -04:00
Will return created key with status `201 Created` on success, or `404 Not found` on fail.
2014-04-24 18:48:22 -04:00
## Delete SSH key for current user
2012-09-21 07:49:28 -04:00
Deletes key owned by currently authenticated user.
This is an idempotent function and calling it on a key that is already deleted
2014-08-15 10:03:01 -04:00
or not available results in `200 OK`.
2012-09-21 07:49:28 -04:00
```
DELETE /user/keys/:id
```
Parameters:
2014-04-24 18:48:22 -04:00
- `id` (required) - SSH key ID
2012-09-21 07:49:28 -04:00
2014-04-24 18:48:22 -04:00
## Delete SSH key for given user
Deletes key owned by a specified user. Available only for admin.
```
DELETE /users/:uid/keys/:id
```
Parameters:
2014-04-24 18:48:22 -04:00
- `uid` (required) - id of specified user
- `id` (required) - SSH key ID
2014-08-15 10:03:01 -04:00
Will return `200 OK` on success, or `404 Not found` if either user or key cannot be found.
## List emails
Get a list of currently authenticated user's emails.
```
GET /user/emails
```
```json
[
{
"id": 1,
"email": "email@example.com"
},
{
"id": 3,
"email": "email2@example.com"
}
]
```
Parameters:
- **none**
## List emails for user
Get a list of a specified user's emails. Available only for admin
```
GET /users/:uid/emails
```
Parameters:
- `uid` (required) - id of specified user
2015-07-30 05:41:59 -04:00
## Single email
2015-07-30 05:41:59 -04:00
Get a single email.
```
GET /user/emails/:id
```
Parameters:
2015-07-30 05:41:59 -04:00
- `id` (required) - email ID
```json
{
"id": 1,
"email": "email@example.com"
}
```
## Add email
Creates a new email owned by the currently authenticated user.
```
POST /user/emails
```
Parameters:
- `email` (required) - email address
```json
{
"id": 4,
"email": "email@example.com"
}
```
2015-07-30 05:41:59 -04:00
Will return created email with status `201 Created` on success. If an
error occurs a `400 Bad Request` is returned with a message explaining the error:
```json
{
"message": {
"email": [
"has already been taken"
]
}
}
```
## Add email for user
Create new email owned by specified user. Available only for admin
```
POST /users/:id/emails
```
Parameters:
- `id` (required) - id of specified user
- `email` (required) - email address
2015-07-30 05:41:59 -04:00
Will return created email with status `201 Created` on success, or `404 Not found` on fail.
## Delete email for current user
Deletes email owned by currently authenticated user.
This is an idempotent function and calling it on a email that is already deleted
or not available results in `200 OK`.
```
DELETE /user/emails/:id
```
Parameters:
- `id` (required) - email ID
## Delete email for given user
Deletes email owned by a specified user. Available only for admin.
```
DELETE /users/:uid/emails/:id
```
Parameters:
- `uid` (required) - id of specified user
- `id` (required) - email ID
2015-07-30 05:41:59 -04:00
Will return `200 OK` on success, or `404 Not found` if either user or email cannot be found.
## Block user
Blocks the specified user. Available only for admin.
```
PUT /users/:uid/block
```
Parameters:
- `uid` (required) - id of specified user
2016-03-14 19:11:20 -04:00
Will return `200 OK` on success, `404 User Not Found` is user cannot be found or
`403 Forbidden` when trying to block an already blocked user by LDAP synchronization.
## Unblock user
Unblocks the specified user. Available only for admin.
```
PUT /users/:uid/unblock
```
Parameters:
- `uid` (required) - id of specified user
Will return `200 OK` on success, `404 User Not Found` is user cannot be found or
`403 Forbidden` when trying to unblock a user blocked by LDAP synchronization.