+++
title = "HTTP API организации"
description = "HTTP API Harvest организация"
keywords = ["harvest", "http", "documentation", "api", "organization"]
aliases = ["/docs/harvest/latest/http_api/organization/"]
+++


# Организационный API

Организационный HTTP API разделен на два ресурса: `/api/org` (текущая организация)
и "/api/org" (административные организации). Одно большое различие между ними заключается в том, что
API администратора всех организаций работает только с базовой аутентификацией, см. [API администратора организаций] (#admin-organizations-api) для получения дополнительной информации.

## Текущий организационный API

### Получить текущую организацию

`GET /api/org/`

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

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

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

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

{
  "id":1,
  "name":"Main Org."
}
```

### Получить всех пользователей в текущей организации

`GET /api/org/users`

Возвращает всех пользователей организации в текущей организации.
Доступен для пользователей с ролью администратора организации.

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

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

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

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

[
  {
    "orgId": 1,
    "userId": 1,
    "email": "admin@localhost",
    "avatarUrl": "/avatar/46d229b033af06a191ff2267bca9ae56",
    "login": "admin",
    "role": "Admin",
    "lastSeenAt": "2019-08-09T11:02:49+02:00",
    "lastSeenAtAge": "< 1m"
  }
]
```
### Получить всех пользователей в текущей организации (поиск)

`GET /api/org/users/поиск`

Возвращает всех пользователей организации в текущей организации, но с менее подробной информацией.
Доступен для пользователей с ролью администратора организации, администратора в любой папке или администратора любой команды.
В основном используется пользовательским интерфейсом Harvest для предоставления списка пользователей при добавлении членов команды и
при редактировании разрешений папки / панели инструментов.

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

```http
GET /api/org/users/lookup HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

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

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

[
  {
    "userId": 1,
    "login": "admin",
    "avatarUrl": "/avatar/46d229b033af06a191ff2267bca9ae56"
  }
]
```

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

`PATCH /api/org/users/:userId`

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

```http
PATCH /api/org/users/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "role": "Viewer",
}
```

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

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

{"message":"Organization user updated"}
```

### Удалить пользователя в текущей организации

`DELETE /api/org/users/:userId`

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

```http
DELETE /api/org/users/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

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

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

{"message":"User removed from organization"}
```

### Обновить текущую организацию

`PUT /api/org`

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

```http
PUT /api/org HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "name":"Main Org."
}
```

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

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

{"message":"Organization updated"}
```

### Добавить нового пользователя в текущую организацию

`POST /api/org/users`

Добавляет глобального пользователя в текущую организацию.

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

```http
POST /api/org/users HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "role": "Admin",
  "loginOrEmail": "admin"
}
```

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

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

{"message":"User added to organization","userId":1}
```

## API административных организаций

HTTP API организаций-администраторов в настоящее время не работает с токеном API. Токены API в настоящее
время связаны только с организацией и ролью организации. Им не может быть предоставлено разрешение
администратора сервера, такое разрешение может быть предоставлено только пользователям. Таким образом, чтобы использовать эти вызовы API, вам придется
использовать базовую аутентификацию, а пользователь Harvest должен иметь разрешение администратора Harvest (пользователь-администратор по умолчанию
называется "admin" и имеет разрешение на использование этого API).

### ### GetOrganizationbyId

`GET /api/orgs/:orgId`

Работает только с базовой аутентификацией (имя пользователя и пароль), см. [введение] (#admin-organizations-api).

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

```http
GET /api/orgs/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
```

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

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

{
  "id":1,
  "name":"Main Org.",
  "address":{
    "address1":"",
    "address2":"",
    "city":"",
    "zipCode":"",
    "state":"",
    "country":""
  }
}
```
### Get Organization by Name

`GET /api/orgs/name/:orgName`

Работает только с базовой аутентификацией (имя пользователя и пароль), см. [введение] (#admin-organizations-api).

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

```http
GET /api/orgs/name/Main%20Org%2E HTTP/1.1
Accept: application/json
Content-Type: application/json
```

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

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

{
  "id":1,
  "name":"Main Org.",
  "address":{
    "address1":"",
    "address2":"",
    "city":"",
    "zipCode":"",
    "state":"",
    "country":""
  }
}
```

### Создать организацию

`POST /api/orgs`

Работает только с базовой аутентификацией (имя пользователя и пароль), см. [введение] (#admin-organizations-api).

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

```http
POST /api/orgs HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "name":"New Org."
}
```
Примечание: api будет работать следующими двумя способами
1) Необходимо установить GF_USERS_ALLOW_ORG_CREATE=true
2) Установите значение конфигурации users.allow_org_create равным true в ini-файле

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

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

{
  "orgId":"1",
  "message":"Organization created"
}
```

### Поиск по всем организациям

`GET /api/orgs?perpage=10&page=1`

Only works with Basic Authentication (username and password), see [introduction](#admin-organizations-api).

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

```http
GET /api/orgs HTTP/1.1
Accept: application/json
Content-Type: application/json
```
Примечание: api будет работать только тогда, когда вы передадите имя администратора и пароль
на HTTP-адрес запроса, например http://admin:admin@localhost:3000/api/orgs

Значение по умолчанию для параметра "на страницу" равно "1000", а для параметра "страница" равно "0".

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

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

[
  {
    "id":1,
    "name":"Main Org."
  }
]
```

### Обновление организации

`PUT /api/orgs/:Идентификатор организации`

Организация обновления, поля *Адрес1*, *Адрес2*, *Город* еще не реализованы.
Работает только с базовой аутентификацией (имя пользователя и пароль), см. [введение] (#admin-organizations-api).

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

```http
PUT /api/orgs/1 HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "name":"Main Org 2."
}
```

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

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

{"message":"Organization updated"}
```

### Удалить организацию

`DELETE /api/orgs/:OrgID`

Работает только с базовой аутентификацией (имя пользователя и пароль), см. [введение] (#admin-organizations-api).

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

```http
DELETE /api/orgs/1 HTTP/1.1
Accept: application/json
```

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

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

{"message":"Organization deleted"}
```

### Привлечение пользователей в организацию

`GET /api/orgs/:идентификатор организации/пользователи`

Работает только с базовой аутентификацией (имя пользователя и пароль), см. [введение] (#admin-organizations-api).

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

```http
GET /api/orgs/1/users HTTP/1.1
Accept: application/json
Content-Type: application/json
```
Примечание: api будет работать только тогда, когда вы передадите имя администратора и пароль
на HTTP-адрес запроса, например http://admin:admin@localhost:3000/api/orgs/1/users


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

```http
HTTP/1.1 200
Content-Type: application/json
[
  {
    "orgId":1,
    "userId":1,
    "email":"admin@mygraf.com",
    "login":"admin",
    "role":"Admin"
  }
]
```

### Добавить пользователя в организацию

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

Работает только с базовой аутентификацией (имя пользователя и пароль), см. [введение] (#admin-organizations-api).

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

```http
POST /api/orgs/1/users HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "loginOrEmail":"user",
  "role":"Viewer"
}
```

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

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

{"message":"User added to organization", "userId": 1}
```

### Обновление пользователей в организации

`PATCH /api/orgs/:OrgID/users/:Идентификатор пользователя`

Работает только с базовой аутентификацией (имя пользователя и пароль), см. [введение] (#admin-organizations-api).

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

```http
PATCH /api/orgs/1/users/2 HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "role":"Admin"
}
```

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

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

{"message":"Organization user updated"}
```

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

`DELETE /api/orgs/:OrgID/users/:Идентификатор пользователя`

Работает только с базовой аутентификацией (имя пользователя и пароль), см. [введение] (#admin-organizations-api).

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

```http
DELETE /api/orgs/1/users/2 HTTP/1.1
Accept: application/json
Content-Type: application/json
```

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

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

{"message":"User removed from organization"}
```
