## Поля папки

`GET /v1/folders/fields`

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

## Примеры

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

```bash
curl "https://vibecode.bitrix24.tech/v1/folders/fields" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth-приложение

```bash
curl "https://vibecode.bitrix24.tech/v1/folders/fields" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/folders/fields', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data } = await res.json()
console.log('Полей:', Object.keys(data.fields).length)
```

### JavaScript — OAuth-приложение

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/folders/fields', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { success, data } = await res.json()
```

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

Подписи полей `label` и `description` приходят на русском языке. Заголовками запроса язык не переключается.

| Поле | Битрикс24 | Тип | RO | Описание |
|------|----------|-----|:--:|---------|
| `id` | `ID` | number | да | Идентификатор папки |
| `name` | `NAME` | string | | Имя папки. Обязательно при создании |
| `parentId` | `PARENT_ID` | number | | ID родительской папки. Доступно только при создании, изменить нельзя. Список: `GET /v1/folders`, корневая папка: `GET /v1/storages` |
| `storageId` | `STORAGE_ID` | number | да | ID хранилища. Список: `GET /v1/storages` |
| `code` | `CODE` | string | да | Символьный код. При создании и переименовании не сохраняется |
| `type` | `TYPE` | string | да | Тип объекта: `"folder"` или `"file"` |
| `realObjectId` | `REAL_OBJECT_ID` | number | да | Внутренний ID объекта |
| `detailUrl` | `DETAIL_URL` | string | да | Ссылка на папку в интерфейсе Битрикс24 |
| `deletedType` | `DELETED_TYPE` | number | да | Статус удаления: `0` — не удалена, `3` — в корзине, `4` — удалена вместе с родительской папкой |
| `createdBy` | `CREATED_BY` | number | да | ID пользователя-создателя. Поиск: `GET /v1/users` |
| `updatedBy` | `UPDATED_BY` | number | да | ID автора последнего изменения. Поиск: `GET /v1/users` |
| `deletedBy` | `DELETED_BY` | number | да | ID пользователя, удалившего папку. Поиск: `GET /v1/users` |
| `createdAt` | `CREATE_TIME` | datetime | да | Дата и время создания (ISO 8601 UTC) |
| `updatedAt` | `UPDATE_TIME` | datetime | да | Дата и время последнего изменения |
| `deletedAt` | `DELETE_TIME` | datetime | да | Дата и время удаления. `null` — папка не удалена |

Поле `name` доступно при создании и переименовании, `parentId` — только при создании. Через `PATCH /v1/folders/:id` обновляется только поле `name`.

## Пример ответа

```json
{
  "success": true,
  "data": {
    "fields": {
      "id": { "type": "number", "readonly": true, "label": "ID", "description": "Уникальный идентификатор папки." },
      "name": { "type": "string", "readonly": false, "label": "Название", "description": "Имя папки; обязательно при создании и единственное поле, доступное при переименовании." },
      "parentId": { "type": "number", "readonly": false, "createOnly": true, "label": "Родительская папка", "description": "ID родительской папки; задаётся только при создании и не может быть изменён впоследствии." },
      "storageId": { "type": "number", "readonly": true, "label": "Хранилище", "description": "ID хранилища Диска, которому принадлежит папка." },
      "code": { "type": "string", "readonly": true, "label": "Символьный код", "description": "Символьный код папки; не сохраняется при создании или переименовании." },
      "type": { "type": "string", "readonly": true, "label": "Тип объекта", "description": "Тип объекта Диска — папка или файл." },
      "realObjectId": { "type": "number", "readonly": true, "label": "Внутренний ID", "description": "Внутренний идентификатор объекта в системе хранения Диска." },
      "detailUrl": { "type": "string", "readonly": true, "label": "Ссылка на папку", "description": "URL-адрес папки в веб-интерфейсе Битрикс24." },
      "deletedType": { "type": "number", "readonly": true, "label": "Статус удаления", "description": "Статус удаления: 0 — не удалена, 3 — в корзине, 4 — удалена вместе с родительской папкой." },
      "createdBy": { "type": "number", "readonly": true, "label": "Создатель", "description": "ID пользователя, создавшего папку." },
      "updatedBy": { "type": "number", "readonly": true, "label": "Автор изменения", "description": "ID пользователя, внёсшего последнее изменение." },
      "deletedBy": { "type": "number", "readonly": true, "label": "Кто удалил", "description": "ID пользователя, удалившего папку; null, если папка не удалена." },
      "createdAt": { "type": "datetime", "readonly": true, "label": "Дата создания", "description": "Дата и время создания папки." },
      "updatedAt": { "type": "datetime", "readonly": true, "label": "Дата изменения", "description": "Дата и время последнего изменения папки." },
      "deletedAt": { "type": "datetime", "readonly": true, "label": "Дата удаления", "description": "Дата и время удаления папки; null, если папка не удалена." }
    },
    "relations": {
      "storage": { "type": "one", "entity": "storages", "includable": true }
    }
  }
}
```

## Пример ответа при ошибке

403 — нет скоупа `disk`:

```json
{
  "success": false,
  "error": {
    "code": "SCOPE_DENIED",
    "message": "This endpoint requires 'disk' scope"
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `disk` |
| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов портала |
| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |

Полный список общих ошибок API — [Ошибки](/docs/errors).

## Смотрите также

- [Список содержимого папки](/docs/entities/folders/list)
- [Создать папку](/docs/entities/folders/create)
- [Папки](/docs/entities/folders)
- [Файлы](/docs/entities/files)
- [Синтаксис фильтрации](/docs/filtering)
