
## Поля файла

`GET /v1/files/fields`

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

## Примеры

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

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

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

```bash
curl "https://vibecode.bitrix24.tech/v1/files/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/files/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/files/fields', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

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

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

| Поле | Битрикс24 | Тип | RO | Описание |
|------|----------|-----|:--:|---------|
| `id` | `ID` | number | да | Идентификатор объекта |
| `name` | `NAME` | string | | Имя файла или папки |
| `size` | `SIZE` | number | да | Размер файла в байтах. Приходит у записей-файлов |
| `folderId` | `PARENT_ID` | number | | ID родительской папки. Список папок: `GET /v1/folders` |
| `storageId` | `STORAGE_ID` | number | да | ID хранилища. Список: `GET /v1/storages` |
| `type` | `TYPE` | string | да | Тип объекта: `"file"` или `"folder"` |
| `code` | `CODE` | string | | Символьный код объекта |
| `fileId` | `FILE_ID` | number | да | Внутренний ID файла. Приходит у записей-файлов |
| `downloadUrl` | `DOWNLOAD_URL` | string | да | Временная ссылка для скачивания. Приходит у записей-файлов. Для программного скачивания — `GET /v1/files/:id/download` |
| `detailUrl` | `DETAIL_URL` | string | да | Ссылка на объект в интерфейсе |
| `contentProvider` | `CONTENT_PROVIDER` | string | да | Провайдер контента. Возвращается только у файлов из внешних провайдеров контента — у файлов на Диске Битрикс24 не возвращается |
| `globalContentVersion` | `GLOBAL_CONTENT_VERSION` | number | да | Счётчик версий файла. Приходит у записей-файлов |
| `deletedType` | `DELETED_TYPE` | number | да | Статус удаления: `0` — не удалён, `3` — в корзине, `4` — удалён вместе с папкой |
| `realObjectId` | `REAL_OBJECT_ID` | number | да | Внутренний ID объекта |
| `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`, `folderId` и `code` доступны при создании и обновлении объекта. Через `PATCH /v1/files/:id` обновляется только поле `name`.

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

```json
{
  "success": true,
  "data": {
    "fields": {
      "id": { "type": "number", "readonly": true, "label": "ID", "description": "Идентификатор файла или папки на Диске." },
      "name": { "type": "string", "readonly": false, "label": "Имя", "description": "Имя файла или папки." },
      "size": { "type": "number", "readonly": true, "label": "Размер", "description": "Размер файла в байтах; указывается только для записей-файлов." },
      "folderId": { "type": "number", "readonly": false, "label": "ID папки", "description": "Идентификатор родительской папки, в которой находится объект." },
      "storageId": { "type": "number", "readonly": true, "label": "ID хранилища", "description": "Идентификатор хранилища Диска, к которому относится объект." },
      "type": { "type": "string", "readonly": true, "label": "Тип объекта", "description": "Тип объекта — файл или папка." },
      "code": { "type": "string", "readonly": false, "label": "Символьный код", "description": "Символьный код объекта, заданный при создании или обновлении." },
      "fileId": { "type": "number", "readonly": true, "label": "ID файла", "description": "Внутренний идентификатор файла; указывается только для записей-файлов." },
      "downloadUrl": { "type": "string", "readonly": true, "label": "Ссылка на скачивание", "description": "Временная ссылка для скачивания файла." },
      "detailUrl": { "type": "string", "readonly": true, "label": "Ссылка на объект", "description": "Ссылка на просмотр объекта в интерфейсе Битрикс24." },
      "contentProvider": { "type": "string", "readonly": true, "label": "Провайдер контента", "description": "Внешний провайдер контента; для файлов на Диске Битрикс24 не возвращается." },
      "globalContentVersion": { "type": "number", "readonly": true, "label": "Версия контента", "description": "Счётчик версий содержимого файла." },
      "deletedType": { "type": "number", "readonly": true, "label": "Статус удаления", "description": "Удалён ли объект и каким образом — не удалён, в корзине или удалён вместе с папкой." },
      "createdBy": { "type": "number", "readonly": true, "label": "Автор создания", "description": "Идентификатор пользователя, создавшего объект." },
      "updatedBy": { "type": "number", "readonly": true, "label": "Автор изменения", "description": "Идентификатор пользователя, последним изменившего объект." },
      "createdAt": { "type": "datetime", "readonly": true, "label": "Дата создания", "description": "Дата и время создания объекта." },
      "updatedAt": { "type": "datetime", "readonly": true, "label": "Дата изменения", "description": "Дата и время последнего изменения объекта." },
      "deletedAt": { "type": "datetime", "readonly": true, "label": "Дата удаления", "description": "Дата и время удаления объекта; null, если объект не удалён." },
      "realObjectId": { "type": "number", "readonly": true, "label": "Внутренний ID", "description": "Внутренний идентификатор объекта на Диске." },
      "deletedBy": { "type": "number", "readonly": true, "label": "Автор удаления", "description": "Идентификатор пользователя, удалившего объект; null, если объект не удалён." }
    }
  }
}
```

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

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/files/list)
- [Получить файл](/docs/entities/files/get)
- [Обновить файл](/docs/entities/files/update)
- [Файлы](/docs/entities/files)
- [Синтаксис фильтрации](/docs/filtering)
