
## Поля сайта

`GET /v1/sites/fields`

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

## Примеры

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

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

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

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

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

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

Объект `data` содержит карту `fields`, список `aggregatable` с полями, по которым доступна группировка в [агрегации](./aggregate.md), и список `batch` с операциями, доступными в массовом режиме.

Каждое поле карты `fields` описано ключами `type`, `readonly`, подписью `label` и описанием `description` — подпись и описание приходят у всех 22 полей. У поля `type` приходит дополнительно перечень допустимых значений `enum` — каждое значение с английской подписью `label` и русской `labelRu`. Ключ `nullable: true` стоит у восьми полей, у которых значение может отсутствовать: `description`, `xmlId`, `landingIdIndex`, `landingId404`, `landingId503`, `tplCode`, `smnSiteId`, `lang`. Как выглядит отсутствующее значение у каждого из них — в таблице ниже.

| Поле | Битрикс24 | Тип | RO | Описание |
|------|----------|-----|:--:|---------|
| `id` | `ID` | number | да | Идентификатор сайта |
| `title` | `TITLE` | string | | Название, до 255 символов |
| `code` | `CODE` | string | | Символьный код в URL |
| `type` | `TYPE` | string | | Тип сайта: `PAGE`, `STORE`, `KNOWLEDGE` — создаваемые через API. В ответах встречаются также `VIBE` и `SMN` |
| `active` | `ACTIVE` | boolean | да | Активен ли сайт. Только для чтения: Битрикс24 не сохраняет значение ни при создании, ни при обновлении, поэтому передача поля отклоняется с `400 READONLY_FIELD`. Активность включается публикацией сайта в интерфейсе |
| `domainId` | `DOMAIN_ID` | number | | Идентификатор домена |
| `description` | `DESCRIPTION` | string \| null | | Описание, до 255 символов. `null`, если не задано |
| `xmlId` | `XML_ID` | string \| null | | Внешний идентификатор. `null`, если не задан |
| `landingIdIndex` | `LANDING_ID_INDEX` | number \| null | | Главная страница. Задаётся в обновлении после создания страниц |
| `landingId404` | `LANDING_ID_404` | number \| null | | Страница ошибки 404. Если не назначена — `0` или `null` |
| `landingId503` | `LANDING_ID_503` | number \| null | | Страница ошибки 503. Если не назначена — `0` или `null` |
| `deleted` | `DELETED` | string | да | Признак корзины: `"Y"` / `"N"` |
| `createdById` | `CREATED_BY_ID` | number | да | Создатель. Поиск: `GET /v1/users` |
| `modifiedById` | `MODIFIED_BY_ID` | number | да | Последний редактор. Поиск: `GET /v1/users` |
| `dateCreate` | `DATE_CREATE` | datetime | да | Дата создания. Формат локали Битрикс24, не ISO 8601 |
| `dateModify` | `DATE_MODIFY` | datetime | да | Дата последнего изменения. Формат локали Битрикс24 |
| `tplId` | `TPL_ID` | number | да | Идентификатор шаблона сайта |
| `tplCode` | `TPL_CODE` | string \| null | да | Символьный код шаблона. `null`, если у шаблона нет кода |
| `smnSiteId` | `SMN_SITE_ID` | string \| null | да | Связанный сайт «Управление сайтом» типа `SMN`. `null` у обычных сайтов |
| `lang` | `LANG` | string \| null | да | Код языка, например `ru`. `null`, если не задан |
| `special` | `SPECIAL` | string | да | Служебный признак Битрикс24: `"Y"` / `"N"` |
| `version` | `VERSION` | number | да | Версия внутренней структуры сайта |

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

```json
{
  "success": true,
  "data": {
    "fields": {
      "id": {
        "type": "number",
        "readonly": true,
        "label": "Идентификатор сайта",
        "description": "Уникальный числовой идентификатор сайта."
      },
      "title": {
        "type": "string",
        "readonly": false,
        "label": "Название",
        "description": "Название сайта, до 255 символов. Обязательно при создании."
      },
      "type": {
        "type": "string",
        "readonly": false,
        "label": "Тип сайта",
        "description": "Тип сайта. PAGE/STORE/KNOWLEDGE создаются через API (для KNOWLEDGE при создании и изменении нужен scope: \"KNOWLEDGE\"). VIBE (сайт из конструктора) и SMN (связка с модулем «Управление сайтом») встречаются только в ответах и доступны только для чтения.",
        "enum": [
          { "value": "PAGE", "label": "Landing", "labelRu": "Лендинг" },
          { "value": "STORE", "label": "Online store", "labelRu": "Интернет-магазин" },
          { "value": "KNOWLEDGE", "label": "Knowledge base 2.0", "labelRu": "База знаний 2.0" },
          { "value": "VIBE", "label": "Constructor site (read-only)", "labelRu": "Сайт из конструктора (только для чтения)" },
          { "value": "SMN", "label": "Site Management link (read-only)", "labelRu": "Связка с «Управлением сайтом» (только для чтения)" }
        ]
      },
      "active": {
        "type": "boolean",
        "readonly": true,
        "label": "Активен",
        "description": "Активен ли сайт. Только для чтения: Битрикс24 не сохраняет значение ни при создании, ни при обновлении — landing.site.add и landing.site.update поле не объявляют, новый сайт всегда создаётся неактивным, а живая проверка обоих вызовов вернула успех при выключенном признаке. Активность включается публикацией сайта в интерфейсе Битрикс24."
      },
      "description": {
        "type": "string",
        "readonly": false,
        "nullable": true,
        "label": "Описание",
        "description": "Описание сайта, до 255 символов. Если не задано, в ответе приходит null."
      }
    },
    "aggregatable": ["type", "active", "deleted", "lang", "tplId", "domainId", "createdById", "modifiedById"],
    "batch": ["create", "update", "delete"]
  }
}
```

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

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

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/sites/create)
- [Обновить сайт](/docs/entities/sites/update)
- [Сайты](/docs/entities/sites)
- [Entity API](/docs/entity-api)
