
## Поля шаблона

`GET /v1/doc-templates/fields`

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

## Примеры

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

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

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

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

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

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

| Поле | Битрикс24 | Тип | RO | Описание |
|------|----------|-----|:--:|---------|
| `id` | `id` | number | да | ID шаблона |
| `name` | `name` | string | | ★ Название шаблона |
| `numeratorId` | `numeratorId` | number | | ★ ID нумератора, который присваивает документам порядковые номера |
| `region` | `region` | string | | ★ Код региона шаблона, например `ru` или `by` |
| `code` | `code` | string \| null | | Системный код шаблона для привязки в коде приложения. `null`, если код не задан |
| `moduleId` | `moduleId` | string | | Идентификатор модуля-владельца шаблона |
| `active` | `active` | string | | Доступность шаблона: `Y` — включён, `N` — выключен |
| `bodyType` | `bodyType` | string | | Формат тела документа, например `DOCX` |
| `withStamps` | `withStamps` | string | | Печать факсимиле и штампов: `Y` — добавляются, `N` — нет |
| `sort` | `sort` | number | | Порядок шаблона в списке: чем меньше значение, тем выше |
| `users` | `users` | array | | Идентификаторы сотрудников, которым доступен шаблон. Список: `GET /v1/users` |
| `fileId` | `fileId` | number | | ID файла на Диске. Загрузка через `POST /v1/files/upload` |
| `file` | `file` | string | | Содержимое .docx в base64, принимается при создании |
| `createdBy` | `createdBy` | number | да | Идентификатор создавшего сотрудника |
| `updatedBy` | `updatedBy` | number \| null | да | Идентификатор изменившего сотрудника. `null`, если шаблон не изменялся |
| `isDeleted` | `isDeleted` | boolean | да | Шаблон помечен как удалённый |
| `createTime` | `createTime` | datetime | да | Дата создания |
| `updateTime` | `updateTime` | datetime | да | Дата изменения |
| `download` | `download` | string | да | Ссылка для скачивания исходного файла шаблона |
| `downloadMachine` | `downloadMachine` | string | да | Ссылка для скачивания файла по машинному доступу без авторизации в браузере |
| `providers` | `providers` | object | да | Перечень доступных поставщиков хранилищ с их настройками |
| `isDefault` | `isDefault` | string | да | Признак того, что шаблон используется по умолчанию |
| `productsTableVariant` | `productsTableVariant` | string | да | Вариант оформления таблицы товаров в генерируемом документе |

★ — поля `name`, `numeratorId`, `region` обязательны в теле запроса при создании шаблона.

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

```json
{
  "success": true,
  "data": {
    "fields": {
      "id": { "type": "number", "readonly": true, "label": "ID шаблона", "description": "Уникальный идентификатор шаблона документа." },
      "name": { "type": "string", "readonly": false, "required": true, "label": "Название шаблона", "description": "Название шаблона документа, отображаемое пользователю." },
      "numeratorId": { "type": "number", "readonly": false, "required": true, "label": "ID нумератора", "description": "Идентификатор нумератора, присваивающего документам порядковые номера." },
      "region": { "type": "string", "readonly": false, "required": true, "label": "Регион шаблона", "description": "Код региона шаблона, например ru или by." },
      "code": { "type": "string", "readonly": false, "label": "Системный код", "description": "Системный код шаблона для привязки к нему в коде приложения." },
      "moduleId": { "type": "string", "readonly": false, "label": "ID модуля-владельца", "description": "Идентификатор модуля Битрикс24, которому принадлежит шаблон." },
      "active": { "type": "string", "readonly": false, "label": "Активность", "description": "Признак доступности шаблона: включён или выключен." },
      "bodyType": { "type": "string", "readonly": false, "label": "Формат тела", "description": "Формат содержимого генерируемого документа, например DOCX." },
      "withStamps": { "type": "string", "readonly": false, "label": "Печать штампов", "description": "Признак добавления факсимиле и штампов при генерации документа." },
      "sort": { "type": "number", "readonly": false, "label": "Сортировка", "description": "Значение для сортировки шаблона в списке: чем меньше, тем выше." },
      "users": { "type": "array", "readonly": false, "label": "Доступные сотрудники", "description": "Список идентификаторов сотрудников, которым доступен шаблон." },
      "fileId": { "type": "number", "readonly": false, "label": "ID файла на Диске", "description": "Идентификатор файла шаблона, загруженного на Диск." },
      "file": { "type": "string", "readonly": false, "label": "Содержимое файла", "description": "Содержимое файла шаблона в формате .docx, закодированное в base64." },
      "createdBy": { "type": "number", "readonly": true, "label": "Создал сотрудник", "description": "Идентификатор сотрудника, создавшего шаблон." },
      "updatedBy": { "type": "number", "readonly": true, "label": "Изменил сотрудник", "description": "Идентификатор сотрудника, последним изменившего шаблон." },
      "isDeleted": { "type": "boolean", "readonly": true, "label": "Удалён", "description": "Признак того, что шаблон помечен как удалённый." },
      "createTime": { "type": "datetime", "readonly": true, "label": "Дата создания", "description": "Дата и время создания шаблона." },
      "updateTime": { "type": "datetime", "readonly": true, "label": "Дата изменения", "description": "Дата и время последнего изменения шаблона." },
      "download": { "type": "string", "readonly": true, "label": "Ссылка на скачивание", "description": "Ссылка для скачивания исходного файла шаблона." },
      "downloadMachine": { "type": "string", "readonly": true, "label": "Машинная ссылка", "description": "Ссылка для скачивания файла без авторизации в браузере, для программного доступа." },
      "providers": { "type": "object", "readonly": true, "label": "Список поставщиков", "description": "Перечень доступных поставщиков хранилищ файла шаблона с их настройками." },
      "isDefault": { "type": "string", "readonly": true, "label": "Шаблон по умолчанию", "description": "Признак того, что шаблон используется по умолчанию." },
      "productsTableVariant": { "type": "string", "readonly": true, "label": "Вариант таблицы товаров", "description": "Вариант оформления таблицы товаров в генерируемом документе." }
    }
  }
}
```

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

403 — у ключа нет нужного скоупа:

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

## Ошибки

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

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

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

- [Создать шаблон](/docs/entities/doc-templates/create)
- [Список шаблонов](/docs/entities/doc-templates/list)
