## Выдать сотруднику доступ к папке

`POST /v1/folders/:id/shares`

**Доступ действует СРАЗУ, до ответа получателя. Сменить уровень или отозвать доступ через API нельзя; используйте интерфейс Битрикс24.**

Получатель получает уведомление «Принять/Отклонить». Принятие лишь подключает папку к его диску; на порталах с автоподключением она подключается сразу. Выдать больше своего уровня нельзя. userId — номер пользователя портала, а не Вайбкод.

## Параметры

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| id | integer | да | Целый безопасный id папки больше нуля в пути |
| userId | integer | да | Целый безопасный id получателя больше нуля |
| access | string | да | read / add / edit / full |

Скоуп ключа: disk. READONLY-ключ не может выдавать доступ. При скоупе user, user_basic или user_brief существование и активность проверяются через user.get до выдачи. Без этих скоупов проверка пропускается, meta.recipientVerified=false. Сам Б24 может записать права несуществующему пользователю: при ключе только с disk самостоятельно проверяйте получателя.

## curl — личный ключ

```bash
curl -X POST "https://vibecode.bitrix24.tech/v1/folders/42/shares" -H "X-Api-Key: YOUR_API_KEY" -H "Content-Type: application/json" -d '{"userId":8,"access":"read"}'
```

## curl — ключ приложения

```bash
curl -X POST "https://vibecode.bitrix24.tech/v1/folders/42/shares" -H "X-Api-Key: YOUR_APP_KEY" -H "Content-Type: application/json" -d '{"userId":8,"access":"read"}'
```


## JavaScript — личный ключ

```javascript
const response = await fetch("https://vibecode.bitrix24.tech/v1/folders/42/shares", {
  method: "POST",
  headers: { "X-Api-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({ userId: 8, access: "read" }),
});
const data = await response.json();
```


## JavaScript — ключ приложения

```javascript
const response = await fetch("https://vibecode.bitrix24.tech/v1/folders/42/shares", {
  method: "POST",
  headers: { "X-Api-Key": "YOUR_APP_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({ userId: 8, access: "read" }),
});
const data = await response.json();
```

## Ответ

```json
{"success":true,"data":{"folderId":42,"userId":8,"access":"read"},"meta":{"recipientVerified":true}}
```

HTTP 201 подтверждает создание.

## Поля ответа

| Поле | Тип | Описание |
|---|---|---|
| success | boolean | true |
| data.folderId | integer | ID папки |
| data.userId | integer | ID получателя |
| data.access | string | read / add / edit / full |
| meta.recipientVerified | boolean | Получатель проверен с доступным скоупом user.get |

## Ограничения и ошибки

409 DISK_SHARE_NOT_CREATED: доступ не выдан, например владельцу хранилища. 409 DISK_ALREADY_SHARED: приглашение уже есть, в том числе при попытке сменить уровень. 400 INVALID_PARAMS: неверный получатель/уровень или неактивный пользователь; 404 ENTITY_NOT_FOUND: папки или проверенного получателя нет. 403: нет прав, неподдерживаемый тип хранилища или недоступна фича disk_folder_sharing. Бизнес-отказы Б24 — 422. Выдача доступна только для хранилищ user/group/common. Записи автоматически не повторяются; при неизвестном исходе 502 сначала перечитайте состояние. В batch недоступно.

Используйте названия access, а не id из [access-levels](/docs/entities/folders/access-levels).

Метод Битрикс24: `disk.folder.shareToUser`, `taskName=disk_access_<access>`.

400 — неверный получатель или уровень доступа:

```json
{"success":false,"error":{"code":"INVALID_PARAMS","message":"Invalid parameters."}}
```
