# Стадии канбана задач

`GET /v1/tasks/stages/:entityId`

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

Битрикс24 API: `task.stages.get`
Скоуп: `task`

## Параметры

| Параметр | Тип | Обяз. | По умолч. | Описание |
|----------|-----|:-----:|-----------|----------|
| `entityId` (path) | number | да | — | Владелец стадий: идентификатор рабочей группы или `0` — личный план «Мои задачи» текущего пользователя. Источник группы: `GET /v1/workgroups` |

## Примеры

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

```bash
curl "https://vibecode.bitrix24.tech/v1/tasks/stages/7" \
  -H "X-Api-Key: YOUR_API_KEY"
```

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

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

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

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

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

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

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

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

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

| Поле | Тип | Описание |
|------|-----|----------|
| `success` | boolean | Всегда `true` при успехе |
| `data` | array | Массив колонок, отсортированный по `sort` |
| `data[].id` | number | Идентификатор стадии |
| `data[].title` | string | Название колонки |
| `data[].sort` | number | Порядок сортировки на доске |
| `data[].color` | string | Цвет колонки в формате `RRGGBB` |
| `data[].systemType` | string | Тип системной стадии: `NEW`, `WORK`, `REVIEW`, `FINISH`. Для пользовательских колонок — `null` |
| `data[].entityId` | number | Идентификатор владельца — группы или пользователя |
| `data[].entityType` | string | Тип владельца: `G` — группа, `U` — личный план |

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

Стадии канбана группы 7:

```json
{
  "success": true,
  "data": [
    {
      "id": 87,
      "title": "Новые",
      "sort": 100,
      "color": "00C4FB",
      "systemType": "NEW",
      "entityId": 7,
      "entityType": "G"
    },
    {
      "id": 88,
      "title": "Выполняются",
      "sort": 200,
      "color": "47D1E2",
      "systemType": null,
      "entityId": 7,
      "entityType": "G"
    },
    {
      "id": 89,
      "title": "Сделаны",
      "sort": 300,
      "color": "75D900",
      "systemType": null,
      "entityId": 7,
      "entityType": "G"
    }
  ]
}
```

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

400 — `entityId` меньше нуля:

```json
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMS",
    "message": "entityId must be a non-negative integer (0 = personal plan)"
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|----------|
| 400 | `INVALID_PARAMS` | `entityId` меньше нуля или не число |
| 403 | `BITRIX_ACCESS_DENIED` | Нет доступа к задачам этой группы или группы с таким `entityId` не существует |
| 403 | `SCOPE_DENIED` | Ключу не хватает скоупа `task` |
| 401 | `TOKEN_MISSING` | У ключа не настроены токены доступа |
| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |

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

## Известные особенности

**Колонки группы и история задачи не совпадают.** Метод возвращает текущие колонки группового канбана. В истории задачи событие `STAGE` хранит название стадии на момент перехода — оно может отличаться от текущих колонок группы, а стадии спринта в групповой канбан не входят. Для разбора прошлых переходов опирайтесь на значение из истории, а не на этот справочник.

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

- [История изменений задачи](/docs/task-history)
- [Задачи](/docs/entities/tasks)
- [Обзор API](/docs/entity-api)
- [Ошибки](/docs/errors)
