
## Поля страницы

`GET /v1/pages/fields`

Возвращает карту всех полей страницы с типом, подписью и признаком только для чтения, а у полей, которые могут прийти пустыми, — с признаком `nullable`. Поля без признака только для чтения доступны для записи при создании и обновлении.

## Примеры

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

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

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

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

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

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

Объект `data` содержит карту `fields` (имя поля → `{ type, readonly, label }`, у части полей есть ещё `description`, а у полей, которые могут прийти пустыми, — `nullable`), список `batch` с операциями массового режима, список доступных `include` и набор `aggregatable` полей для группировки в [агрегации](./aggregate.md).

| Поле | Битрикс24 | Тип | RO | Описание |
|------|----------|-----|:--:|---------|
| `id` | `ID` | number | да | Идентификатор страницы |
| `title` | `TITLE` | string | | Название, до 255 символов |
| `code` | `CODE` | string | | Символьный код в URL. Без `/`, авто-генерация из `title` |
| `siteId` | `SITE_ID` | number | | Сайт-владелец. Источник: `GET /v1/sites` |
| `active` | `ACTIVE` | boolean | да | Опубликована ли страница. Битрикс24 не принимает поле ни на создании, ни на обновлении, а новая страница всегда создаётся неактивной. Публикация — `POST /v1/pages/:id/publication`, снятие с публикации — `POST /v1/pages/:id/unpublish` |
| `description` | `DESCRIPTION` | string \| null | | Описание. `null`, если не задано |
| `xmlId` | `XML_ID` | string \| null | | Внешний код. `null`, если не задан |
| `deleted` | `DELETED` | string | да | Признак корзины: `"Y"` / `"N"` |
| `public` | `PUBLIC` | string | | Публичность: `"Y"` / `"N"` |
| `sys` | `SYS` | string | да | Системная страница Битрикс24: `"Y"` / `"N"` |
| `views` | `VIEWS` | number | да | Счётчик просмотров |
| `tplId` | `TPL_ID` | number \| null | | Идентификатор шаблона. `null`, если шаблон не используется |
| `tplCode` | `TPL_CODE` | string \| null | да | Символьный код шаблона. `null`, если шаблон не используется |
| `sitemap` | `SITEMAP` | string | | Включать в карту сайта: `"Y"` / `"N"` |
| `folder` | `FOLDER` | string | | Является ли страница папкой-разделом: `"Y"` / `"N"` |
| `folderId` | `FOLDER_ID` | number \| null | | Идентификатор папки-раздела сайта. `null`, если страница лежит в корне сайта |
| `searchContent` | `SEARCH_CONTENT` | string \| null | да | Индексируемое содержимое страницы для поиска по сайту. `null`, пока страница не проиндексирована |
| `version` | `VERSION` | number | да | Версия внутренней структуры страницы |
| `historyStep` | `HISTORY_STEP` | number | да | Служебное поле истории изменений |
| `modifiedById` | `MODIFIED_BY_ID` | number | да | Последний редактор. Поиск: `GET /v1/users` |
| `domainId` | `DOMAIN_ID` | number | да | Идентификатор домена сайта |
| `initiatorAppCode` | `INITIATOR_APP_CODE` | string \| null | да | Код приложения, создавшего страницу. `null`, если страницу создали в интерфейсе Битрикс24 |
| `rule` | `RULE` | string \| null | да | Служебное поле Битрикс24. Как правило, `null` |
| `createdById` | `CREATED_BY_ID` | number | да | Создатель. Поиск: `GET /v1/users` |
| `dateCreate` | `DATE_CREATE` | datetime | да | Дата создания. Строка в формате локали портала, не ISO 8601 — см. блок про формат ниже |
| `dateModify` | `DATE_MODIFY` | datetime | да | Дата последнего изменения. Формат тот же, что у `dateCreate` |
| `datePublic` | `DATE_PUBLIC` | datetime \| null | да | Дата публикации, формат тот же, что у `dateCreate`. Приходит `null`, если у Битрикс24 нет даты публикации по странице, — это обычный случай даже для опубликованной страницы. Факт публикации определяйте по `active` или `public` |

## Поля, которые могут быть пустыми

У поля, которое Битрикс24 не всегда заполняет, в ответе эндпоинта стоит `"nullable": true`, а в таблице выше тип записан как `… | null`. Таких полей девять: `description`, `xmlId`, `tplId`, `tplCode`, `folderId`, `searchContent`, `initiatorAppCode`, `rule`, `datePublic`. Значение приходит как `null` — не как пустая строка и не как `0`, — поэтому проверяйте его перед разбором. У остальных полей значение есть всегда.

## Формат дат

**Даты — строки в формате локали портала, НЕ ISO 8601.** `dateCreate`, `dateModify` и `datePublic` Битрикс24 отдаёт строкой, и **конкретный шаблон зависит от региональных настроек портала**: на RU-локали это `ДД.ММ.ГГГГ ЧЧ:ММ:СС` (`30.12.2021 12:30:52`), на EN-локали — `MM/DD/YYYY hh:mm:ss am/pm` (`12/30/2021 12:30:52 pm`). Вайбкод отдаёт значение как есть, без приведения к ISO, **одинаково в списке и в карточке** — расхождения между `GET /v1/pages` и `GET /v1/pages/:id` нет. `new Date(value)` вернёт `Invalid Date` либо тихо перепутает день и месяц: не разбирайте дату по фиксированному шаблону и не доверяйте `new Date()`. Тот же формат нужен и в фильтре — см. [Поиск страниц](/docs/entities/pages/search).

## Доступные include

Эндпоинт возвращает список доступных include: `site` — сайт-владелец страницы. Подробнее: [Связанные данные](/docs/includes).

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

Каждое поле, помимо `type` и `readonly`, содержит `label` (короткое название) и `description` (пояснение) на русском языке. Заголовками запроса язык не переключается. У поля, которое может прийти пустым, дополнительно стоит `nullable`. В примере ниже `description` показан только у `active` — у остальных полей он опущен для краткости.

```json
{
  "success": true,
  "data": {
    "fields": {
      "id": { "type": "number", "readonly": true, "label": "ID страницы" },
      "title": { "type": "string", "readonly": false, "label": "Название" },
      "siteId": { "type": "number", "readonly": false, "label": "ID сайта" },
      "active": {
        "type": "boolean",
        "readonly": true,
        "label": "Активна",
        "description": "Опубликована ли страница. Только для чтения: Битрикс24 не принимает поле ни на создании, ни на обновлении, а новая страница всегда создаётся неактивной. Публикация через POST /v1/pages/:id/publication и снятие с публикации через POST /v1/pages/:id/unpublish."
      },
      "xmlId": { "type": "string", "readonly": false, "nullable": true, "label": "Внешний идентификатор" },
      "datePublic": { "type": "datetime", "readonly": true, "nullable": true, "label": "Дата публикации" }
    },
    "relations": {
      "site": { "type": "one", "entity": "site", "includable": true }
    },
    "aggregatable": ["siteId", "active", "deleted", "public", "folderId", "tplId", "createdById", "modifiedById"],
    "batch": ["create", "update", "delete"],
    "include": ["site"]
  }
}
```

Показаны 6 из 27 полей. Полный список — в таблице выше.

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

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

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

## Ошибки

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

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

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

- [Создать страницу](/docs/entities/pages/create)
- [Обновить страницу](/docs/entities/pages/update)
- [Агрегация страниц](/docs/entities/pages/aggregate)
- [Страницы](/docs/entities/pages)
- [Entity API](/docs/entity-api)
