+++
title = "Пользовательский HTTP API "
description = "Harvest Пользовательский HTTP API"
keywords = ["harvest", "http", "documentation", "api", "user"]
aliases = ["/docs/harvest/latest/http_api/user/"]
+++

# Пользовательские HTTP-ресурсы / действия

## Поиск пользователей

`GET /api/users?на страницу=10&страница=1`

**Пример Запроса**:

```http
GET /api/users HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
```

Значение по умолчанию для параметра `perpage` равно `1000`, а для параметра `page` равно `1`. Требуется базовая аутентификация и чтобы аутентифицированный пользователь был администратором Harvest.

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

[
  {
    "id": 1,
    "name": "Admin",
    "login": "admin",
    "email": "admin@mygraf.com",
    "isAdmin": true,
    "isDisabled": false,
    "lastSeenAt": "2020-04-10T20:29:27+03:00",
    "lastSeenAtAge': "2m",
    "authLabels": ["OAuth"]
  },
  {
    "id": 2,
    "name": "User",
    "login": "user",
    "email": "user@mygraf.com",
    "isAdmin": false,
    "isDisabled": false,
    "lastSeenAt": "2020-01-24T12:38:47+02:00",
    "lastSeenAtAge": "2M",
    "authLabels": []
  }
]
```
## Поиск пользователей с помощью подкачки

`GET /api/users/search?perpage=10&страница=1&запрос=mygraf`

**Пример Запроса**:

```http
GET /api/users/search?perpage=10&page=1&query=mygraf HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
```

Значение по умолчанию для параметра `perpage` равно `1000`, а для параметра `page` равно `1`. Поле "totalCount" в ответе можно использовать для разбивки списка пользователей на страницы, например. если "totalCount" равно 100 пользователям, а параметр "perpage" установлен на 10, то имеется 10 страниц пользователей. Параметр `query` является необязательным, и он вернет результаты, в которых значение запроса содержится в одном из полей `name`, `login` или `email`. Значения запроса с пробелами должны быть закодированы в URL, например `query=Jane%20Doe`.

Требуется базовая аутентификация и чтобы аутентифицированный пользователь был администратором Harvest.

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json
{
  "totalCount": 2,
  "users": [
    {
      "id": 1,
      "name": "Admin",
      "login": "admin",
      "email": "admin@mygraf.com",
      "isAdmin": true,
      "isDisabled": false,
      "lastSeenAt": "2020-04-10T20:29:27+03:00",
      "lastSeenAtAge': "2m",
      "authLabels": ["OAuth"]
    },
    {
      "id": 2,
      "name": "User",
      "login": "user",
      "email": "user@mygraf.com",
      "isAdmin": false,
      "isDisabled": false,
      "lastSeenAt": "2020-01-24T12:38:47+02:00",
      "lastSeenAtAge": "2M",
      "authLabels": []
    }
  ],
  "page": 1,
  "perPage": 10
}
```

## Получить одного пользователя по идентификатору

`GET /api/users/:id`

**Пример Запроса**:

```http
GET /api/users/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
```
Требуется базовая аутентификация и чтобы аутентифицированный пользователь был администратором Harvest.

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

{
  "id": "1",
  "email": "user@mygraf.com",
  "name": "admin",
  "login": "admin",
  "theme": "light",
  "orgId": 1,
  "isHarvestAdmin": true,
  "isDisabled": true,
  "isExternal": false,
  "authLabels": [],
  "updatedAt": "2019-09-09T11:31:26+01:00",
  "createdAt": "2019-09-09T11:31:26+01:00",
  "avatarUrl": ""
}
```

## Получить одного пользователя по имени пользователя (логину) или электронной почте

`GET /api/users/lookup?loginOrEmail=user@mygraf.com `

** Пример запроса с использованием электронной почты в качестве опции**:

```http
GET /api/users/lookup?loginOrEmail=user@mygraf.com HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**Пример запроса с использованием имени пользователя в качестве опции**:

```http
GET /api/users/lookup?loginOrEmail=admin HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
```

Требуется базовая аутентификация и чтобы аутентифицированный пользователь был администратором Harvest.

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

{
  "id": 1,
  "email": "user@mygraf.com",
  "name": "admin",
  "login": "admin",
  "theme": "light",
  "orgId": 1,
  "isHarvestAdmin": true,
  "isDisabled": false,
  "isExternal": false,
  "authLabels": null,
  "updatedAt": "2019-09-25T14:44:37+01:00",
  "createdAt": "2019-09-25T14:44:37+01:00",
  "avatarUrl":""
}
```

## Обновление пользователя

`PUT /api/users/:идентификатор`

**Пример Запроса**:

```http
PUT /api/users/2 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=

{
  "email":"user@mygraf.com",
  "name":"User2",
  "login":"user",
  "theme":"light"
}
```

Требуется базовая аутентификация и чтобы аутентифицированный пользователь был администратором Harvest.

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

{"message":"User updated"}
```

## Получить организации для пользователя

`GET /api/users/:id/orgs`

**Пример Запроса**:

```http
GET /api/users/1/orgs HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
```

Требуется базовая аутентификация и чтобы аутентифицированный пользователь был администратором Harvest.

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

[
  {
    "orgId":1,
    "name":"Main Org.",
    "role":"Admin"
  }
]
```

## Получить команды для пользователя

`GET /api/users/:id/teams`

**Пример Запроса**:

```http
GET /api/users/1/teams HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
```

Требуется базовая аутентификация и чтобы аутентифицированный пользователь был администратором Harvest.

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

[
  {
    "id":1,
    "orgId":1,
    "name":"team1",
    "email":"",
    "avatarUrl":"/avatar/3fcfe295eae3bcb67a49349377428a66",
    "memberCount":1
  }
]
```


## Пользователь

## Фактический Пользователь

`GET /api/user`

**Пример Запроса**:

```http
GET /api/user HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
```

Требуется базовая аутентификация.

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

{
  "id":1,
  "email":"admin@mygraf.com",
  "name":"Admin",
  "login":"admin",
  "theme":"light",
  "orgId":1,
  "isHarvestAdmin":true,
  "isDisabled":false
  "isExternal": false,
  "authLabels": [],
  "updatedAt": "2019-09-09T11:31:26+01:00",
  "createdAt": "2019-09-09T11:31:26+01:00",
  "avatarUrl": ""
}
```

## Сменить пароль

`PUT /api/пользователя/пароль`

Изменяет пароль для пользователя. Требуется базовая аутентификация.

**Пример Запроса**:

```http
PUT /api/user/password HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=

{
  "oldPassword": "old_password",
  "newPassword": "new_password"
}
```

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

{"message":"User password changed"}
```

**Измените пароль с помощью скрипта**

Если вам нужно изменить пароль с помощью скрипта, вот пример изменения пароля администратора с помощью curl с базовой авторизацией:

```bash
curl -X PUT -H "Content-Type: application/json" -d '{
  "oldPassword": "oldpass",
  "newPassword": "newpass",
  "confirmNew": "newpass"
}' http://admin:oldpass@<your_harvest_host>:3000/api/user/password
```

## Переключение пользовательского контекста для указанного пользователя

`POST /api/users/:идентификатор пользователя/using/:идентификатор организации`

Переключите пользовательский контекст на данную организацию. Требуется базовая аутентификация и чтобы аутентифицированный пользователь был администратором Harvest.

**Пример Запроса**:

```http
POST /api/users/7/using/2 HTTP/1.1
Authorization: Basic YWRtaW46YWRtaW4=
```

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

{"message":"Active organization changed"}
```

## Переключить пользовательский контекст для вошедшего пользователя

`POST /api/user/using/:идентификатор организации"

Переключите пользовательский контекст на данную организацию.

**Пример Запроса**:

```http
POST /api/user/using/2 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

{"message":"Active organization changed"}
```

## Организации фактического пользователя

`GET /api/user/org`

Возвращает список всех организаций текущего пользователя. Требуется базовая аутентификация.

**Пример Запроса**:

```http
GET /api/user/orgs HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
```

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

[
  {
    "orgId":1,
    "name":"Main Org.",
    "role":"Admin"
  }
]
```

## Команды, членом которых является фактический Пользователь

`GET /api/user/teams`

Возвращает список всех команд, членом которых является текущий пользователь.

**Пример Запроса**:

```http
GET /api/user/teams HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

[
  {
    "id": 1,
    "orgId": 1,
    "name": "MyTestTeam",
    "email": "",
    "avatarUrl": "\/avatar\/3f49c15916554246daa714b9bd0ee398",
    "memberCount": 1
  }
]
```

## Звездочка на приборной панели

`POST /api/user/stars/dashboard/:dashboardId`

Отображает данную панель мониторинга для фактического пользователя.

**Пример Запроса**:

```http
POST /api/user/stars/dashboard/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

{"message":"Dashboard starred!"}
```

## Отменить запуск панели мониторинга

`DELETE /api/user/stars/dashboard/:dashboardId`

Удаляет отображение данной панели мониторинга для фактического пользователя.

**Пример Запроса**:

```http
DELETE /api/user/stars/dashboard/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

{"message":"Dashboard unstarred"}
```

## Токены авторизации фактического пользователя

`GET /api/user/auth-tokens`

Возвращает список всех токенов авторизации (устройств), с которых фактический пользователь в данный момент вошел в систему.

**Пример Запроса**:

```http
GET /api/user/auth-tokens HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

[
  {
    "id": 361,
    "isActive": true,
    "clientIp": "127.0.0.1",
    "browser": "Chrome",
    "browserVersion": "72.0",
    "os": "Linux",
    "osVersion": "",
    "device": "Other",
    "createdAt": "2019-03-05T21:22:54+01:00",
    "seenAt": "2019-03-06T19:41:06+01:00"
  },
  {
    "id": 364,
    "isActive": false,
    "clientIp": "127.0.0.1",
    "browser": "Mobile Safari",
    "browserVersion": "11.0",
    "os": "iOS",
    "osVersion": "11.0",
    "device": "iPhone",
    "createdAt": "2019-03-06T19:41:19+01:00",
    "seenAt": "2019-03-06T19:41:21+01:00"
  }
]
```

## Отозвать токен авторизации фактического пользователя

`POST /api/user/revoke-auth-токен`

Отменяет указанный токен авторизации (устройство) для фактического пользователя. Пользователь выданного токена авторизации (устройства) больше не будет входить в
систему, и ему потребуется повторно пройти аутентификацию при следующем действии.

**Пример Запроса**:

```http
POST /api/user/revoke-auth-token HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "authTokenId": 364
}
```
**Пример Ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

{
  "message": "User auth token revoked"
}
```
